следующий вход в mailertable: UUCP-A,backdoor backwood.org 16.6.2 Почта Для Неконфигурированного Отдаленного Абонена Часто, главные ЭВМ Internet будут иметь проблему при получении почты в не-конфигурированном отдаленном абоненте. Имеются отдельные варианты этой проблемы, но общий признак - почта передается отдаленной системой или никогда добирается туда вообще. Эти проблемы могут помещать локального администратора системы в плохую позицию, потому что ваши пользователи вообще не заботятся о том что Вы лично не управляете каждой системой во всем мире (или не знаете, как получить отдаленного администратора, чтобы установить проблему). Они только знают, что их почта не проходила желательному получателю на другом конце и что вы являетесь вероятным виновным человеком. Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях, убедитесь, что ваш пункт способен связаться с не-конфигурированным отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в отдаленном пункте, чтобы установить их конфигурацию своевременным способом, Вы имеет две опции. + Вообще возможно вынудить послать почту в отдаленную систему успешно, хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном конце могут не работать ..., но то это - проблема отдаленного администратора. Вы можете устранить плохие заголовки в конверте на ваших исходящих сообщениях только используя вход domaintable для их области или host, что приводит к правке недопустимой информации, при выходе почты из вашего пункта: braindead.correct.domain.com braindead.wrong.domain.com - 307 - Знак ! в 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, с которым Вы непосредственно соединены. Если отдаленная система имеет полностью - 308 - квалифицированное имя области, Вы может добавить вход в 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 - 309 - Если Вы используете 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. Смотрите в каталоге - 310 - 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, Во всяком случае? - 311 - Одно из наиболее поразительных предложений относительно 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 в файл хронологии, в котором проверяются все прибывающие статьи. - 312 - Явное число статей обычно требует, чтобы к вышеупомянутой схеме были сделаны уточнения. На сетях 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. - 313 - Для каждой статьи, команда 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 ... - 314 - 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. Теперь, Вы готовы получать новости. Обратите внимание, что Вы не - 315 - должны создавать любые каталоги отличные от показанных выше, потому что каждый раз когда 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 для всех групп, чьи имена начинаются с этого - 316 - префикса), необязательно сопровождаемый ключевым словом 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 - 317 - файлов требуются, чтобы дать возможность 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 ниже, с которого Вы могли бы скопировать то, в чем Вы нуждаетесь. - 318 - # 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 Эта группа была заблокирована локально. Это случается иногда, когда - 319 - администраторы новостей (или их старшие) закрывают статьи, зарегистрированные в некоторых группах. Статьи, полученные для этой группы не сохранены локально, хотя они посланы к абонентам, которые запрашивают их. 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 сообщением, которое нужно использовать для распаковки. Стандартное средство сжатия - упаковщик, который отмечен - 320 - #! 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 файл в вашем распределении, который содержит приемлемый заданный по умолчанию вход, так что имеется хорошая возможность не изменять файл. На - 321 - всякий случай, мы описываем формат. Каждая строка состоит из шести полей, отделяемых пробелами или метками табуляции: 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, удаляя все последующее, включая первую точку или - 322 - наклонную черту вправо. Если вход был /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 - 323 - или 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/ содержит значения по умолчанию для трех значений - 324 - поля времен, описанного выше. Поле /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. 18.7 Разнообразные Файлы - 325 - Имеется ряд файлов, которые управляют поведением C News, но не существенны для функционирования. Все они постоянно находятся в /usr/lib/news. Мы опишем их кратко. newsgroups Это - файл дополняющий active, который содержит список имен newsgroup, наряду с кратким описанием основного предмета. Этот файл автоматически модифицируется, когда C News получает сообщение управления checknews (см. раздел 18.8). localgroups если Вы имеете ряд локальных групп, таких что Вы не хотите, чтобы C News жаловался относительно них, каждый раз когда Вы получаете checknews сообщение, поместите их имена и описания в этом файле, точно так же как они появились бы в newsgroups. mailpaths Этот файл содержит адрес регулятора для каждой уменьшенной группы. Каждая строка содержит имя группы, сопровождаемое адресом email регулятора (отделеные меткой табуляции). Два специальных входа обеспечиваются как значение по умолчанию. Они базовые и межсетевые. Оба обеспечиваются --- в записи bang-path --- путем к самому близкому базовому пункту, и пункту, который понимает RFC 822 адреса (user@host). Вы не будете должны изменять межсетевой вход, если Вы имеете smail или sendmail, потому что они понимают RFC 822 - адресацию. Базовый вход используется всякий раз, когда пользователь отправляет по почте к уменьшенной группе, чей регулятор не перечислен явно. Если имя newsgroup -- alt.sewer, и базовый вход содержит path!%s, C News отправит по почте статью к path!alt-sewer, надеясь, что базовая машина способна передать статью. Чтобы выяснить который путь использовать, спросите администрацию новостей в пункте, который передает Вам. Вы можете также использовать uunet.uu.net!%s. distributions Этот файл не файл C News, но он используются некоторыми newsreaders, и nntpd. Он содержит список распределений, распознанных вашим пунктом, и описанием (встроенных) возможностей. Например, Виртуальный Пивоваренный завод имеет следующий файл: world everywhere in the world - 326 - local Only local to this site nl Netherlands only mugnet MUGNET only fr France only de Germany only brewery Virtual Brewery only log Этот файл, содержит файл регистрации всех действий C News. Он вызывается регулярно, выполняя newsdaily;