16.5 Установка sendmail
В этом разделе, мы рассмотрим как установить типичное двоичное
распределение sendmail + IDA, и что должно быть выполнено, чтобы сделать
его локализованным и функциональным.
Текущее двоичное распределение sendmail + IDA для Linux может быть
получено из sunsite.unc.edu в /pub/Linux/system/Mail. Даже если Вы имеете более
раннюю версию sendmail, я строго рекомендую, чтобы Вы использовали
sendmail5.67b + IDA1.5.
Если Вы формируете sendmail из исходников, Вы должны следовать
советам в README, включенном в исходное распределение. Текущие
исходники sendmail + IDA доступны из vixen.cso.uiuc.edu. Чтобы формировать
sendmail + IDA на Linux, Вы также нуждаетесь в Linux -специфических файлах
конфигурации из newspak-2.2.tar.gz, который является доступным на sun-
site.unc.edu в каталоге /pub/Linux/system/Mail.
Если Вы предварительно установили smail или другое средство получения
почты, вам возможно нужно удалить (или переименовать) все файлы из smail
для безопасности.
16.5.1 Извлечение двоичного распределения
Сначала, Вы должны разпаковать файл архива в некотором безопасном
расположении:
$ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf -
Если Вы имеете "современный" tar, например из недавнего Slackware, Вы
можете сделать tar -zxvf filename.tgz и получить те же самые результаты.
Распаковка архива создает каталог, именованный sendmail5.65b +IDA1.5+
mailx5.3b. В этом каталоге, Вы находите комплектное оборудование sendmail +
IDA плюс mailx. Весь paths файл ниже этого каталога отражает расположение,
где файлы должны быть установлены, так что безопасно подготовить команду
tar:
# cd sendmail5.65b+IDA1.5+mailx5.3b
# tar cf - . | (cd /; tar xvvpoof -)
16.5.2 Формирование sendmail.cf
Чтобы сформировать файл sendmail.cf, настроенный для вашего пункта, Вы
должны сщздать файл sendmail.m4, и обработать его с m4. В /usr/local/lib/mail/CF,
Вы найдете типовой файл называемый sample.m4. Копируйте его в
yourhostname.m4, и редактируйте, чтобы отразить ситуацию вашего пункта.
В текущем разделе, я буду давать короткий краткий обзор макркоманд,
которые Вы должны изменить. Для полного описания того, что они делают,
пожалуйста, обратитесь к более раннему обсуждению sendmail.m4.
LOCAL MAILER DEF Определяет файл, который определяет mailer для
локального получения почты. См. раздел " Определение Локального Mailer'а "
выше.
PSEUDONYMS Определяет все имена, вашего локального host.
DEFAULT HOST Помещается в ваше полностью квалифицированное имя
области. Это имя появится как ваш hostname во всей выходящей почте.
UUCPNAME Помещается в ваше неквалифицированное hostnmae.
RELAY HOST и RELAY MAILER Если Вы говорите UUCP smart-host
установить RELAY HOST для UUCP имени вашего " интеллектуально
зависимого " uucp соседа. Используйте UUCP-A mailer, если Вы хотите
заголовки с определенным именем области.
DEFAULT MAILER Если Вы находитесь в Internet и используете DNS, Вы
должны установить его как TCP-A. Это сообщает, чтобы sendmail использовал
TCP-A mailer, который передает почту через SMTP используя нормальную RFC
адресацию для конверта. Абонент Internet возможно не должен определять
RELAY HOST or RELAY MAILER.
Чтобы создать файл sendmail.cf, выполните команду
# make yourhostname.cf
Она обработает файл yourhostname.m4 и создаст yourhostname.cf из него.
Затем, Вы должны проверить, делает ли файл конфигурации, который вы
создали, то, что Вы ожидаете. Это объясняется в следующих двух разделах.
Если вы удовлетворены его поведением, скопируйте его на место
командой:
# cp yourhostname.cf /etc/sendmail.cf
Теперь ваша система sendmail готова к действиям. Поместите следующую
строку в соответствующем файле запуска (вообще /etc/rc.inet2). Вы можете
также выполнить ее вручную, чтобы запустить его теперь.
# /usr/lib/sendmail -bd -q1h
16.5.3 Тестирование файла sendmail.cf
Чтобы включить " проверочный " режим, Вы вызываете sendmail с -bt
флагом. Заданный по умолчанию файл конфигурации - файл sendmail.cf,
который установлен на системе. Вы можете проверять альтернативный файл,
используя -Cfilename опцию.
В следующих примерах, мы проверяем vstout.cf файл конфигурации,
сгенерированный из файла vstout.m4.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
>
Следующие тесты гарантируют, что sendmail способен получать всю почту
пользователей вашей системы. Во всех случаях результат теста должен быть
тот же самый и указывать на локальное имя системы с ЛОКАЛЬНЫМ
mailer'ом.
Сначала проверите, как почта была бы передана локальному пользователю.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me
rewrite: ruleset 3 input: me
rewrite: ruleset 7 input: me
rewrite: ruleset 9 input: me
rewrite: ruleset 9 returns: < me >
rewrite: ruleset 7 returns: < > , me
rewrite: ruleset 3 returns: < > , me
rewrite: ruleset 0 input: < > , me
rewrite: ruleset 8 input: < > , me
rewrite: ruleset 20 input: < > , me
rewrite: ruleset 20 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 8 returns: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 input: < > , @ vstout . vbrew . com , me
rewrite: ruleset 26 returns: $# LOCAL $@ vstout . vbrew . com $: me
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me
Вывод показывает как sendmail обрабатывает адрес внутренне. Он
вручается различным ruleset, которые анализируют его, вызывают другой
ruleset по очереди, и разбивают его в компоненты.
В нашем примере, мы передали мой адрес к ruleset 3 и 0 (это - значение из
3,0 введенное перед адресом). Последняя строка показывает анализируемый
адрес возвращаемый ruleset 0.
Затем, проверите почту пользователя вашей системы с синтаксисом UUCP.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 vstout!me
rewrite: ruleset 3 input: vstout ! me
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Затем, проверите почту, адресованную пользователю вашей системы с
синтаксисом Internet к вашему полностью квалифицированному hostname.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 me@vstout.vbrew.com
rewrite: ruleset 3 input: me @ vstout . vbrew . com
[...]
rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me >
Вы должны повторить вышеупомянутые два теста с каждым из имен,
которые Вы определили в PSEUDONYMS и параметрах DEFAULT NAME в
вашем файле sendmail.m4.
Наконец, проверите что Вы можете отправлять почту вашему relay host.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@moria.com
rewrite: ruleset 3 input: fred @ moria . com
rewrite: ruleset 7 input: fred @ moria . com
rewrite: ruleset 9 input: fred @ moria . com
rewrite: ruleset 9 returns: < fred > @ moria . com
rewrite: ruleset 7 returns: < @ moria . com > , fred
rewrite: ruleset 3 returns: < @ moria . com > , fred
rewrite: ruleset 0 input: < @ moria . com > , fred
rewrite: ruleset 8 input: < @ moria . com > , fred
rewrite: ruleset 8 returns: < @ moria . com > , fred
rewrite: ruleset 29 input: < @ moria . com > , fred
rewrite: ruleset 29 returns: < @ moria . com > , fred
rewrite: ruleset 26 input: < @ moria . com > , fred
rewrite: ruleset 25 input: < @ moria . com > , fred
rewrite: ruleset 25 returns: < @ moria . com > , fred
rewrite: ruleset 4 input: < @ moria . com > , fred
rewrite: ruleset 4 returns: fred @ moria . com
rewrite: ruleset 26 retu rns < @ moria . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ moria
. com > , fred >
16.5.4 Помещение всего вместе - Интеграционная проверка sendmail.cf и таблиц
Вы проверили что почта будет иметь желательное заданное по умолчанию
поведение и что вы будете способны и послать и получить законно
адресованную почту. Чтобы завершить установку, может быть необходимо
создать соответствующие dbm таблицы, чтобы получить желательные
конечные результаты.
После создания таблиц, которые требуются для вашего пункта, Вы должны,
обработать их через dbm созданием make в каталоге, содержащем таблицы.
Если Вы являетесь только UUCP узлом, Вы не должны создвать таблицы,
упомянутые в README.linux файле. Вы будете должны только подправить
файлы так, чтобы Make-файл работал.
Если вы в UUCP и Вы разговариваете с абонентами в дополнение к
вашему smart-host, вы будете должны добавить входы uucpxtable для каждого
(или почта к ним также пройдет через smart host) и выполнить dbm для
пересмотренного uucpxtable.
Сначала, Вы должны удостовериться что почта через ваш RELAY HOST,
посылается им через RELAY MAILER.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 fred@sesame.com
rewrite: ruleset 3 input: fred @ sesame . com
rewrite: ruleset 7 input: fred @ sesame . com
rewrite: ruleset 9 input: fred @ sesame . com
rewrite: ruleset 9 returns: < fred > @ sesame . com
rewrite: ruleset 7 returns: < @ sesame . com > , fred
rewrite: ruleset 3 returns: < @ sesame . com > , fred
rewrite: ruleset 0 input: < @ sesame . com > , fred
rewrite: ruleset 8 input: < @ sesame . com > , fred
rewrite: ruleset 8 returns: < @ sesame . com > , fred
rewrite: ruleset 29 input: < @ sesame . com > , fred
rewrite: ruleset 29 returns: < @ sesame . com > , fred
rewrite: ruleset 26 input: < @ sesame . com > , fred
rewrite: ruleset 25 input: < @ sesame . com > , fred
rewrite: ruleset 25 returns: < @ sesame . com > , fred
rewrite: ruleset 4 input: < @ sesame . com > , fred
rewrite: ruleset 4 returns: fred @ sesame . com
rewrite: ruleset 26 returns: < @ sesame . com > , fred
rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ sesame
. com > , fred >
Если Вы имеете UUCP соседей кроме вашего RELAY HOST, Вы должны
гарантировать, что почта к ним имеет соответствующее поведение. Почта,
адресованная с синтаксисом стиля UUCP для host, с которым Вы говорите по
UUCP, должна идти непосредственно к ним (если Вы явно не предотвращаете
это входом domaintable). Примите, что swim host - прямой сосед UUCP ваших
соседей. И при подаче swim!Fred sendmail должен произвести следующий
результат:
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 swim!fred
rewrite: ruleset 3 input: swim ! fred
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred
>
Если Вы имеете входы uucpxtable, чтобы вынудить получение по UUCP для
некоторых UUCP соседей, которые посылают почту стиля Internet с
определенным именем области, это также должно быть проверено.
# /usr/lib/sendmail -bt -Cvstout.cf
ADDRESS TEST MODE
Enter
[Note: No initial ruleset 3 call]
> 3,0 dude@swim.2birds.com
rewrite: ruleset 3 input: dude @ swim . 2birds . com
[...lines omitted...]
rewrite: ruleset 0 returns: $# UUCP $@ swim . 2birds $: < > , dude >
16.6 Администрирование и Глупые Приемы Почты
Теперь, когда мы обсудили теорию конфигурирования, установки, и
тестирования sendmail + IDA, давайте рассмотрим несколько моментов, чтобы
изучить вещи, которые случаются обычно в жизни администратора почты.
Отдаленные системы иногда ломаются. Ошибка модема или сбой
телефонных линий, определения DNS установлены неправильно из-за
человеческой ошибки. Сети падают неожиданно. В таких случаях,
администраторы почты должны знать, как реагировать быстро, действенно, и
безопасно схранить почту, текущую через альтернативные маршруты, пока
отдаленные системы или поставщики услуг не могут восстановить
нормальные услуги.
Остальная часть этой главы предназначена, чтобы обеспечить Вас
решениями для наиболее частыми " критическми состояниями электронной
почты ".
16.6.1 Пересылка Почты В Отдаленную Систему
Чтобы отправлять почту для специфического host или области в
обозначенную отдаленную систему, Вы вообще используете mailertable.
Например, чтобы отправить почту для backwood.org к их закулисной
системе GATEWAY UUCP, вы поместили следующий вход в mailertable:
UUCP-A,backdoor backwood.org
16.6.2 Почта Для Неконфигурированного Отдаленного Абонена
Часто, главные ЭВМ Internet будут иметь проблему при получении почты в
не-конфигурированном отдаленном абоненте. Имеются отдельные варианты
этой проблемы, но общий признак - почта передается отдаленной системой
или никогда добирается туда вообще.
Эти проблемы могут помещать локального администратора системы в
плохую позицию, потому что ваши пользователи вообще не заботятся о том
что Вы лично не управляете каждой системой во всем мире (или не знаете, как
получить отдаленного администратора, чтобы установить проблему). Они
только знают, что их почта не проходила желательному получателю на другом
конце и что вы являетесь вероятным виновным человеком.
Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях,
убедитесь, что ваш пункт способен связаться с не-конфигурированным
отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в
отдаленном пункте, чтобы установить их конфигурацию своевременным
способом, Вы имеет две опции.
+ Вообще возможно вынудить послать почту в отдаленную систему успешно,
хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном
конце могут не работать ..., но то это - проблема отдаленного администратора.
Вы можете устранить плохие заголовки в конверте на ваших исходящих
сообщениях только используя вход domaintable для их области или host, что
приводит к правке недопустимой информации, при выходе почты из вашего
пункта:
braindead.correct.domain.com braindead.wrong.domain.com
Знак ! в mailertable передает почту их отдаленному пункту, как будто она
инициировалось локально на их системе. Обратите внимание, что это
изменяет только адрес конверта, так что соответствующий адрес возврата
будет все еще обнаруживаться в сообщении.
TCP!braindead.correct.domain.com braindead.wrong.domain.com
16.6.3 Почта, которая будет перемещена через UUCP
В идеальном мире (из перспективы Internet), все главные ЭВМ будут иметь
записи в Domain Name Service (DNS) и посылать почту с полностью
квалифицированными именами области.
Если Вы, случается, передаете через UUCP такому пункту, Вы можете
вынуждать почту пройти двухточечное соединение UUCP, а не через ваш
заданный по умолчанию mailer по существу " опуская область " их hostname
через uucpxtable.
Чтобы вынуждать получение через UUCP для sesame.com, Вы поместили
бы следующее в ваш uucpxtable:
# un-domainize sesame.com to force UUCP delivery
sesame sesame.com
Результат - тот sendmail, то определит (через UUCPNODES в файле
sendmail.m4) что Вы непосредственно соединены с отдаленной системой, и
будет ставить в очередь почту для получения через UUCP.
16.6.4 Предотвращение Передачи Почты через UUCP
Противоположное условие также происходит. Часто системы могут иметь
ряд прямых соединений UUCP, которые редко используются или они не так
надежны и всегда доступны как заданный по умолчанию mailer или relay host.
Например, в Seattle области имеется ряд систем, которые обменивают
различные распределения Linux через анонимный UUCP, когда эти
распределения выпускаются. Эти системы говорят по UUCP только когда
необходимо, так что вообще быстрее и более надежно послать почту через
общие (и всегда доступные) главные ЭВМ.
Легко можно предотвратить получение UUCP почты от host, с которым Вы
непосредственно соединены. Если отдаленная система имеет полностью
квалифицированное имя области, Вы может добавить вход в domaintable:
# prevent mail delivery via UUCP to a neighbor
snorkel.com snorkel
Это заменит любое вхождение имени UUCP на FQDN, и таким образом
предотвратит соответствие строкой UUCPNODES в файле sendmail.m4.
Результат - почта будет идти через RELAY MAILER и RELAY HOST (или
DEFAULT MAILER).
16.6.5 Выполнение Очереди Sendmail по требованию
Для обработки поставленных в очередь сообщений немедленно, просто
набейте "/usr/lib/runq ". Это заставляет sendmail выполнить очередь заданий,
немедленно а не ждать следующего планируемого.
16.6.6 Статистика Почты
Многие администраторы пунктов (и персонал) заинтересованы объемом
почты, передающейся к, из, и через локальный пункт. Имеется ряд способов
определить количество траффика почты.
+ Sendmail приходит с утилитой, называемой mailstats, которая читает файл
называемый /usr/local/lib/mail/sendmail.st и сообщает число сообщений и число
байтов, перемещенных каждым из mailer'ов используемых в файле sendmail.cf.
Этот файл должен быть создан локальным администратором вручную для
регистрации sendmail. Текущие показатели будут очищены, удаляя и вновь
создавая sendmail.st файл. Один способ состоит в том, чтобы делать следующее:
# cp /dev/null /usr/lib/local/mail/sendmail.st
+ Возможно самый лучший способ делать качественный отчет относительно
того, кто использует почту и сколько объема проходит к, из, и через локальную
систему, состоит в том, чтобы включить отладку почты как syslogd (8). Вообще,
это означает выполнение /etc/syslogd daemon из вашего файла запуска системы
(который Вы должны создать во всяком случае), и добавление строки к
/etc/syslog.conf (5) который который выглядит примерно:
mail.debug /var/log/syslog.mail
Если Вы используете mail.debug и отправляете по почте большие объемв,
вывод syslog может стать большим. Выходные файлы из syslogd вообще
должны сдвигаться или очищаться на стандартном базисе из crond (8).
Имеется ряд обычно доступных утилит, которые могут подводить итог
вывода регистрации почты из syslogd. Одна из наиболее известных утилит -
syslog-stat.pl, команда perl, которая распределена с sendmail + IDA.
16.7 Смешивание и Соответствие Двоичных Распределений
Не имеется никакой истинной стандартной конфигурации транспорта
электронной почты и средств получения и не имеется никакой " истинной
структуры каталога. "
Соответственно, необходимо гарантировать, что все различные части
системы (USENET новости, почта, TCP/IP) договариваются о расположении
локальной программы получения почты (lmail, deliver, и т.д.), отдаленной
программы получения почты (rmail), и программы транспорта почты (sendmail
или smail). Такие предположения вообще не зарегистрированы, хотя
использование команды может помогать определять то, какие файлы и
каталоги ожидаются. Следующее - некоторые проблемы, которые мы видели в
прошлом с некоторыми доступными двоичными распределениями и
исходниками.
+ Некоторые версии распределения NET-2 TCP/IP имеют услуги,
определенные для программы, называемой umail а не sendmail.
+ Имеются различные порты elm и mailx, которые ищут средство получения
/usr/bin/smail а не sendmail.
+ Sendmail + IDA имеет встроенный локальный mailer для deliver, но ожидает,
что он расположен в /bin, а не в более типичном расположении Linux /usr/bin.
16.8 Где Получить Подробную информацию
Имеется много мест, где Вы можете искать подробную информацию
относительно sendmail. См. Linux MAIL Howto зарегистрированный регулярно
как comp.answers. Это также доступно для анонимного FTP на rtfm.mit.edu.
Однако, окончательное место находится в sendmail + IDA. Смотрите в каталоге
ida/cf ниже исходного каталога файлы DBM-GUIDE, OPTIONS, и Sendmail.mc.
17. Netnews
17.1 Usenet Хронология
Идея относительно сетевых новостей была рождена в 1979 когда два
студента Tom Truscott и Jim Ellis подумали об использовании UUCP чтобы
соединять машины с целью информационного обмена среди пользователей
Unix. Они установили малую сеть из трех машин на Севере Каролины.
Первоначально, траффик был обработан рядом команд оболочки (позже
перезаписан в C), но они никогда не были выпущены к общему. Они были
быстро заменены на "А" новости, первый общий выпуск программного
обеспечения новостей.
"А" новости не был разработаны, чтобы обработать больше чем несколько
статей на группу в день. Когда объем продолжил расти, это было
перезаписано Мark Horton и Matt Glickman, и названо "B" выпуск (a.k.a. Bnews).
Первый общий выпуск Bnews был - версия 2.1 в 1982. Он расширялся
непрерывно, с отдельными новыми добавляемыми возможностями. Текущая
версия - Bnews 2.11. Она медленно устаревает.
Другая перезапись была выполнена и выпускалась в 1987 Geoff Collyer и
Henry Spencer; это - выпуск " "C", или Новости C.
Выпуск Эффективности - Новости C, версия в настоящее время
включенная в большинство реализаций Linux.
Все выпуски новостей до " " C " " является прежде всего целенаправленным
для сетей UUCP, хотя они могут использоваться в других средах также.
Эффективная передача новостей над сетями подобно TCP/IP, DECNet требует
новой схемы. Это было причиной почему, в 1986 появился " Сетевой
Протокол передачи Новостей '', NNTP. Он основан на сетевых соединениях, и
определяет ряд команд, чтобы в интерактивном режиме передать и отыскать
статьи.
Имеется ряд nntp-основанных приложений, доступных из Сети. Один из
них - nntpd пакет Brian Barber и Phil Lapsley,
Другие NNTP пакеты - INN, или Новости Internet. Это не просто передная
часть, но система новостей с собственными правилами.
17.2 Что является Usenet, Во всяком случае?
Одно из наиболее поразительных предложений относительно Usenet - то,
что это не часть любой организации, и не имеет централизованной сетевой
власти для управления. Фактически, это - все Usenet сведения, кроме
технического описания. Вы не можете определять, что это, Вы можете только
сказать чем это не является.
С риском звучать глупо, можно было определить Usenet как
сотрудничество отдельных абонентов, которые обмениваются Usenet
новостями.
Базисный модуль Usenet новостей - статья. У статьи есть так называемый
заголовок. Это очень похоже на формат заголовка почты, установленный в
Internet, стандарт RFC 822, в котором это состоит из отдельных строк текста,
каждое начинается с имени поля, завершенного двоеточием, которое
сопровождается значением поля. (1)
Статьи представлены на рассмотрение в одну или большое количество
newsgroups. Можно рассматривать newsgroup форумом для статей в отношении
общего предмета. Все newsgroups организованы в иерархии, с именем каждой
группы, указывающим место в иерархии. Например, любой может видеть из
имени newsgroup, что comp.os.linux.announce используется для объявлений
относительно операционной системы Linux.
17.3 Как в Usenet Обрабатывают Новости?
Сегодня, Usenet вырос до огромных размеров. Узлы, которые несут все
netnews обычно передают что - нибудь вроде несерьезных шестидесяти
мегабайтов в день. (2) Конечно это требует намного больше чем обмен
файлами. Так что давайте рассмотрим способ, которым большинство системах
Unix обрабатывает Usenet новости.
Новости распределены через сеть различными transports. Как историческая
среда используется UUCP, но сегодня основной траффик несет абонент Internet.
Используемый алгоритм маршрутизации называется лавинной
маршрутизацией: Каждый пункт поддерживает ряд связей к другому абоненту.
Любая статья, сгенерированная или полученная локальной системой новостей
будет послана к ним.
Чтобы отличать статьи и распознавать дубликаты, Usenet статьи должны
нести ID сообщения (заданный в поле заголовка Message-ID:), которое
объединяет имя пункта регистрации и серийный номер в " ''. Для
каждой обработанной статьи, система новостей регистрирует ее ID в файл
хронологии, в котором проверяются все прибывающие статьи.
Явное число статей обычно требует, чтобы к вышеупомянутой схеме были
сделаны уточнения. На сетях UUCP, обычто статьи за период времени
объединяются в одиночный файл, который сжимается и посылается к
отдаленному пункту. Это вызывается, пакетирование.
Абонент, которые находятся в Internet вообще полагается на TCP/IP
программное обеспечение, которое использует Сетевой Протокол передачи
Новостей, NNTP. Он передает новости между узлами и обеспечивает Usenet
доступ к отдельным пользователям.
18. "C" Новости
Один из наиболее популярных пакетов программ для Netnews - Новости C.
Это было разработано для абонентов, которые несут новости по связям UUCP.
Эта глава обсудит центральные понятия Новостей C, и базисной установки и
задач сопровождения.
Новости C (C News) сохраняют файлы конфигурации в /usr/lib/news, а
большинство binaries в каталоге /usr/lib/news/bin. Статьи сохраняются ниже
/var/spool/news. Вы должны удостовериться виртуально что все файлы в этих
каталогах принадлежат новостям пользователя, групповым новостям.
Большинство проблем является результатом файлов, являющихся недоступным
для Новостей C. Сделайте это правилом для Вас, определить новостями
пользователя, используя su прежде, чем Вы что - нибудь там измените.
Единственые исключения - setnewsids, которые используются, чтобы
установить реальный id пользователя некоторых программ новостей. Это
должно принадлежать root и должно иметь setuid набор битов.
Далее мы описываем все файлы конфигурации C News подробно, и
показываем Вам, что Вы должны делать, чтобы сохранить ваш пункт в
рабочем состоянии.
18.1 Поставка Новостей
Статьи могут быть поданы C News отдельными способами. Когда
локальный пользователь отправляет по почте статью, newsreader обычно
вручает ее команде inews, которая завершает информацию заголовка. Новости
из отдаленного абонента, будь это одиночная статья или целый пакет, даны
команде rnews, которая сохраняет их в каталоге /var/spool/newsin.coming, откуда
они будут подняты в более позднее время newsrun. С любым из этих двух
методов, однако, статья будет в конечном счете вручена команде relaynews.
Для каждой статьи, команда relaynews проверяет, если статья уже была
замечена в локальном пункте, ища id сообщения в файле хронологии. Двойные
статьи будут пропущены. Затем, relaynews рассматривает Newsgroups: строку
заголовка, чтобы выяснить, запрашивает ли локальный пункт статьи из любой
из этих групп. Если он это делает, и группа новостей перечислена в открытом
файле, relaynews пробует сохранять статью в соответствующем каталоге в
области хранения новостей. Если этот каталог не существует, он будет создан.
Id сообщения статьи будет регистрироваться в файле хронологии. Иначе,
relaynews пропускает статью.
Если relaynews будет не в состоянии сохранять входящую статью, потому
что группа, в которой она была зарегистрирована, не перечислена в вашем
открытом файле, статья будет перемещаться в группу junk. relaynews также
проверит несвежие или статьи без дат и отклонит их. Входящие пакеты,
которые терпят неудачу по любой другой причине, перемещаются в
/var/spool/news/in.coming/bad, и сообщение об ошибках регистрируется.
18.2 Установка
Чтобы установить C News необходимо раз'tar'ить файлы в их
соответствующие места, если Вы еше не сделали этго, и отредактировать
файлы конфигурации, перечисленные ниже. Они все расположены в
/usr/lib/news. Их форматы будут описаны в следующих разделах.
Если Вы являетесь передающим пунктом (пунктом листа), Вы нуждаетесь в
строке, которая посылает все локально сгенерированные статьи к
ожидающему. Пусть ожидающий - moria, тогда ваш системный файл должен
выглядеть следующим образом:
ME:all/all::
moria/moria.orcnet.org:all/all,!local:f:
organization Имя Вашей организации. Например, "Виртуальный Пивоваренный
завод". На вашей местной машине, введите " частный пункт '', или что -
нибудь, еще, что Вы находите приятным. Большинство людей не будет
называть ваш пункт правильно отконфигурированным, если Вы не настроили
этот файл.
newsgroups ...
mailname Имя почты Вашего пункта, например vbrew.com.
whoami Имя Вашего пункта для целей новостей. Часто используется имя пункта
UUCP, например vbrew.
explist Вы должны возможно редактировать этот файл, чтобы отразить ваше
привилегированное время для некоторых специальных newsgroups. Дисковое
пространство может играть важную роль в этом.
Чтобы создавать начальную иерархию newsgroups, получите active и
newsgroups файл из пункта, который передает Вам, и установите их в
/usr/lib/news. Удалите все to.* группы из active файла, и добавте to.mysite и
to.feedsite, также как junk и control. To.* группы обычно используются для
обмена ihave/sendme сообщениями, но Вы должны создать их независимо от
того, планируете ли Вы использовать ihave/sendme или нет. Затем, замените все
числа статьи во втором и третьем поле active, используя следующую команду:
# cp active active.old
# sed 's/ [0-9]* [0-9]* / 0000000000 00001 /' active.old > active
# rm active.old
Вторая команда - вызов sed (1), одна из моих любимых команд Unix. Этот
вызов заменяет две строки цифр на строку нулей и строку 000001,
соответственно.
В заключение, создайте каталог для хранения новостей и подкаталоги,
используемые для входящих и исходящих новостей:
# cd /var/spool
# mkdir news news/in.coming news/out.going
# chown -R news.news news
# chmod -R 755 news
Если вы используете более поздний выпуск C News, Вы можете быть
должны создать каталог out.master в каталоге хранения новостей.
Если вы используете newsreaders из другого распределения чем C News, Вы
можете находить, что некоторые ожидают хранилище новостей в
/usr/spool/news а не в /var/spool/news. Если ваш newsreader кажется, не находит
статьи, создайте сноску из /usr/spool/news в /var/spool/news.
Теперь, Вы готовы получать новости. Обратите внимание, что Вы не
должны создавать любые каталоги отличные от показанных выше, потому что
каждый раз когда C News получает статью от группы, для которой не имеется
никакого каталога, он создаст его.
C News нуждается в пользователе, которому можно послать сообщения об
ошибках и отчеты состояния. По умолчанию, это - usenet. Если Вы используете
значение по умолчанию, Вы должен установить специальные права для него.
Вы можете также отменять это поведение, устанавливая переменную среды
NEWSMASTER как соответствующее имя.
18.3 Системный файл
Системный файл sys расположенный в /usr/lib/news, управляет иерархией
получения и передачи к другому абоненту. Хотя имеются инструментальные
средства сопровождения, именованные addfeed и delfeed, я думаю, что лучше
поддерживать этот файл вручную.
Файл sys содержит входы для каждого пункта на который Вы передаете
новоси, также как описание групп, которые Вы примете. Вход выглядит
подобно
site[/exclusions]:grouplist[/distlist][:flags[:cmds]]
Входы могут быть продолжены поперек символов перевода строки,
используя наклонную черту влево (\). Знак мусора (*) обозначает комментарий.
site является именем пункта к которому вход применяется. Каждый обычно
выбирает имя UUCP пункта для этого. Должен иметься вход для вашего пункта
в файле sys, или Вы не будете получать никакие статьи самостоятельно.
Специальное имя пункта ME обозначает ваш пункт.
Так как C News проверяет пункт против имен пункта в Path: поле заголовка,
Вы должны удостовериться, что они действительно соответствуют. Некоторые
абонентв используют их полностью квалифицированное имя области в этом
поле, или специальное подобно news.site.domain. Чтобы предотвращать возврат
любых статей к этому абоненту Вы должны добавить их к списку исключения,
отделяя их запятыми.
Для входа, обращающегося к пункту moria, например, поле пункта
содержало бы moria/moria.orcnet.org.
Grouplist - отделенный запятой список групп и иерархий для этого
специфического пункта. Иерархия может быть определена, давая префикс
иерархии (типа comp.os для всех групп, чьи имена начинаются с этого
префикса), необязательно сопровождаемый ключевым словом all (например
comp.os.all).
Иерархия или группа исключается из пересылки, приписыванием метки
восклицания. Если newsgroup проверен против списка, самое длинное
соответствие, применяется. Например, если grouplist содержит
!comp,comp.os.linux,comp.folklore.computers
Никакие группы из comp иерархии за исключением comp.folklore.computers
и всех групп ниже comp.os.linux не будут поданы к тому пункту.
Если пункт запрашивает послать все новости, что Вы получаете для себя,
введите все как grouplist.
Distlist - смещение из grouplist наклонной чертой вправо, и содержит список
распределений, которые будут посланы. Снова, Вы можете исключать
некоторые распределения, предшествуя им с меткой восклицания. Все
распределения обозначены all. Опущение distlist подразумевает список всех.
Например, Вы можете использовать дистрибутивный список all,!Local,
чтобы предотвратить посылку новостей для локального использования
отдаленному абоненту.
Имеются обычно по крайней мере два распределения: world, который
является часто заданным по умолчанию используемым распределением когда
ни одно не определено пользователем, и local. Могут иметься другие
распределения, которые обращаются к некоторой области, штату, стране, и т.д.
В заключение, имеются два распределения, используемые только C News; это -
sendme и ihave, и используются для sendme/ihave протокола.
Флаги
Здесь описывются некоторые параметры для feed. Это может быть пусто,
или комбинация следующего:
F Этот флаг дает возможность пакетированию.
f Это почти идентично F флагу, но позволяет C News вычислять размер
исходящих пакетов более точно.
I Этот флаг заставит C News произвести список статей, подходящих для
использования ihave/sendme. Дополнительные изменения sys и batchparms
файлов требуются, чтобы дать возможность ihave/sendme.
n Это создает командные файлы для active NNTP клиентов передачи подобно
nntpxmit (см. главу 19.). Командные файлы содержат имя файла статьи наряду с
id сообщения.
L Это сообщает, чтобы C News передал только статьи, зарегистрированные в
вашем пункте. Этот флаг может сопровождаться десятичным числом n,
которое заставит C News передать статьи, зарегистрированные только внутри
n переходов из вашего пункта. C News определяет число переходов в поле
Path:.
u Это сообщает C News принимать только статьи из групп unmoderated.
m Это сообщает C News принимать только статьи из уменьшенных групп.
Вы можете использовать не больше одного из F, f, I, или n.
cmds Это поле содержит команду, которая будет выполнена для каждой статьи,
если пакетирование не допускается. Статья будет подана команде на
стандартном вводе. Это должно использоваться для очень малых потоков;
иначе загрузка на обеих системах будет слишком высока.
Заданная по умолчанию команда
uux - -r -z system!rnews
Вызывает rnews на отдаленную систему, подавая эту статью на стандартном
вводе.
Заданный по умолчанию путь поиска для команд, данных в этом поле -
/bin:/usr/bin:/usr/lib/news/bin/batch. Последний каталог содержит ряд команд
оболочки, чьи имя начинается с via; они кратко описаны позже в этой главе.
Если пакетирование допускается, использованием или F или f, или I или n
флагов, C News ожидает находить имя файла в этом поле, а не команду. Если
имя файла не начинается с наклонной черты вправо (/), оно принимается
относительно /var/spool/news/out.going. Если поле пусто, то значения по
умолчанию system/togo.
При установке C News, Вы будете возможно должны написать ваш
собственный файл sys. Чтобы помочь Вам с этим, мы даем типовой файл для
vbrew.com ниже, с которого Вы могли бы скопировать то, в чем Вы
нуждаетесь.
# We take whatever they give us.
ME:all/all::
# We send everything we receive to moria, except for local and
# brewery-related articles. We use batching.
moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f:
# We mail comp.risks to jack@ponderosa.uucp
ponderosa:comp.risks/all::rmail jack@ponderosa.uucp
# swim gets a minor feed
swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f:
# Log mail map articles for later processing usenet-
maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch
18.4 Файл active
Файл active расположенный в /usr/lib/news перечисляет все группы,
известные в вашем пункте, и статьи в настоящее время интерактивные. Вы
редко будете должны изменять его, но мы объясним это ради законченности.
Входы имеют следующую форму:
newsgroup high low perm
Newsgroup, конечно, имя группы. Low и high - самые низкие и самые
высокие числа статей, в настоящее время доступных. Если ни одна не является
доступной в настоящее время, low = high + 1.
Perm - параметр, детализирующий доступ пользователей в зависимости от
группы. Он принимает одно из следующих значений:
y Пользователям разрешают отправить по почте к этой группе.
n Пользователям не разрешают отправить по почте к этой группе. Однако,
группа может все еще читаться.
x Эта группа была заблокирована локально. Это случается иногда, когда
администраторы новостей (или их старшие) закрывают статьи,
зарегистрированные в некоторых группах.
Статьи, полученные для этой группы не сохранены локально, хотя они
посланы к абонентам, которые запрашивают их.
m Это обозначает уменьшенную группу. Когда пользователь пробует
отправлять по почте к этой группе, интеллектуальный newsreader сообщит
какая она, и пошлет статью регулятору взамен. Адрес регулятора принимается
из файла регуляторов в /usr/lib/news.
=real-group Это отмечает newsgroup как локальную специализацию для другой
группы, а именно real-группы. Все статьи, зарегистрированные в newsgroup
будут переназначены в нее.
В C News, Вы вообще не будете должны обращаться к этому файлу
непосредственно. Группы могут быть добавлены или удаляться, локально
используя addgroup и delgroup (см. ниже в разделе 18.10). Когда группы
добавляются или удаляются для всего Usenet, это обычно делается, посылая
newgroup или rmgroup сообщение управления, соответственно. Никогда не
посылайте такое сообщение самостоятельно! Для команд о том, как создавать
newsgroup, читайте ежемесячник в news.announce.newusers.
Файл, близко связанный с active - active.times. Всякий раз, когда группа
создана, C News регистрирует сообщение в этот файл, содержащее имя
созданной группы, дату создания, было ли это выполнено в соответствии c
сообщением управления новой группы или локально, и кто сделал это. Это -
для удобства newsreaders, которые могут сообщать пользователю относительно
любой недавно созданной группы. Это также используется командой
NEWGROUPS NNTP.
18.5 Пакетирование Статьи
Newsbatches следуют за специфическим форматом, который является тем
же самым для Bnews, C News, и INN. Каждой статье предшествует строка:
#! rnews count
Где count - число байтов в статье. Когда используется пакетное сжатие,
возникающий в результате файл сжат в целом, и содержит другую строку в
соответствии c сообщением, которое нужно использовать для распаковки.
Стандартное средство сжатия - упаковщик, который отмечен
#! cunbatch
Иногда, при необходимости посылать пакеты через программное
обеспечение почты, которое удаляет, восьмой бит из всех данных, сжатый
пакет может быть защищен, используя, что называется c7-encoding; эти пакеты
будут отмечены c7unbatch.
Когда пакет подан к rnews на отдаленном пункте, он проверяет эти
маркеры и обрабатывает пакет соответственно. Некоторые абоненты также
используют другие инструментальные средства сжатия, подобно gzip, и
предшествует таким файлам с zunbatch взамен. C News не распознает
ненормативные заголовки подобно этим; Вы должны изменить исходник,
чтобы поддерживать их.
В C News, пакетирование статьи выполняется
/usr/lib/news/bin/batch/sendbatches, который берет список статей из site/togo файла,
и помещает их в отдельный newsbatches. Это должно быть выполнено раз в час
или даже более часто, в зависимости от объема траффика.
Операция управляется batchparms файлом в /usr/lib/news. Этот файл
описывает максимальный пакетный размер, позволенный для каждого пункта,
программу пакетирования и необязательную программу сжатия, которую
нужно использовать, и транспорт для поставки к этому отдаленному пункту.
Вы можете определять параметры пакетирования, также как набор заданных
по умолчанию параметров для абонента, не явно упомянутого.
Чтобы выполнять пакетирование для специфического пункта, Вы
вызываете это как
# su news -c "/usr/lib/news/bin/batch/sendbatches site"
Когда вызывается без аргументов, sendbatches обрабатывает все пакетные
очереди. Интерпретация " все " зависит от присутствия заданного по
умолчанию входа в batchparms. Если он найден, все каталоги в
/var/spool/news/out.going проверяются, иначе, он циклически проходит все
входы в batchparms. Обратите внимание, что sendbatches, при просмотре
каталога out.going, берет только те каталоги, которые не содержат никакую
точку или знак (@) как имена пункта.
При установке C News, Вы наиболее вероятно найдете batchparms файл в
вашем распределении, который содержит приемлемый заданный по
умолчанию вход, так что имеется хорошая возможность не изменять файл. На
всякий случай, мы описываем формат. Каждая строка состоит из шести полей,
отделяемых пробелами или метками табуляции:
site size max batcher muncher transport
Значение этих полей следующие:
site - имя пункта, к которому применяется вход. Togo файл для этого пункта
должен постоянно находиться в out.going/togo. Имя пункта /default/ обозначает
заданный по умолчанию вход.
size - максимальный размер созданных пакетов статей (перед сжатием). Для
одиночных статей больших чем этот размер, C News делает исключение и
помещает их в одиночный пакет.
max - максимальное число пакетов, созданных и планируемых для
передачи перед пакетированием для этого специфического пункта.
C News определяет число поставленных в очередь пакетов, используя
queulen команду в /usr/lib/news/bin. Выпуск newspak Vince Skahan'а должен
содержать команду для bnu-совместимого UUCP. Если Вы используете
различные виды spool каталогов, например, Taylor UUCP, Вам может быть
необходимо написать ваш собственный.
Поле batcher содержит команду, используемую для создания пакета из
списка статей в togo файле. Это - обычно batcher. Для других целей можно
обеспечивать альтернативные команды. Например, ihave/sendme протокол
требует, чтобы список статей был превращен в сообщения управления ihave
или sendme, которые зарегистрированы в newsgroup to.site. Это выполняется
batchih и batchsm.
muncher поле определяет команду, используемую для сжатия. Обычно, это -
compcun, команда, которая производит сжатый пакет. В качестве
альтернативы, Вы могли бы обеспечивать muncher, который использует gzip,
скажем gzipcun (чтобы быть чистым: Вы должны запись это непосредственно).
Вы должны удостовериться, что распаковщик на отдаленном пункте
исправлен, чтобы распознать файлы, сжатые с gzip.
Если отдаленный пункт не имеет команды распаковки, Вы можете
определить nocomp, который не делает никакое сжатие.
Последнее поле, transport, описывает транспорт, который нужно
использовать. Доступно несколько стандартных команд для различных
transports, чьи имена начинаются с via. Sendbatches передает им имя пункта
адресата в командной строке. Если batchparms вход не был /default/, он получает
имя пункта из поля site, удаляя все последующее, включая первую точку или
наклонную черту вправо. Если вход был /default/, используются имена каталога
в out.going.
Имеются две команды, которые используют uux, чтобы выполнить rnews на
отдаленной системе; viauux и viauuxz. Последняя устанавливает -z флаг для
(более старые версии) uux, чтобы отменить сообщения успеха для каждой
переданной статьи. Другая команда, viamail, посылает пакеты статей
пользователю rnews на отдаленной системе через почту.
Все команды из последних трех полей нужно расположть или в
out.going/site или в /usr/lib/news/bin/batch. Большинство их - команды, так, чтобы
Вы могли легко приспосабливать новые инструментальные средства для
ваших персональных потребностей. Они вызываются как трубопровод.
Список статей подается дозатору на стандартном вводе, который производит
пакет на стандартном выводе. Это канально передается в muncher, и так далее.
Типовой файл дан ниже.
# batchparms file for the brewery
# site | size |max |batcher |muncher |transport
#-------------+--------+-------+---------+-----------+-----------
/default/ 100000 22 batcher compcun viauux
swim 10000 10 batcher nocomp viauux
18.6 Устаревшие Новости
В Bnews, устаревание выполняться программой называемой expire, которая
принимает список newsgroups как аргументы, наряду с спецификацией времени
после которого статьи должны устареть.
Иногда, Вы можете хотеть сохранять статьи из некоторых групп даже после
того, как они устарели; например, Вы могли бы хотеть сохранить программы,
зарегистрированные в comp.sources.unix. Это называется архивирование. Explist
разрешает Вам отмечать группы для архивирования.
Вход в explist похож на это:
grouplist perm times archive
Grouplist - отделенный запятой список newsgroups, к которым вход
применяется. Иерархии могут быть определены префиксом имени группы,
необязательно конкатенированным ко всем. Например, для входа,
обращающегося к всем группам ниже comp.os, Вы могли бы вводить comp.os
или comp.os.all в grouplist.
При устаревании новости из группы, имя будет проверено против всех
входов в explist в данном порядке. Первый соответствующий вход
применяется. Например, чтобы отбросить большую часть comp после четырех
дней, кроме comp.os.linux.announce, который Вы хотите хранить в течение
недели, Вы просто должны иметь вход для последнего, который определяет
семи-дневный период окончания, сопровождаемый входом для comp, который
определяет четыре дня.
Поле perm детализирует, если вход применяется к уменьшенной, или
любой группе. Оно может принимать значения m, u, или x, которые
обозначают уменьшенный, неуменьшенный, или любой тип.
Третье поле, times, обычно содержит только одиночное число. Это - число
дней после которых статьи будут устаревать, если они не были назначены,
искусственная дата окончания в поле Expires в заголовке статьи. Обратите
внимание, что это - число дней подсчитывается с поступления в ваш пункт, а
не с даты регистрации.
Поле times может, однако, быть более сложно. Это может быть комбинация
до трех чисел, отделяемых от друг друга черточкой. Первое обозначает число
дней, которые должны пройти прежде, чем статья рассматривается
кандидатом на окончание. Редко полезно использовать значение отличное от
нуля. Второе поле - вышеупомянутое заданное по умолчанию число дней
после, которых оно будет устаревать. Третья часть - число дней после которых
статья будет устаревать безоговорочно, независимо от того, имеет ли она поле
Expires или нет. Если только среднее число дано, другие два берут значения по
умолчанию. Они могут быть определены, используя специальный /bounds/
входа, который описан ниже.
Четвертое поле, archive, обозначает, должен ли newsgroup быть
заархивирован, и где. Если никакого архивирования не предназначено,
должна использоваться черточка. Иначе, Вы либо используете полное имя
пути (указывающее на каталог), или знак (@). Знак обозначает заданный по
умолчанию каталог архивов, который должен то быть дан doexpire, используя
-a флаг в командной строке. Каталог архивов должен принадлежать news.
Когда doexpire архивирует статью из, скажем comp.sources.unix, он сохраняет ее
в каталоге comp/sources/unix ниже каталога архивов, создавая его если он не
существует. Каталог архивов непосредственно, однако, не будет создан.
Имеются два специальных входа в вашем explist файле, на который doexpire
полагается. Вместо списка newsgroups, они имеют ключевые слова /bounds/ и
/expired/. Вход /bounds/ содержит значения по умолчанию для трех значений
поля времен, описанного выше.
Поле /expired/ определяет, как долго C News будет содержать строки в
файле хронологии. Это необходимо, потому что C News не будет удалять
строку из файла хронологии, если соответствующая статья устарела, но будет
содержать ее в случае, если дубликат должен прибыть после этой даты.
Простой explist файл с довольно плотными интервалами истечения
воспроизведен ниже:
# keep history lines for two weeks. Nobody gets more than three months
/expired/ x 14 -
/bounds/ x 0-1-90 -
# groups we want to keep longer than the rest
comp.os.linux.announce m 10 -
comp.os.linux x 5 -
alt.folklore.computers u 10 -
rec.humor.oracle m 10 -
soc.feminism m 10 -
# Archive *.sources groups
comp.sources,alt.sources x 5 @
# defaults for tech groups
comp,sci x 7 -
# enough for a long weekend
misc,talk x 4 -
# throw away junk quickly
junk x 1 -
# control messages are of scant interest, too
control x 1 -
# catch-all entry for the rest of it
all x 2 -
С устареванием в C News, имеется ряд потенциальных проблем при
чистке. Например, ваш newsreader мог бы полагаться на третье поле файла
active, который содержит число самой низкой интерактивной статьи. При
истечении статьи, C News не модифицирует это поле. Если Вы хотите чтобы
это поле, представляло реальную ситуацию, Вы должны выполнить
программу, называемую updatemiin после каждого выполнения doexpire.
Назад | Содержание | Вперед