копии старых регистрационных файлов сохраняются в log.o, log.oo, и т.д. errlog Это - файл регистрации всех сообщений об ошибках, созданных C News. Он не включают плохие статьи, и т.д. Этот файл будет отправлен по почте к newsmaster (usenet по умолчанию) автоматически newsdaily, если он не-пуст. Errlog очищается newsdaily. Старые копии сохраняются в errlog.o и т. д. batchlog Он регистрирует все выполнения sendbatches. Он обычно мало интересен. Он также зависит от newsdaily. watchtime Это - пустой файл, создаваемый каждый раз при выполнении newswatch. 18.8 Сообщения Управления Usenet протокол новостей знает специальный класс статей, которые вызывают некоторые ответы или действия системы новостей. Они называются сообщениями управления. Они распознаются присутствием поля Control в заголовке статьи, которое содержит имя операции управления, которую нужно выполнить. Имеются отдельные типы этих операций, которые обрабатываются командами оболочки, расположенными в /usr/lib/news/ctl. Большинство из них выполнит их действие автоматически во время обработки статьи C News, без того, чтобы уведомить newsmaster. По умолчанию, только checkgroups сообщения будут вручены newsmaster, но Вы можете изменять это, редактируя команды. 18.8.1 Сообщение Отмена Наиболее широко известное сообщение - отмена, которой пользователь - 327 - может отменять статью, посланную ранее. Оно действительно удаляет статью из каталогов spool, если она существует. Сообщение отмены будет послано к всем абонентам, которые получают новости из таких групп, независимо от того, была ли статья замечена уже или нет. Нужно принять во внимание возможность того, что первоначальная статья была отсрочена несмотря на сообщение сокращения. Некоторые системы новостей позволяют пользователям отменять сообщения другого человека; это - конечно определенный минус. 18.8.2 Newgroup и rmgroup Два сообщения имеют дело с созданием или удалением newsgroups - это newgroup и rmgroup. Newsgroups ниже " обычной " иерархии могут быть созданы только после того, как обсуждение и утверждение было проведено среди Usenet читателей. Правила, обращающиеся к alt иерархии учитывают что кое-что близко к анархии. Для подробной информации см. регулярные регистрации в news.announce.newusers и news.announce.newgroups. Никогда не посылайте newgroup или rmgroup сообщение самостоятельно, если Вы определенно не знаете, что Вам позволено. 18.8.3 Checkgroups Сообщение Checkgroups сообщения посылаются администраторами новостей, чтобы для всех абонентов внутри сети синхронизировать их файлы active с фактами Usenet. Например, коммерческие поставщики услуг Internet могли бы выпускать такое сообщение к абоненту их заказчиков. Один раз в месяц "оффициальное" checkgroups сообщение для главных иерархий зарегистрировано в comp.announce.newgroups их регулятором. Однако, оно зарегистрировано, как обычная статья, а не как управляющее сообщение. Чтобы выполнить операцию checkgroups, сохраните эту статью в файл, скажем /tmp/check, удалите все до начала сообщения управления непосредственно, и передайте это к checkgroups команде, используя следующую команду: # su news -c "/usr/lib/news/bin/ctl/checkgroups" < /tmp/check Это модифицирует ваш newsgroups файл, добавляя группы, перечисленные в localgroups. Старый newsgroups файл будет перемещаться в newsgroups.bac. Обратите внимание, что регистрация сообщения локально редко будет - 328 - работать, потому что inews отказывается принимать это как статью. Если C News находит несоответствия между списком checkgroups и файлом active, это произведет список команд, которые модернизируют ваш пункт, и сообщат это администратору новостей. Вывод обычно походит на это: From news Sun Jan 30 16:18:11 1994 Date: Sun, 30 Jan 94 16:18 MET From: news (News Subsystem) To: usenet Subject: Problems with your active file Следующие newsgroups не допустимы и должны быть удалены. alt.ascii-art bionet.molbio.gene-org comp.windows.x.intrisics de.answers Вы можете делать это, выполняя команды: /usr/lib/news/bin/maint/delgroup alt.ascii-art /usr/lib/news/bin/maint/delgroup bionet.molbio.gene-org /usr/lib/news/bin/maint/delgroup comp.windows.x.intrisics /usr/lib/news/bin/maint/delgroup de.answers Следующие newsgroups отсутствовали. comp.binaries.cbm comp.databases.rdb comp.os.geos comp.os.qnx comp.unix.user-friendly misc.legal.moderated news.newsites soc.culture.scientists talk.politics.crypto talk.politics.tibet - 329 - Когда Вы получаете такое сообщение от вашей системы новостей, не отбрасывайте его вслепую. В зависимости от того, кто послал checkgroups сообщение, оно может испытывать недостаток нескольких групп или даже всех иерархий; так что Вы должны быть осторожны относительно удаления любых групп. Если Вы находите группы, перечисленные как отсутствующие и Вы хотите иметь их в вашем пункте, Вы должны добавить их, используя addgroup команду. Сохраните список отсутствующих групп в файле и передайте его следующей небольшой команде: #!/bin/sh cd /usr/lib/news while read group; do if grep -si "^$group[[:space:]].*moderated" newsgroup; then mod=m else mod=y fi /usr/lib/news/bin/maint/addgroup $group $mod done 18.8.4 sendsys, version, и senduuname В заключение, имеются три сообщения, которые могут использоваться, чтобы выяснить относительно топологии сети. Это - sendsys, version, и senduu- имя. Они заставляют C News возвращать отправителю файл sys, версию программного обеспечения, и вывод uuname (1), соответственно. C News - очень лаконично относительно сообщения version; оно возвращает просто неукрашенное "C". Снова, Вы никогда не должны выдавать такое сообщение, если Вы не уверенны, что это не может повредить вашей (региональной) сети. Ответы sendsys сообщениям могут быстро положить сеть UUCP. 18.9 C News в NFS Среде Простой способ распределять новости внутри локальной сети состоит в том, чтобы хранить все новости на центральном host, и экспортировать релевантные каталоги через NFS, так, чтобы newsreader мог просматривать - 330 - статьи непосредственно. Преимущество этого метода над NNTP - то, что непроизводительные затраты, заключаемые в поиске и продевании нитки статей являются значительно ниже. NNTP, с другой стороны, побеждает в разнородной сети, где оборудование изменяется широко среди главных ЭВМ, или где пользователи не имеют эквивалентных прав на машине сервера. При использовании NFS, статьи, зарегистрированные на локальном host должны быть посланы к центральной машине. Также, Вы могли бы хотеть защищать вашу область spool новостей, экспортируя их только для чтения, что требует пересылки к центральной машине, также. C News обрабатывает это очевидно. Когда Вы отправляете по почте статью, ваш newsreader обычно вызывает inews, чтобы ввести статью в систему новостей. Эта команда выполняет ряд проверок на статье, завершает заголовок, и проверяет файловый сервер в /usr/lib/news. Если этот файл существует и содержит hostname отличный от имени локального host, inews вызывается на тот host сервер через rsh. Так как inews команда использует ряд двоичных команд и файлов поддержки от C News, Вы должны также иметь C News, установленный локально, или устанавливать программное обеспечение новостей из сервера. Чтобы rsh вызов работал правильно, каждый пользователь должен иметь эквивалентный вход на систему сервера, то есть вход котороый она может регистрировать без запроса о пароле. Удостоверитесь, что hostname, данный в сервере буквально соответствует выводу команды hostname (1) на машине сервера, иначе C News будет зацикливаться навсегда при попытке получить статью. 18.10 Инструментальные средства Сопровождения и Задачи Несмотря на сложность C News, жизнь администратора новостей может быть довольно проста, потому что C News обеспечивает Вас расширенным разнообразием инструментальных средств сопровождения. Некоторые из них предназначены, чтобы быть выполненными регулярно из cron, подобно newsdaily. Использование этих команд значительно уменьшает ежедневную заботу и подачу требований вашей установки C News. Если не установлено иначе, эти команды расположены в /usr/lib/news/bin/maint. Обратите внимание, что Вы должны стать пользователем перед вызовом этих команд. При выполнении их как супер-пользователь эти файлы могут стать недоступными C News. - 331 - newsdaily Имя уже говорит: это выполняется один раз в день. Это - важная команда, которая помогает Вам хранить регистрационные файлы малыми, сохраняя копии каждого из последних трех выполнявшихся. Она также пробует считывать любые аномалии, подобно несвежим пакетам во входящих и исходящих каталогах, регистрации в неизветных группах, и т.д. Возникающие в результате сообщения об ошибках будут отправлены по почте к newsmaster. newswatch Это - команда, которая должна быть выполнена регулярно, чтобы искать аномалии в системе новостей, один раз в час или около этого. Она предназначена обнаруживать проблемы, которые будут иметь непосредственный эффект на оперативности вашей системы новостей и отправлять по почте отчет проблемы к newsmaster. Отмечаемые вещи включают несвежие файлы блокировки, которые не удалены, автоматические входные пакеты, и недостаток дискового пространства. addgroup Добавляет группу к вашему пункту локально. Соответствующий вызов addgroup groupname y|n|m|=realgroup Второй аргумент имеет то же самое значение как флаг в файле active, что любой может отправить по почте к группе (y), что никто не может отправить по почте (n), что она уменьшена (m), или что она является специальной для другой группы (=realgroup). Вы могли бы также использовать addgroup, когда первые статьи в недавно созданной группе прибывают раньше чем сообщение управления newgroup, которое предназначено, чтобы создать ее. delgroup nозволяет Вам удалять группу локально. Вызовите это как delgroup groupname Вы все еще должны удалить статьи, которые остаются в каталоге spool. В качестве альтернативы, Вы могли бы оставлять это натуральному ходу событий (a.k.a. Expire) чтобы удалять их. addmissing Добавляет отсутствующие статьи к файлу хронологии. Выполните - 332 - эту команду, когда имеются статьи, которые, кажется, зависают навсегда. newsboot Эта команда должна быть выполнена при начальной загрузке системы. Она удаляет любые файлы блокировки, оставленные, когда обработчики новостей уничтожались при закрытии системы, и закрывает и выполняет любые пакеты, оставленные из NNTP соединений, которые были завершены при закрытии системы. newsrunning Это постоянно находится в /usr/lib/news/bin/input, и может использоваться, чтобы отключить непакетирование входящих новостей, например в течение работы. Вы можете выключить непакетирование вызовом /usr/lib/news/bin/input/newsrunning off Оно включается, используя on вместо off. 19. Описание NNTP 19.1 Введение Из-за различного сетевого используемого транспорта, NNTP обеспечивает(предусматривает) значительно отличные подходы к обмену новостей C News. NNTP замещает " Сетевой Протокол передачи Новостей '', и неспецифический пакет программ. Различные команды позволяют клиентуре отыскивать, посылать и отправлять по почте статьи. Различие между посылкой и регистрацией - то, что последний может включать статьи с незавершенной информацией заголовка. Поиск статьи может использоваться клиентурой передачи новостей также как newsreaders. Это делает NNTP превосходным средством для обеспечения доступа к новостям для клиентуры в локальной сети. NNTP также обеспечивает активый и пассивный способы передачи новостей, которые называются " pushing " и " pulling ". Выталкивание (pushing) - в основном тоже что C News ihave/sendme протокол. Клиент предлагает статью серверу через " IHAVE ", и сервер возвращает код ответа, который указывает, имеет ли он уже статью, или если она требуется. Если так, клиент посылает статью, завершенную одиночной точкой в отдельной строке. Выталкивание новостей имеет один недостаток - это вызывает тяжелую загрузку в системе сервера, так как она должна искать в базе данных - 333 - хронологий каждую одиночную статью. Противоположная методика - перемещать(pulling) новости. Клиент запрашивает список всех доступных статей из группы, которые прибыли после заданной даты. Этот запрос выполняется командой NEWNEWS. Из возвращенного списка идентичности сообщения, клиент выбирает те статьи, которые он еще не имеет, используя команду ARTICLE для каждой из них по очереди. Проблема с перемещением новостей состоит в том, что требуется плотное управление сервером, которое позволяет клиенту запрашивать группы и распределения. Например, оно должно удостовериться, что никакой конфиденциальный материал из локальных newsgroups не послан несанкционированной клиентуре. Имеется также ряд команд удобства для newsreaders, которые разрешают им отыскивать заголовок статьи и тело отдельно, или даже одиночные строки заголовка из промежутка статей. Это допускает Вам, хранить все новости относительно центрального host, со всеми пользователями сетьи, используя nntp-основанные клиентские программы для чтения и регистрации. Это - альтернатива к экспорту каталогов новостей через NFS, который описан в главе 18 .. Полная проблема NNTP состоит в том, что она позволяет хорошо осведомленному специалисту вставлять статьи в поток новостей с ложной спецификацией отправителя. Это называется новостями faking. Расширение к NNTP позволяет требовать установления подлинности пользователя для некоторых команд. Имеется ряд доступных NNTP пакетов. Один из наиболее широко известных - NNTP daemon, также известный как реализация ссылки. Первоначально, он написан Stan Barber и Phil Lapsley, чтобы иллюстрировать подробности RFC 977. Самая современная версия - nntpd-1.5.11, описана ниже. Вы можете также получить исходники и компилировать ее непосредственно. Nntpd пакет состоит из сервера и двух клиентов для перемещения и выталкивания новостей, соответственно, также как inews замены. Они живут в Bnews среде, но с небольшими дополнениями, они будут счастливы с C news, также. Однако, если Вы планируете использовать NNTP для больше чем предложения newsreaders доступа к вашему серверу новостей, реализация ссылки не есть действительно опция. Мы следовательно обсудим только NNTP daemon содержащийся в nntpd пакете, и не учтем клиентские программы. - 334 - 19.2 Установка NNTP сервера NNTP сервер называется nntpd, и может компилироваться двумя способами, в зависимости от ожидаемой загрузки на системе новостей. Не имеется никаких откомпилированных версий, из-за некоторых пункт- специфических значений по умолчанию, которые являются жестко закодированными в выполнимую программу. Вся конфигурация выполнена через макркоманду definines в common/conf.h. Nntpd может быть конфигурирован или как автономный сервер, который запускается при начальной загрузке системы из rc.inet2, или как daemon управляемый inetd. В последнем случае Вы должны иметь следующий вход в /etc/inetd.conf: nntp stream tcp nowait news /usr/etc/in.nntpd nntpd Если Вы конфигурируете nntpd как автономный, удостовертеь, что любая такая строка в inetd.conf прокомментирована. В любом случае, Вы должны удостовериться, что имеется следующая строка в /etc/services: nntp 119/tcp readnews untp # Network News Transfer Protocol Чтобы временно сохранять любые входящие статьи, и т.д, nntpd также нуждается в a каталоге .tmp в вашем spool новостей. Вы должны создать его используя # mkdir /var/spool/news/.tmp # chown news.news /var/spool/news/.tmp 19.3 Ограничение NNTP Доступа Доступ к NNTP ресурсам управляется файлом nntp access в /usr/lib/news. Строки в файле описывают права доступа, предоставленные иностранным главным ЭВМ. Каждая строка имеет следующий формат: site read|xfer|both|no post|no [!exceptgroups] Если клиент соединяется с NNTP портом, nntpd, пытается получать полностью квалифицированное имя области из адреса IP обратным поиском. - 335 - Hostname клиента и адрес IP проверены против поля site каждого входа в порядке, в котором они появляются в файле. Соответствия могут быть или частичные или точные. Если вход соответствует точно, он применяется; если соответствие частично, он применяется, только если не имеется никакого другого соответствия. Пункт может быть определен одним из следующих способов: hostname Это - полностью квалифицированное имя области host. Если оно соответствует каноническиому hostname клиента буквально, вход применяется, и все последующие входы игнорируются. IP address Это - адрес IP в точечной записи четверки. Если адрес IP клиента соответствует этому, вход применяется, а все последующие входы игнорируются. domain name Это - имя области, заданное как *.domain. Если hostname клиента соответствует имени области, вход соответствует. network name Это - имя сети как определено в /etc/networks. Если сетевое число адреса IP клиента соответствует сетевому числу, связанному с сетевым именем, вход соответствует. default Значение по умолчанию соответствует любому клиенту. Входы с более общей спецификацией пункта должны быть определены ранее. Второе и третье поле описывают права доступа, предоставленные клиенту. Второе детализирует права, чтобы отыскать новости, перемещая (read), и передавать новости, выталкивая (xfer). Третье поле предоставляет клиенту право отправить по почте статьи, то есть статьи с незавершенной информацией заголовка, которая завершена программным обеспечением новостей. Если второе поле содержит No, третье поле, игнорируется. Четвертое поле необязательно, и содержит отделенный запятой список групп, с отклоненным доступом для клиента. Пример nntp файла доступа показывается ниже: # # by default, anyone may transfer news, but not read or post - 336 - default xfer no # # public.vbrew.com offers public access via modem, we allow # them to read and post to any but the local.* groups public.vbrew.com read post !local # # all other hosts at the brewery may read and post *.vbrew.com read post 19.4 NNTP Разрешение При печати прописными буквами лексем(маркеров) доступа подобно xfer или read в nntp access файл, nntpd требует разрешения от клиента для соответственных операций. Например, при определении права Xfer или XFER, nntpd не будет допускать клиентские статьи к вашему пункту, если он не передает разрешение. Процедура разрешения выполнена посредством новой команды NNTP, именованной AUTHINFO. При использовании этой команды, клиент передает имя пользователя и пароль к NNTP серверу. Nntpd проверит правильность их, проверяя их против базы данных /etc/passwd, и проверит, что пользователь принадлежит группе nntp. Текущая реализация NNTP разрешения только экспериментальна, и не была выполнена очень переносимой. Результат - то, что это работает только с базами данных паролей с простым стилем; теневые пароли не будут распознаны. 19.5 Nntpd Взаимодействие с C News При получении статьи, nntpd должен приписать ее к подсистеме новостей. В зависимости от того, было ли это получено в результате команды IHAVE или POST, статья вручена rnews или inews, соответственно. Вместо того, чтобы вызывать rnews, Вы можете также конфигурировать rnews (во времени компиляции) пакетировать входящие статьи и перемещать возникающие в результате пакеты в /var/spool/news/in.coming, где они остаются для relaynews, чтобы подбирать их в следующей выполненной очереди. Чтобы быть способным правильно выполнить ihave/sendme протокол, nntpd должен быть способен обратиться к файлу хронологии. Во времени компиляции, Вы следовательно должны удостовериться, что путь установлен - 337 - правильно. Вы должны также удостовериться, что C news и nntpd договариваются о формате вашего файла хронологии. C news использует dbm хеш-функции, чтобы обратиться к нему; однако, имеется некоторое число отличных и немного несовместимых реализаций dbm библиотеки. Если C news был связан с различной dbm библиотекой чем Вы, имеете в вашем стандарте libc, Вы должны линковать nntpd с этой библиотекой, также. Типичный признак того что nntpd и C news не соглашаются относительно формата базы данных - сообщения об ошибках в файле регистрации системы, что nntpd не может открыть его правильно, или двойные статьи, полученные через NNTP. Хороший тест должен выбрать статью из вашей области spool, сделать telnet к nntp порту, и предлагать, это к nntpd как показано в примере ниже. Конечно, Вы должны заменить на ID-сообщение статьи, которую Вы хотите передать к nntpd снова. $ telnet localhost nntp Trying 127.0.0.1... Connected to loalhost Escape characters is '^]'. 201 vstout NNTP[auth] server version 1.5.11t (16 November 1991) ready at Sun Feb 6 16:02:32 1194 (no posting) IHAVE 435 Got it. QUIT Этот диалог показывает соответствующую реакцию nntpd; сообщение "Got it" сообщает Вам, что уже имеется эта статья. Если Вы получаете сообщение "335 Ok" взамен, поиск в файле хронологии, потерпел неудачу по некоторым причинам. Завершите диалог печатая Ctrl-D. Вы можете проверять, что шло неправильно, проверяя файл регистрации системы; nntpd регистрирует все виды сообщений в syslog. Несовместимая dbm библиотека обычно проявляется в сообщении, жалующемся что dbminit потерпел неудачу. 20. Конфигурация Newsreader Newsreaders предназначены, чтобы предложить функциональные возможности, которые позволяют пользователю обращаться к функциям системы новостей легко, подобно регистрации статей, или просматривать содержимое newsgroup удобным способом. Качество этого интерфейса предмет - 338 - бесконечных споров. Имеется пара newsreaders, которые были пренесены на Linux. Ниже я буду описывать базисную установку для трех наиболее популярных, а именно tin, trn, и nn. Один из наиболее эффективных newsreaders это $ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more Это - способ, которым Unix читает новости. Большая часть newsreaders, однако, является намного более сложной. Они обычно предлагают полноэкранный интерфейс с отдельными уровнями для отображения всех групп, на которые пользователь подписался, для отображения краткого обзора всех статей в одной группе. И для индивидуальных статей. В уровне newsgroup, большинство newsreaders отображает список статей, показывая их подчиненную строку, и автора. В больших группах, это невозможно для пользователя, чтобы следить за статьями в отношении друг друга, хотя возможно идентифицировать ответы на более ранние статьи. Ответ обычно повторяет первоначальную тему статьи, начинаясь с " " Re: ''. Здесь, мы не будем детализировать то, как интерфейсы пользователя сформированы. Все newsreaders, в настоящее время доступные для Linux имеют хорошую функцию справки, так что Вы должны исследовать дальше сами. В следующем, мы будем иметь дело только с административными задачами. Большинство их касается создания баз данных и учет. 20.1 Конфигурация tin Наиболее универсальный newsreader - tin. Он написан Iain Lea и - свободно построен на более старом newsreader, именованном ТАСС. На 486DX50, он берет приблизительно 30 секунд, чтобы найти 1000 статей при чтении непосредственно с диска. Над NNTP к загруженному серверу новостей, это было бы что-нибудь более 5 минут. Вы можете уточнить это, регулярно модифицируя ваш индексный файл с -u опцией, или вызывая tin с - U опцией. Обычно, tin формирует дамп баз данных в исходном каталоге пользователя ниже .tin/index. Это может однако быть дорогостояще в терминах ресурсов, так чтобы Вы хотели хранить одиночную копию их в центральном расположении. Это может быть достигнуто, делая tin setuid к новостям, например. Тогда tin - 339 - будет хранить, все подходящие базы данных ниже /var/spool/news/.index. Для любого файла access или Escape оболочки, это переустановит эффективный универсальный идентификатор к реальному универсальному идентификатору пользователя, который вызвал это. Версия tin, включенного в некоторые распределения Linux не имеет никакой компилируемой поддержки NNTP. Когда вызывается как rtin или с -r опцией, tin пробует соединяться с NNTP сервером, заданным в /etc/nntpserver файле или в NNTPSERVER переменной среды. Nntpserver файл просто содержит имя сервера в одиночной строке. 20.2 Trn Конфигурация Trn - преемник более старого newsreader, а именно rn (который означает чтение новостей). " T " в имени замещает "связный". Он написан Wayne Davidson. В отличие от tin, trn не имеет никакого средства для производства базы данных поиска во время выполнения. Взамен, он использует базу подготовленную программой, называемой mthreads, которая должна вызваться регулярно из cron, чтобы модифицировать индексные файлы. Не выполнение mthreads, однако, не означает, что Вы не можете обращаться к новым статьям, это только означает что Вы будете иметь все эти " Novell выкупают Linix!! " статьи, рассеянные в вашем меню выбора статей, вместо одиночного экземпляра (который Вы можете легко пропустить). Чтобы включить отсеивание для определенных newsgroups, mthreads вызывается со списком newsgroups в командной строке. Список сделан как в файле sys: mthreads comp,rec,!rec.games.go Даст возможность отсеиванию для все comp и rec, кроме rec.games.go (люди, кто играют, идут, не нуждаются в причудливых выборках). После этого, Вы просто вызываете это без любой опции вообще, чтобы заставить это обработать любые недавно прибывшие статьи. Отсеивание всех групп, найденных в вашем файле active может быть включено, вызывая mthreads со списком группы. Если вы получаете новости в течение ночи, Вы будет обычно выполнять mthreads один раз утром, но Вы можете также, делать так более часто если необходимо. Абоненты, которые имеют очень тяжелый траффик, могут хотеть - 340 - выполнять mthreads в daemon режиме. Когда она начинается при начальной загрузке, используя -d опцию, она помещает себя в фон, и пробуждается каждые 10 минут, чтобы проверить, имеются ли любые недавно прибытые статьи, и просеивает их. Чтобы выполнять mthreads в daemon режиме, поместите следующую строку в вашу rc.news команду: /usr/local/bin/rn/mthreads -deav -a опция заставит mthread автоматически включить отсеивание для новых групп, поскольку они созданы; -v дает возможность подробным регистрационным сообщениям к файлу регистрации mthreads, mt.log в каталоге, где Вы имеете установленный trn. Старые статьи, которые больше не доступны, должны быть удалены из индексных файлов регулярно. По умолчанию, только статьи, чье число является ниже метки ожидания, будут удалены. Статьи выше этого числа, которые устарели (потому что самая старая статья была назначена на длинную дату истечения полем заголовка Expires) могут быть удалены, давая mthreads -e опцию, чтобы вынудить " расширенную " чистку. Когда mthreads выполняется в daemon режиме, -e опция заставит такое расширенное истечение выполнять один раз в день, в полночь. 20.3 Конфигурация nn Nn написал Kim F. Storm, он утверждает, что цель newsreader не состоит в том, чтобы читать новости. Имя расшифровывается как " Нет Новостей '', и девиз - "Отсутствие новостей - хорошая новость. А nn лучше." Чтобы достигать этой честолюбивой цели, nn поставляется с большим выбором инструментальных средств сопровождения, которые не только позволяют проводить отсеивание, но также протяженные проверки на непротиворечивости этих баз данных, учет, сбор статистики использования, и ограничений доступа. Имеется также программа администрации, называемая nnadmin, который позволяет Вам выполнять эти задачи в интерактивном режиме. Nn диспетчер базы данных, называется nnmaster. Он обычно выполняется как daemon, начинается из команды rc.inet2 или rc.news. Он вызывается как /usr/local/lib/nn/nnmaster -l -r -C - 341 - Это дает возможность отсеиванию для всех newsgroups, представленных в вашем файле active. Также, Вы можете вызывать nnmaster периодически из cron, давая ему список групп. Этот список очень похож на список в файле sys, за исключением того, что он использует пробелы вместо запятых. Вместо группы fake для всех, пустой аргумент "" должен использоваться, чтобы обозначить все группы. Типовой вызов # /usr/local/lib/nn/nnmaster !rec.games.go rec comp Обратите внимание, что порядок значителен: крайная левая спецификация группы, которая соответствует, всегда выигрывает. Таким образом, если мы поместили !rec.games.go после rec, все статьи из этой группы отсеились. Nn предлагает отдельные методы удалить устаревшие статьи из баз данных. Первое, чтобы модифицировать базу данных, развертывая каталоги групп новостей и отбрасывая входы, чья соответствующая статья является больше не доступной. Это - заданная по умолчанию операция, полученная вызовом nnmaster с -E опцией. Приемлемо быстро, если вы не делаете это через NNTP. Метод 2 ведет себя точно подобно заданному по умолчанию устареванию, выполненному mthreads, в котором она только удаляет те входы, которые относятся к статьям, чье число ниже метки ожидания в файле active. Это можно допускать, используя -e опцию. В заключение, третья стратегия должна отбросить всю базу данных и переоформить все статьи. Это может быть выполнено, давая -E3 к nnmaster. Список групп, которые устарели дется -F опцией в том же самом режиме как выше. Однако, если Вы имеете nnmaster, выполняющийся как daemon, Вы должны уничтожить его (используя -k) прежде, чем может произойти устаревание, и перезапускать его с первоначальными опциями. Таким образом соответствующая команда, чтобы выполнить expire на всех группах, использующих метод 1: # nnmaster -kF "" # nnmaster -lrC Имеются много больше флагов, которые могут использоваться, чтобы подстроить поведение nn. Если Вы волнуетесь относительно удаления плохих статей или сборников статей, читайте nnmaster страницу руководства. - 342 - Nnmaster полагается на файл, именованный GROUPS, который расположен в /usr/local/lib/nn. Если он не существует первоначально, он будет создан. Для каждой newsgroup, он содержит строку, которая начинается с имени группы, необязательно сопровождаемого временной меткой, и флагами. Вы можете редактировать эти флаги, чтобы дать возможность некоторому поведению для рассматриваемой группы, но Вы не можете изменять порядок, в котором группы появляются. Флаги и их эффекты детализированы в nnmaster странице руководства, также. APPENDIX A Null Кабель Принтера для PLIP Чтобы сделать Кабель Принтера для использования с PLIP соединением, Вы нуждаетесь в двух соединителях с 25 штырьками (называемых DB-25) и некотором кабеле с 11 проводниками. Кабель должен быть длиной 15 метров. Если Вы рассматриваете коннектор, Вы должны видеть крошечные числа в основе каждого штырька. Для кабеля Принтера, Вы должны соединить следующие штырьки обоих разьемов друг с другом: +-------------------------------+ |D0 2 15 ERROR | |D1 3 13 SLCT | |D2 4 12 PAPOUT | |D3 5 10 ACK | |D4 6 11 BUSY | |GROUND 25 25 GROUND | |ERROR 15 2 D0 | |SLCT 13 3 D1 | |PAPOUT 12 4 D2 | |ACK 10 5 D3 | |BUSY 11 6 D4 | +-------------------------------+ Все остающиеся штырьки остаются не связанными. Если кабель экранирован, экран должен быть соединен с DB-25 металлической оболочкой на одном конце. - 343 - APPENDIX B Примеры smail Файлов Конфигурации Этот раздел показывает типовые файлы конфигурации для пункта UUCP в локальной вычислительной сети. Они основаны на типовых файлах, включенных в исходное распределение smail-3.1.28. Хотя я делаю слабую попытку объяснить, как эти файлы работают. Первый показанный файл - файл программ маршрутизации, который описывает набор программ маршрутизации для smail. Когда smail должен послать сообщение к данному адресу, он вручает адрес всем программам маршрутизации по очереди, пока одна из них не найдет соответствие. Соответствие здесь означает что программа маршрутизации находит host адресата в базе данных, буть это файл paths, /etc/hosts, или любой механизм маршрутизации. Входы в smail файлах конфигурации всегда начинаются с уникального имени, идентифицирующего программу маршрутизации, транспорт, или руководитель. Они сопровождаются списком атрибутов, которые определяют поведение. Этот список состоит из набора глобальных атрибутов, типа драйвера, и частных атрибутов, которые понятны только этому специфическому драйверу. Атрибуты отделяются запятыми, в то время как наборы глобальных и частных атрибутов отделяются от друг друга, используя точку с запятой. В smail, Вы можете определять две программы маршрутизации в файле программ маршрутизации, обе из которых используют pathalias драйвер. Этот драйвер ищет hostnames в pathalias базе данных. Он ожидает имя файла в частном атрибуте: # # pathalias database for intra-domain routing domain paths: driver=pathalias, # look up host in a paths file transport=uux; # if matched, deliver over UUCP file=paths/domain, # file is /usr/lib/smail/paths/domain proto=lsearch, # file is unsorted (linear search) optional, # ignore if the file does not exist required=vbrew.com, # look up only *.vbrew.com hosts # - 344 - # pathalias database for routing to hosts outside our domain world paths: driver=pathalias, # look up host in a paths file transport=uux; # if matched, deliver over UUCP file=paths/world, # file is /usr/lib/smail/paths/world proto=bsearch, # file is sorted with sort(1) optional, # ignore if the file does not exist -required, # no required domains domain=uucp, # strip ending ".uucp" before searching Второй атрибут глобальной переменной, данный в каждом из двух входов программ маршрутизации выше определяет транспорт, который должен использоваться, когда программа маршрутизации обрабатывает адрес. В нашем случае, сообщение будет передано используя uux транспорт. Транспорты определены в файле transports, который объяснсется ниже. Вы можете подстраивать, которым транспортом сообщение будет передаваться, если Вы определяете mathod файл вместо атрибута transports. Файлы методов обеспечивают отображение целевого hostnames на transports. Мы не будем иметь дело с ними здесь. Следующий файл программ маршрутизации определяет программы маршрутизации для локальной вычислительной сети, которые сделают запрос библиотеки решающих устройств. На host Internet, однако, Вы хотели бы использовать программу маршрутизации, которая обрабатывает записи MX. Вы должны следовательно разкомментировать альтернативную inet программу маршрутизации, которая использует встроенный драйвер BIND smail. В среде, которая смешивает UUCP и TCP/IP, Вы можете сталкиваться с проблемой, что Вы имеете главные ЭВМ в вашем файле /etc/hosts, с которыми Вы имеете только случайный SLIP или PPP контакт. Обычно, Вы все еще хотели бы посылать любую почту для них по UUCP. Чтобы предотвращать inet драйвер главных ЭВМ от соответствия этих главных ЭВМ, Вы должны поместить их в файл paths/force. Это - другая база данных pathalias-стилей, она проверяется прежде чем smail делает запрос решающего устройства. # A sample /usr/lib/smail/routers file # # force - force UUCP delivery to certain hosts, even when # they are in our /etc/hosts - 345 - force: driver=pathalias, # look up host in a paths file transport=uux; # if matched, deliver over UUCP file=paths/force, # file is /usr/lib/smail/paths/force optional, # ignore if the file does not exist proto=lsearch, # file is unsorted (linear search) -required, # no required domains domain=uucp, # strip ending ".uucp" before searching # inet addrs - match domain literals containing literal # IP addresses, such as in janet@[191.72.2.1] inet addrs: driver=gethostbyaddr, # driver to match IP domain literals transport=smtp; # deliver using SMTP over TCP/IP fail if error, # fail if address is malformed check for local, # deliver directly if host is ourself # inet hosts - match hostnames with gethostbyname(3N) # Comment this out if you wish to use the BIND version instead. inet hosts: driver=gethostbyname, # match hosts with the library function transport=smtp; # use default SMTP -required, # no required domains -domain, # no defined domain suffixes -only local domain, # don't restrict to defined domains # inet hosts - alternate version using BIND to access the DNS #inet hosts: # driver=bind, # use built-in BIND driver # transport=smtp; # use TCP/IP SMTP for delivery # # defnames, # use standard domain searching # defer no connect, # try again if the nameserver is down # -local mx okay, # fail (don't pass through) an MX # # to the local host # # pathalias database for intra-domain routing domain paths: driver=pathalias, # look up host in a paths file transport=uux; # if matched, deliver over UUCP file=paths/domain, # file is /usr/lib/smail/paths/domain - 346 - proto=lsearch, # file is unsorted (linear search) optional, # ignore if the file does not exist required=vbrew.com, # look up only *.vbrew.com hosts # # pathalias database for routing to hosts outside our domain world paths: driver=pathalias, # look up host in a paths file transport=uux; # if matched, deliver over UUCP file=paths/world, # file is /usr/lib/smail/paths/world proto=bsearch, # file is sorted with sort(1) optional, # ignore if the file does not exist -required, # no required domains domain=uucp, # strip ending ".uucp" before searching # smart host - a partically specified smarthost director # If the smart path attribute is not defined in # /usr/lib/smail/config, this router is ignored. # The transport attribute is overridden by the global # smart transport variable smart host: driver=smarthost, # special-case driver transport=uux; # by default deliver over UUCP -path, # use smart path config file variable Обработка почты для локальных адресов конфигурирована в файле directors. Это сделано точно так же как файл программ маршрутизации, со списком входов, которые определяют руководителя каждой. Руководители не посылают сообщение, они просто выполняют всю переадресацию, которая является возможной, например через aliases, пересылку почты, и т.п.. При поставке почты к локальному адресу, типа janet, smail передает имя usr всем directors по очереди. Если director соответствует, это или определяет транспорт, которым сообщение должно быть передано (например, к mailbox файлу пользователя), или генерирует новый адрес (например, после специальной оценки). Из-за вкл