Конфигурация  nn

      Nn написал Kim F. Storm, он утверждает, что цель newsreader не состоит в том, чтобы читать новости. Имя расшифровывается как " Нет Новостей '', и девиз - "Отсутствие новостей - хорошая новость. А nn лучше."
Чтобы достигать этой честолюбивой цели, nn поставляется с большим выбором инструментальных средств сопровождения, которые не только позволяют проводить отсеивание, но также протяженные проверки на непротиворечивости этих баз данных, учет, сбор статистики использования, и ограничений доступа. Имеется также программа администрации, называемая
nnadmin, который позволяет Вам выполнять эти задачи в интерактивном режиме.
Nn диспетчер базы данных,  называется nnmaster. Он обычно выполняя ется как daemon, начинается из команды rc.inet2 или rc.news. Он вызывается как
/usr/local/lib/nn/nnmaster -l -r -C
Это дает возможность отсеиванию для всех 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 страницу руководства.      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 металлической оболочкой на одном конце.
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
# 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
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
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 файлу пользователя), или генерирует новый адрес (например, после специальной оценки).
Из-за включаемых проблем защиты, directors обычно делает множество проверок того, могут ли файлы которые они используют быть скомпрометированы или нет. Адреса, полученные несколько сомнительным способом (например от world -перезаписываемый файл aliases) помечены как небезопасные. Некоторые транспортные драйверы отвергнут такие адреса, например транспорт, который передает сообщение файлу.
Кроме этого, smail также связывает пользователя с каждым адресом. Любая запись или операции чтения выполняется как пользователь. Для получения в, скажем mailbox janet, адрес конечно связан с janet.
Другие адреса, типа тех что получены из файла aliases, имеют других пользователей, связанных с ними, например, пользователь nobody.    Для подробностей этих возможностей, пожалуйста обратитесь к smail manpage.

      # A sample /usr/lib/smail/directors file
# aliasinclude - expand ":include:filename" addresses produced
# by alias files
aliasinclude:
driver=aliasinclude,      # use this special-case driver
nobody;                   # access file as nobody user if unsecure
copysecure,               # get permissions from alias director
copyowners,               # get owners from alias director
# forwardinclude - expand ":include:filename" addrs produced
# by forward files
forwardinclude:
driver=forwardinclude,    # use this special-case driver
nobody;                   # access file as nobody user if unsecure
checkpath,                # check path accessibility
copysecure,               # get perms from forwarding director
copyowners,               # get owners from forwarding director
# aliases - search for alias expansions stored in a database
aliases:
driver=aliasfile,         # general-purpose aliasing director
-nobody,                  # all addresses are associated
# with nobody by default anyway sender okay,
# don't remove sender from expansions
owner=owner-$user;        # problems go to an owner address
file=/usr/lib/aliases,    # default: sendmail compatible
modemask=002,             # should not be globally writable
optional,                 # ignore if file does not exist
proto=lsearch,            # unsorted ASCII file
# dotforward - expand     .forward files in user home directories
dotforward:
driver=forwardfile,       # general-purpose forwarding director
owner=real-$user,         # problems go to the user's mailbox
nobody,                   # use nobody user, if unsecure
sender okay;              # sender never removed from expansion
file=~/.forward,          # .forward file in home directories
checkowner,               # the user can own this file
owners=root,              # or root can own the file
modemask=002,             # it should not be globally writable
caution=0-10:uucp:daemon,
# don't run things as root or daemons
# be extra careful of remotely accessible home directories
unsecure="~ftp:~uucp:~nuucp:/tmp:/usr/tmp",
# forwardto - expand a "Forward to " line at the top of
# the user's mailbox file
forwardto:
driver=forwardfile,
owner=Postmaster,         # errors go to Postmaster
nobody,                   # use nobody user, if unsecure
sender okay;              # don't remove sender from expansion
file=/var/spool/mail/${lc:user},
# location of user's mailbox forwardto,
# enable "Forward to " check
checkowner,               # the user can own this file
owners=root,              # or root can own the file
modemask=0002,            # under System V, group mail can write
caution=0-10:uucp:daemon, # don't run things as root or daemons
# user - match users on the
# local host with delivery to their mailboxes user:
driver=user;              # driver to match usernames
transport=local,          # local transport goes to mailboxes
# real user - match usernames when prefixed with the string "real-"
real user:
driver=user;              # driver to match usernames
transport=local,          # local transport goes to mailboxes
prefix="real-",           # for example, match real-root
# lists - expand mailing lists stored below /usr/lib/smail/lists
lists:  driver=forwardfile,
caution,                  # flag all addresses with caution
nobody,                   # and then associate the nobody user
sender okay,              # do NOT remove the sender
owner=owner-$user;        # the list owner
# map the name of the mailing list to lower case
file=lists/${lc:user},

      После успешно маршрутизации или направления сообщения, smail вручает сообщение транспорту, заданному программой маршрутизации или director, который  соответствовал(согласовал) адресу. Эти transports определен в файле transports. Снова, транспорт определен набором глобальных и частных опций. Наиболее важная опция, определенная каждым входом - драйвер, который обрабатывает транспорт, например драйвер трубопровода, который вызывает команду, заданную в cmd атрибуте. Кроме этого, имеется число глобальных атрибутов, которые  транспорт может использовать, которые выполняют различные преобразования заголовка сообщения, и возможно тела сообщения.

# A sample /usr/lib/smail/transports file
# local - deliver mail to local users
local:  driver=appendfile,      # append message to a file
return path,              # include a Return-Path: field
from,                     # supply a From  envelope line
unix from hack,           # insert > before From in body
local;                    # use local forms for delivery
file=/var/spool/mail/${lc:user},
# location of mailbox files group=mail,
# group to own file for System V
mode=0660,                # group mail can access
suffix="\n",              # append an extra newline
# pipe - deliver mail to shell commands
pipe: driver=pipe,        # pipe message to another program
return path,              # include a Return-Path: field
from,                     # supply a From  envelope line
unix from hack,           # insert > before From in body
local;                    # use local forms for delivery
cmd="/bin/sh -c $user",   # send address to the Bourne Shell
parent env,               # environment info from parent addr
pipe as user,             # use user-id associated with address
ignore status,            # ignore a non-zero exit status
ignore write errors,      # ignore write errors, i.e., broken pipe
umask=0022,               # umask for child process
-log output,              # do not log stdout/stderr
# file - deliver mail to files
file:     driver=appendfile,
return path,              # include a Return-Path: field
from,                     # supply a From  envelope line
unix from hack,           # insert > before From in body
local;                    # use local forms for delivery
file=$user,               # file is taken from address
append as user,           # use user-id associated with address
expand user,              # expand ~ and $ within address
suffix="\n",              # append an extra newline
mode=0600,                # set permissions to 600
# uux - deliver to the rmail program on a remote UUCP site
uux:      driver=pipe,
uucp,                     # use UUCP-style addressing forms
from,                     # supply a From  envelope line
max addrs=5,              # at most 5 addresses per invocation
max chars=200;            # at most 200 chars of addresses

      cmd="/usr/bin/uux - -r -a$sender -g$grade $host!rmail $(($user)$)",
pipe as sender,
# have uucp logs contain caller
log output,               # save error output for bounce messages
# defer child errors,     # retry if uux returns an error
# demand - deliver to a remote rmail program,
# polling immediately demand: driver=pipe,
uucp,                     # use UUCP-style addressing forms
from,                     # supply a From  envelope line
max addrs=5,              # at most 5 addresses per invocation
max chars=200;            # at most 200 chars of addresses
cmd="/usr/bin/uux - -a$sender -g$grade $host!rmail $(($user)$)",
pipe as sender,
# have uucp logs contain caller
log output,               # save error output for bounce messages
# defer child errors,     # retry if uux returns an error
# hbsmtp - half-baked BSMTP. The output files must
# be processed regularly and sent out via UUCP.
hbsmtp: driver=appendfile,
inet,                     # use RFC 822-addressing
hbsmtp,                   # batched SMTP w/o HELO and QUIT
-max addrs, -max chars;   # no limit on number of addresses
file="/var/spool/smail/hbsmtp/$host",
user=root,                # file is owned by root
mode=0600,                # only read-/writeable by root.
# smtp - deliver using SMTP over TCP/IP
smtp:     driver=tcpsmtp,
inet,
-max addrs, -max chars;   # no limit on number of addresses
short timeout=5m,         # timeout for short operations
long timeout=2h,          # timeout for longer SMTP operations
service=smtp,             # connect to this service port
# For internet use: uncomment the below 4 lines
# use bind,               # resolve MX and multiple A records
# defnames,               # use standard domain searching
# defer no connect,       # try again if the nameserver is down
# -local mx okay,         # fail an MX to the local host

                                APPENDIX C

      Общая Публичная Лицензия GNU

      Имеется Общая Лицензия  GNU (GPL или copy-left), под которой Linux запатентован. Она не воспроизведена здесь. Большая часть ядра Linux - copyright (C) 1993 Linus Torvalds, и другое программное обеспечение обеспечены авторским правом их авторами. Таким образом, Linux обеспечен авторским правом, однако, Вы можете перераспределять его (копировать) в
соответствии с GPL (GNU GENERAL PUBLIC LICENSE).