| ||
Пакет INN, автором которого является Рич Солц (Rich Salz), представляет полнофункциональный пакет программ для построения сервера новостей. Для взаимодействия с другими машинами используется стандартный протокол NNTP. Как и любой сервер новостей, система INN предполагает наличие по крайней мере одного поставщика новостей, а также наличие хостов, которым новости отсылаются (NNTP соседей называют newsfeeders). Кроме того, у сервера имеются клиенты, которые через "читалку новостей" обращаются к серверу для чтения и/или публикации новостей.
Статьи (articles) в Usenet классифицируются по телеконференциям, которые подобно каталогам файловой системы имеют иерархическую структуру. Новости хранятся на сервере в дереве каталогов, имена которых формируются путем замены точек слэшами ("/"). Например, статьи из группы relcom.fido.ru.unix хранятся в каталоге /var/news/spool/articles/relcom/fido/ru/unix.
Процесс инсталляции пакета INN идентичен для Unix-основанных систем, но каждая платформа имеет свои особенности инсталляции. Описанная ниже последовательность действий ориентирована на FreeBSD (пакет inn-1.7.2 ставился на FreeBSD-2.2.5).
Во-первых, Вам необходимо заполучить свеженький дистрибутив INN. Обратитесь на сервер ftp.isc.org и перейдите в каталог isc/inn. Выберите необходимый архив (например, inn-1.7.2.tar.gz), перекачайте, декомпрессируйте и разархивируйте его, поместив результат в выбранный Вами каталог (в дальнейшем он упоминается как $inn).
Сменив текущий каталог на $inn, Вы обнаружите два файла формата
nroff, использующие макрос -ms: Install.ms.1 и Install.ms.2.
Это две части оффициального руководства по инсталляции InterNetNews.
Дайте команду
make Install.msПри этом два файла объединяются в один - Install.ms с правами доступа 444. Приведите этот файл в более читабельный вид (в частности, для просмотра с помощью more) командой:
nroff -ms Install.ms > InstallПри возникновении проблем в инсталляции пакета необходимо обращаться за помощью к этому файлу.
Следующий этап процедуры инсталляции - редактирование главного файла
конфигурации сonfig.data.
В каталоге $inn/sample-configs содержатся шаблоны файла config.data
для различных платформ. Вам необходимо выбрать наиболее подходящий
для Вас файл и скопировать его в $inn/config/config.data, например,
для FreeBSD выполните следующие команды:
cd $inn cp sample-configs/config.data-FreeBSD-2.0 config/config.data
Теперь настала пора отредактировать сам файл config.data. INN получает из этого файла информацию о своей среде (т.е. где лежат компоненты, используемые INN).; Для пользователей FreeBSD надо подкорректировать опции для LIBS:
LIBS -lutil -lcryptПакет поставляется с некоторыми perl-сценариями, требующими пакет языка perl версии не ниже, чем 5.001, так что Вам, возможно, придется установить новый пакет языка perl и прописать корректный путь к команде perl:
_PATH_PERL /usr/local/bin/perl
Скомпилируйте все исходники:
cd $inn make allПеред инсталляцией компонентов пакета необходимо создать каталоги, куда они будут помещены:
mkdir /usr/news /var/news /var/news/spoolТеперь можно инсталлировать компоненты пакета INN. Если Вы ставите пакет в первый раз на эту систему, то просто дайте команду:
make installЕсли же Вы заменяете уже существующую систему INN, то рекомендуется инсталлировать отдельно программы и отдельно конфигурационные файлы и сценарии. Это позволит не затирать конфигурационные файлы текущей INN системы. Итак, сначала запустите сценарий:
makedirs.shОн создаст все остальные каталоги (ниже созданных командой mkdir на предыдущем этапе). Заметим, что команда make install вызывает этот сценарий сама. Теперь инсталлируйте программы и руководства (man'ы):
make updateПри этом сценарии и конфигурационные файлы будут скопированы из каталога $inn/samples в каталог $inn/site. Если Вы хотите сохранить настройки предыдущей версии INN, затрите файлы из каталога $inn/site такими же файлами из старого программного обеспечения, после чего:
cd $inn/site make install
Запуск сценария:
$inn/BUILDпозволит создать файлы active и history. После запуска сценария, он спросит, использовать ли с-версию subst (если она существует):
-- do you want to use it [y or n]? yДалее он спросит построили ли Вы бинарники:
Have you already built the executables [y or n]? yЗатем он спросит существуют ли каталоги spool, etc и т.д.:
Do the spool, etc., directories exist [y or n]? yСледующим вопросом будет: желаете ли Вы продолжить инсталляцию:
Do you want to continue with the installation [y or n]? yИ, наконец, последний ворос: запускать ли subshell для редактирования конфигурационных файлов:
Start a subshell to edit the config files [y or n]? nПосле завершения работы сценария проверьте, что владельцем файла active является пользователь news, группа news, права доступа на него 644, а если это не так (а практика показывает что в сценарии действительно что-то не так :-)), то исправьте это, дав команды
chmod 644 active chown news:news active
Сделайте почтовый псевдоним для пользователя news в файле /etc/mail/aliases:
usenet: newsДайте знать об этом sendmail, перестроив после редактирования файла базу псевдонимов:
/usr/bin/newaliases
INN оповещает о своей работе, используя систему syslog. Проверьте конфигурационный файл демона syslogd /etc/syslog.conf. Раскомментируйте в этом файле строки, содержащие news.crit, news.err, news.notice. После этого не забудьте создать соответствующие файлы в каталоге /var/log/news (владелец - news, группа -news, права доступа - 664).
Заметим, что, если Ваш файл newsfeeds не содержит строк с указанием "питающихся" у Вас сторон, кроме строки ME, то демон innd при запуске выдаст ошибку: "SERVER bad_newsfeeds no feeding sites". Для того, чтобы успокоить сервер, на начальной стадии Вы можете прописать холостой поток:
dummy-feed:!*::Добавьте в .profileпользователя root пути поиска в новых каталогах:
PATH=$PATH:/usr/news/bin:/var/newsДля чтения руководств с помощью команды man, добавьте строку в файле /etc/manpath.config:
MANDATORY_MANPATH /usr/news/manПоместите запуск демона innd в сценарий rc.local:
/usr/news/bin/rc.news > /dev/consoleПроверьте наличие строки
DOINNWATCH=trueв файле rc.news. Это позволит использовать утилиту innwatch.ctl, которая "гасит" сервер новостей, когда Ваш диск переполнился и предотвращает крушение системы.
Перезагрузите машину и проверьте, работает ли демон innd. Во-первых, должен быть соответствующий процесс, запущенный пользователем news:
ps -U news | grep innВо-вторых, дав команду
telnet localhost nntpВы должны увидеть примерно следующее:
Trying 127.0.0.1 Connected to localhost.your.domain. Escape character is '^]'. 200 news.your.domain InterNetNews server INN 1.7.2 readyЧтобы увидеть, какие команды понимает этот news-сервер, дайте команду help. Для возврата из сеанса telnet обратно в shell, дайте команду quit.
Во время загрузки системы в качестве пользователя root запускается сценарий rc.news (хорошее место для запуска - файл /etc/rc.local). В результате чего выполняется демон innd (посмотрите процесс командой ps -U news | grep inn). Эта программа прослушивает порт NNTP (TCP-port 119) на наличие входящих соединений. Если соединяются локальные клиенты для чтения новостей, то innd передает дальнейшее управление демону nnrpd, вызывая его. Этот демон просматривает файл nnrp.access для определения прав доступа к локальной базе статей. Если соединяются поставщики новостей (они должны быть прописаны в файле hosts.nntp), то innd принимает статьи (просматривая файлы hosts.nntp и active) и размещает их на Вашем диске (по умолчанию в каталоге /var/news/spool/articles).
В функции innd не входит отсылка новостей с локальной машины, для этого предназначены другие программы. Как только статья получена от поставщиков, она распространяется на все NNTP-машины, которые подписаны на конкретную телеконференцию у данной машины. Конкретно, куда и каким образом статьи будут отправляться с локального сервера определяется в файле newsfeeds. Программа, отвечающая за отправку статей (например, nntpsend, nntplink, send-nntp - программы транспортировки по NNTP, или sendbatch - программа транспортировки по UUCP) читает файл newsfeeds и передает статьи в заданном направлении.
Если Вы используете nntpsend, то Вы должны отредактировать файл nntpsend.ctl (хотя все можно прописать в файле newsfeeds). Список статей на отправку записывается в файл, который обычно хранится в каталоге /var/news/spool/out.going. Имя этого файла, как правило, совпадает с именем NNTP-соседа, указанного в файле newsfeeds. Для того, чтобы в один "прекрасный" момент диск не переполнился, старые статьи надо удалять. Это делается с помощью сценария news.daily. Он вызывает программу expire, которая просматривает файл expire.ctl (в нем указывается срок хранения статей) для обнаружения и удаления статей с устекшим сроком хранения. Этот же сценарий предназначен для каждодневного отчета о работе INN.
Итак, мы инсталлировали систему INN и запустили демон innd. Более того, мы не получили сообщений об ошибках и процесс innd выполняется на системе. Настала пора возложить на innd реальные функции. Для этого нужно внести в конфигурационные файлы изменения, отражающие наши потребности. Для начала погасим демон innd с помощью команды:
ctlinnd shutdown configureТеперь мы смело можем править конфигурационные файлы пакета INN (главное, не пугаться их количества :-)). По умолчанию они находятся в каталоге /var/news/etc. Естественно, прежде чем редактировать файлы надо иметь представление о том, как функционирует пакет INN (Вы ведь прочитали главу 4).
Попробуем выяснить, что нам может предложить провайдер (или любые хосты, которые согласны снабжать нас новостями). Для этого получим список новостей, на которые он подписан. Один из способов получения списка следующий. Воспользуемся командой пакета INN:
getlist -h newsserver.our.pro > active.providerСозданный вышестоящей командой файл active.provider содержит список групп новостей, на которые подписан наш провайдер. Выберем из этого списка те группы, на которые мы действительно хотим подписаться и пропишем их в нашем файле active. Например, если Вы хотите подписаться на конференцию relcom.humor, добавьте в этот файл примерно следующее:
relcom.humor 0000000000 0000000001 yЕсли Вы хотите принимать все (или почти все) группы новостей, на которые подписан Ваш провайдер, то файл active можно получить из active.provider, "прогнав" того через следующий сценарий (он обнуляет два средних поля каждой строки):
#!/bin/sh sed < active.provider > active \ -e 's/^\([^ ]*\) [0-9]* [0-9]* \([^ ]*\)$/\1 0000000000 0000000000 \2/'Наш файл active готов (он содержит строки для всех групп, которые поддерживает наш сервер), но надо сообщить и провайдеру о нашем выборе (чтобы он знал какие группы новостей ему нужно пересылать на наш хост).
Даже если провайдер пропишет нас в своей конфигурации сервера новостей, он не сможет скидывать нам новости по NNTP. Мы должны дать ему разрешение на это. Для этого добавим строчку в файл hosts.nntp:
newsserver.our.provider:Здесь надо заметить, что мы полагаемся на провайдера: мы знаем, что он будет снабжать нас только теми конференциями, о которых мы его попросили. Если же Вы не доверяете своим NNTP-соседям, то можно указать конкретно шаблон конференций, которые Вы принимаете на локальный диск от конкретного NNTP-соседа. Например, мы хотим принимать от newsserver.our.badprovider только relcom'овские группы новостей:
newsserver.our.badprovider::relcom.*
Отредактируем файл newsfeeds, указав всех NNTP-соседей, которых мы хотим снабжать статьями. Не забудем указать в этом файле своего провайдера. Ниже приведены два примера этого файла. В первом случае мы планируем снабжать статьями хост newsserver.our.provider по NNTP (используя программу nntpsend, о том как ее вызывать будет сказано позднее):
ME:*, !junk, !control*, !local*/!local:: newsserver.our.provider:*, !junk, !control*, !local*:Tf, Wnm:newsserver.our.providerВо втором случае мы хотим снабжать этот же хост по UUCP (имя этой uucp-системы provider), используя программу sendbatch (опять же о том, как ее вызывать, будет сказано позднее):
ME:*, !junk, !control*, !local*/!local:: provider/newsserver.our.provider:*, !junk, !control*, !local*:Tf, Wnb:
Теперь назначим различные глобальные параметры сервера новостей (имя сервера, имя домена) и параметры, используемые при формировании заголовков статей, публикуемых у нас. Эта информация хранится в файле inn.conf, а пример этого файла можно посмотреть здесь.
Определимся теперь с клиентами нашего сервера новостей (хосты, которые через программу чтения новостей общаются с нашим сервером). Например, мы хотим ограничить пространство пользования ресурсами нашего сервера новостей нашей Интранет-сетью (192.168.111.0/255.255.255.0) и нашей внешней сетью (домен our.domain), причем пользователям этих сетей мы разрешаем и читать новости, и публиковать их на наш сервер. Ах, да, мы чуть не забыли о наших хороших партнерах из домена partner.domain (правда, им нечего делать в наших локальных конференциях). Ну, а для остальных поместим первым правило, запрещающее все и вся. Для этого добавим строки в файл nnrp.access:
*:: -no- : -no- :!* 192.168.111.*:Read Post:::* *.our.domain:Read Post:::* *.partner.domain:Read Post:::*, !local*
Как только мы начнем получать статьи на локальный диск, надо будет следить за сроком их хранения на диске и удалять старые (диск же не резиновый :-)). К счастью, за нас это будет делать программа expire, а от нас требуется только дать ей соответствующие указания в файле expire.ctl (ну, и, конечно, запускать механизм очистки - об этом ниже). Мы должны указать в этом файле, во-первых - срок хранения идентификаторов статей в файле history (это делается для того, чтобы не принимать заново удаленные статьи), во-вторых - срок хранения самих тел статей. Пример ниже говорит о том, что запись об идентификаторе статей хранится в файле history 14 дней после удаления тела этих статей, тела статей из локальных телеконференций хранятся на системе от 5 до 7 дней (по умолчанию 6), а для всех остальных телеконференций тела хранятся от 3 до 5 дней (по умолчанию - 4 дня):
/remember/:14 *:A:3:4:5 local*:A:5:6:7Заметим, что значение по умолчанию (образец '*') должно фигурировать раньше, чем строки для отдельных групп, поскольку применяется последнее соответствие образцу в первом поле.
Важным шагом после редактирования конфигурационных файлов является проверка корректности сделанных нами изменений. Система INN имеет ряд средств, помогающих нам в решении этой задачи. Вот некоторые из них:
innd -sНапример, если Вы получили в ответ следующее:
Found 1 errors --see syslogто это значит, что командой обнаружена одна ошибка, о которой сообщается через syslog в файлах news.err и news.notice.
expire -n -x -tНапример, если Вы получили в ответ следующее:
/var/news/etc/active: line 5 wrong number of fieldsто это значит, что Вы ошиблись с количеством полей в 5-той строке этого файла (их должно быть 4). Однако, это не лучший способ проверки этого файла. В частности, expire не замечает отсутствие флага для группы новостей (в отличие от inncheck).
/var/news/etc/active:5: ends with whitespaceЗапущенный без параметров, inncheck проверит синтаксис всех файлов (которые может проверить), с выводом на экран сообщений об ошибках. Если мы укажем опцию -v (verbose режим), то inncheck расскажет нам о том, что он просматривает. Мы можем ограничить работу inncheck проверкой синтаксиса конкретного файла, дав команду inncheck {файл}. Для того, чтобы проверить корректность прав доступа к файлам и корректность владельцев и групп файлов можно дать команду inncheck -perm. Ту же информацию, да еще и с указанием того, какие команды надо выполнить, чтобы устранить ошибки, дает команда
inncheck -f -perm
Последний шаг настройки - периодически запускать программу отправки статей с нашей машины, программу чистки каталога статей и обобщения log-файлов. Для этого отредактируем таблицу заданий пользователя news для демона cron:
crontab -u news -eВаш любимый редактор (определенный переменной окружения EDITOR) откроет файл /var/cron/tabs/news. Ежедневно в 4 часа утра мы будем запускать сценарий news.daily, в функции которого входит обобщение и ротация файлов регистрации, прогон программы expire и др. Далее, в 1 минуту и 28 минут каждого часа мы будем запускать программу nntpsend для отправки потоков статей по NNTP нашим соседям.
0 4 * * * /usr/news/bin/news.daily > /dev/null 2>&1 & 1, 28 * * * * /usr/news/bin/nntpsend > /dev/null 2>&1 &Наконец, если мы планируем отправлять потоки новостей по UUCP на UUCP-систему provider, то в 37 минут каждого часа из cron'a будем вызывать программу sendbatch:
37 * * * * /usr/news/bin/sendbatch -c provider > /dev/null 2>&1 &Ну что ж, теперь можно запустить демон innd (rc.news поможет нам в этом) и насладиться его работой!
Этот файл содержит список групп новостей, которые принимает локальный сервер. Содержимое файла считывается демоном innd при запуске, либо при получении этим демоном соответствующего указания от программы ctlinnd. Все статьи, опубликованные в группы новостей, которые не указаны в файле active отвергаются локальным сервером новостей. Строки в этом файле имеют следующий формат:
name himark lomark flagsНиже описывается значение параметров:
ctlinnd newgroup relcom.humor yдобавляет группу новостей "relcom.humor" с флагом "y" (см. выше), помещая соответствующие строки в файлах active и active.times. Файл active.times содержит информацию о времени создания новой группы новостей (и о том, кто ее создал), которая используется некоторыми программами чтения новостей (Trumpet одна из них) для оповещения своих пользователей о наличии новых групп новостей.
ctlinnd pause "edit active"
relcom.humor 0000000000 0000000001 y
inncheck active
ctlinnd reload active "edit active"
ctlinnd go "edit active"
Этот файл считывается программой expire при запуске и определяет правила очистки дерева статей на локальном сервере (сроки хранения тел статей и их идентификаторов). В начале этого файла обязательно должна находится строка (причем, только одна), определяющая как долго хранить записи об идентификаторах статей в файле history, после того, как тело статьи удалено. Это позволяет отклонить эту статью, если поставщик новостей вновь предложит ее в определенный промежуток времени. Эта строка имеет следующий формат:
/remember/:времягде время - срок хранения в днях (можно указывать и дробную часть дня, наприме, /remember/:7.5 - семь с половиной дней), по истечении которого из системы удаляются идентификаторы старых статей. Последующие командные строки определяют когда нужно удалять из системы тела статей. Они имеют следующий формат:
pattern:modflag:keep:default:purgeНиже описывается значение параметров:
Помимо строки /remember/ Вы должны указать строку с pattern '*' и modflag 'A'. Эта строка является строкой по умолчанию для срока хранения всех статей на системе. При этом она обязательно должна стоять раньше, чем строки с образцами для конкретных групп, поскольку этот файл проверяется программой expire до конца и последняя соответствующая группе новостей строка будет использована.
Например, мы хотим после удаления тела статьи хранить ее идентификатор в базе данных в течение 5-ти дней. Тела статей будут храниться на системе от 3-ех до 5-ти дней, за исключением локальных конференций, которые мы хотим хранить подольше (в течение 10-ти дней). Тогда наш файл будет выглядеть так:
/remember/:5 *:A:3:4:5 local*:A:10:10:10
Файл inn.conf содержит различные глобальные параметры сервера новостей (имя сервера, имя домена) и параметры, используемые при формировании заголовков статей (начавших свой путешествие по Usenet с этого сервера). Все изменения, сделанные в этом файле считываются демоном innd только после перезагрузки сервера новостей. Строки в этом файле имеют следующий формат:
имя: [возможны пробелы] значениеЗдесь имя - имя параметра, значение - его значение. Некоторые параметры могут быть изменены определением переменных окружения системы. Ниже описываются имена параметров и их значения:
Следующие три параметра используются только демоном nnrpd при приеме публикаций от клиентов:
Ниже приведен пример этого файла на машине news.our.domain:
fromhost : news.our.domain organization : Kari Ltd. pathhost : news.our.domain server : news.our.domain domain : our.domain mime-version : 1.0 mime-contenttype : text/plain; charset=KOI8-R mime-encoding : 8bit
Файл hosts.nntp содержит информацию о том, какие хосты могут снабжать локальный сервер новостями, используя NNTP протокол. Информация из этого файла считывается в память демоном innd при запуске, либо при получении определенного указания демону innd от программы ctlinnd. Когда удаленная машина соединяется с NNTP портом системы INN, демон innd сверяет ее IP-адрес с адресами машин, перечисленных в файле hosts.nntp. Если демон не находит соответствующей записи для данной машины в этом файле, то он "порождает" процесс nnrpd, который обслуживает данное соединение. Запомните: Вы НЕ сможете передавать потоки новостей по NNTP на удаленный сервер новостей INN, пока тот не пропишет Вас (вашу машину) корректно в своем файле hosts.nntp. Строки этого файла имеют следующий формат:
address:password:patternНиже описываются значения полей:
После изменений в файле hosts.nntp не забудьте дать команду демону innd перечитать этот файл (вместо причины edit можно указать любой текст, который определяет причину перезагрузки файла):
ctlinnd reload hosts.nntp edit
Файл newsfeeds содержит информацию о том, какие статьи и каким образом необходимо пересылать на соседние NNTP узлы. Информация из этого файла считывается в память демоном innd при запуске, либо при получении определенного указания демону innd от программы ctlinnd. Для каждого узла, с которым Вы обмениваетесь новостями должно быть соответствующее описание в этом файле (feed entries). В дальнейшем feed entry для NNTP-узла упоминается как поток новостей для этого узла.
Описание потока новостей имеет следующий формат:
sitename:[/exclude, exclude, ...]\ :pattern, pattern...[/distrib, distrib, ...]\ :flag, flag, ...\ :paramВ квадратных скобках - необязательные параметры, обратный слэш ("\") - склеивание этой строки с последующей. Ниже описывается значение параметров.
@alt.sex.pictures, misc.test, ...:
relcom/test/1 <01bd219$1115ac@asdu.domain.ru> relcom/humor/33 <23cd33$fh2223@netlab.domain.ru>При описании потока новостей provider:...:Tf, Wnb:... файл /var/news/spool/out.going/provider содержит строки вида:
relcom/test/1 536 relcom/humor/33 1378
Некоторые значения этого поля демонстрируются на конкретных примерах:
newsserver.our.provider:*, !junk, !control*, !local*:Tf, \ Wnm:newsserver.our.provider
provider:newsserver.our.provider
provider/newsserver.our.provider:*, !junk, !control*, !local*\ :Tc, Wnm, S1024\ :/usr/news/bin/nntplink -i stdin newsserver.our.provider
ME:*, !junk, !control*, !local*:: netlab:!junk:: ace:local*::говорят о том, что начальный список рассылки для всех соседей предполагает все группы, кроме "junk", "control*" и локальных групп новостей "local*". Узел netlab использует в точности начальный список расылки. Однако образец local* для узла ace позволяет ему получать локальные группы новостей, изменяя тем самым образец !local* в описании потока с именем ME.
Если ME имеет подполе /distrib, то только статьи у которых заголовок Distribution: соответствует образцам в этом подполе будут приняты, все остальные отвергнуты. Например, чтобы отвергать все локальные статьи от ненастроенных узлов, можно указать следующую строку:
ME:*, !junk, !control*, !local*/!local::Если Вы желаете слепо принимать все distribution, то просто не указывайте подполе /distrib.
После изменений в файле newsfeeds не забудьте дать команду демону innd перечитать этот файл (вместо причины syslog можно указать любой текст, который определяет причину перезагрузки файла):
ctlinnd reload newsfeeds syslog
Файл nnrp.access определяет права доступа к данному NNTP узлу для клиентов-машин, обработка соединений которых передана демоном innd демону nnrpd (например, клиенты, обращающиеся к узлу при помощи программы чтения новостей). Этот файл считывается каждый раз при вызове демона nnrpd демоном innd. Все строки состоят из пяти полей, разделенных двоеточием и имеют следующий формат:
hosts:perms:username:password:patterns
Ниже описывается значение параметров:
Например, мы хотим ограничить пространство пользования ресурсами нашего сервера новостей нашей Интранет-сетью (192.168.111.0/255.255.255.0) и нашей внешней сетью (домен our.domain), причем пользователям этих сетей мы разрешаем и читать новости, и публиковать их на наш сервер. Ах да, мы чуть не забыли о наших хороших партнерах из домена partner.domain (правда, им нечего делать в наших локальных конференциях). Есть еще один знакомый user, работающий на хосте host.familiar.domain, которому мы разрешим пользоваться нашими ресурсами новостей, но только после аутентификации: он будет запрошен для ввода имени (user) и пароля (serge). Ну, а для остальных поместим первым правило, запрещающее все и вся. Файл будет выглядеть так:
*:: -no- : -no- :!* 192.168.111.*:Read Post:::* *.our.domain:Read Post:::* *.partner.domain:Read Post:::*, !local* host.familiar.domain:Read Post:user:serge:*, !local*
Если Вы сделали изменения в файле nnrp.access, то те вступят в силу автоматически при обработке демоном nnrpd новых соединений.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |