Как заставить удаленный хост обрабатывать почтовую очередь


Если Вы используете временное подключение к Internet по модему с фиксированным (fixed) IP-адресом и полагаетесь на MX-хост для сбора почты в то время, когда соединение не установлено, Вы найдете очень полезной возможность вынудить MX-хост обрабатывать очередь почты после того, как Вы устанавливаете связь.
Как заставить удаленный хост обрабатывать почтовую очередь

Если Вы используете временное подключение к Internet по модему с фиксированным (fixed) IP-адресом и полагаетесь на MX-хост для сбора почты в то время, когда соединение не установлено, Вы найдете очень полезной возможность вынудить MX-хост обрабатывать очередь почты после того, как Вы устанавливаете связь.

Маленькая программа на языке perl включена в пакет sendmail именно для этого. Скрипт etrn имеет тот же эффект на удаленном хосте, какой команда runq имеет на Вашем. Если мы вызываем команду etrn, как показано в этом примере:

# etrn vstout.vbrew.com
то хост vstout.vbrew.com будет обрабатывать любую почту, поставленную в очередь для нашей локальной машины.

Обычно стоит добавить эту команду к скрипту PPP ip-up, чтобы она была выполнена сразу после того, как сетевое подключение будет установлено.



Категории (Categories) Категории



Категории (Categories)

Категории задают тип настраиваемых правил, поэтому категория в команде допустима только одна:

-I

Правило ввода (Input)

-O

Правило вывода (Output)

-F

Правило пересылки (Forwarding)





Клиент ssh Имеется ряд клиентов



Клиент ssh

Имеется ряд клиентов ssh: slogin, scp и ssh. Они используют один файл конфигурации, обычно /etc/ssh/ssh_config, и файлы настроек из каталога .ssh в домашнем каталоге пользователя, который их вызвал. Наиболее важные из этих файлов: .ssh/config, который может содержать параметры, отменяющие заданные в /etc/ssh/ssh_config, .ssh/identity, который содержит собственный секретный ключ пользователя и .ssh/identity.pub, содержащий публичный ключ пользователя. Другие важные файлы: .ssh/known_hosts и .ssh/authorized_keys; они будут рассмотрены ниже. Сначала надо создать глобальный файл настроек и файл ключа пользователя.

Файл /etc/ssh/ssh_config очень похож на файл настройки сервера. Есть большое количество свойств, которые Вы можете конфигурировать, но минимальная конфигурация приведена в примере 12-5. Остальная часть параметров рассмотрена на man-странице sshd(8). Вы можете добавлять секции для конкретных компьютеров или их групп. Параметром команды Host может быть любое полное имя компьютера или набор символов подстановки. В данном примере задано соответствие всем хостам. Можно, например, создать запись Host *.vbrew.com, соответствующую всем хостам в домене vbrew.com.



Команды Применяются только к правилам



Команды

Применяются только к правилам в заданной категории. Команда сообщает Firewall, какое действие следует выполнить.

-a [policy]

Добавить правило

-i [policy]

Вставить правило

-d [policy]

Удалить правило

-p policy

Установить заданную по умолчанию стратегию

-l

Показать все существующие правила

-f

Стереть все существующие правила

Стратегии представляют собой следующее: accept

Пропускать все пакеты для приема, передачи или транзитные (forward)

deny

Блокировать все пакеты для приема, передачи или транзитные (forward)

reject

Блокировать все пакеты для приема, передачи или транзитные (forward) и послать компьютеру, который послал пакет ICMP-сообщение об ошибке



Комментарии (Comments) Строки



Комментарии (Comments)

Строки в sendmail.mc, которые начинаются с #, не обрабатываются m4 и будут по умолчанию выводиться непосредственно в файл sendmail.cf. Это полезно, если Вы хотите комментировать, что Ваша конфигурация делает.

Допустимы комментарии в sendmail.mc, которые не попадут в файл sendmail.cf: Вы можете использовать лексемы m4 divert и dnl. Команда divert(-1) прекратит весь вывод, divert(0) восстановит его к значению по умолчанию. Любой вывод, сгенерированный строками между ними будет отброшен. В нашем примере, мы использовали этот механизм для создания комментария, который появляется только в файле sendmail.mc. Чтобы достичь того же самого результата для одной строки, можно использовать команду dnl, которая означает, буквально, "удаление всех символов следующей строки и перевод на новую строку". Я также использовал это в примере.

Это стандартные свойства m4, и Вы можете получить больше информации относительно их из man-страницы.



Компиляция Exim Exim все еще в


Linux одна из многих операционных систем, для которых есть версия Exim. Чтобы компилировать Exim для Linux, Вы должны отредактировать файл src/EDITME и поместить результат в файл Local/Makefile. Комментарии в src/EDITME сообщат Вам, для чего используются различные параметры настройки. Затем выполните make.



Контроль доступа программ работы с новостями


Раньше доступ к новостям предоставлялся кому угодно. Но теперь клиентов стало столько, что предоставлять всем желающим доступ не получается: никакого сервера не хватит. Поэтому каждый сервер обслуживает лишь своих клиентов. INN имеет файлы конфигурации, чтобы управлять этим доступом.
Контроль доступа программ работы с новостями

Раньше доступ к новостям предоставлялся кому угодно. Но теперь клиентов стало столько, что предоставлять всем желающим доступ не получается: никакого сервера не хватит. Поэтому каждый сервер обслуживает лишь своих клиентов. INN имеет файлы конфигурации, чтобы управлять этим доступом.



Контроль доступа с помощью tcpd


Полезное средство для этого tcpd так называемый "daemon wrapper". Для сервиса ТСP, который Вы хотите контролировать или защищать, вместо него вызывается tcpd. Он регистрирует запрос через syslog daemon, проверяет позволено ли этому хосту использовать затребованный сервис и только, если это так, запускает программу соответствующего сервера. Заметьте, что такой подход не работает с udp-сервисами.

Например, чтобы ограничить доступ к finger, Вы должны изменить строку в inetd.conf:

# unwrapped finger daemon finger stream tcp nowait bin /usr/sbin/fingerd in.fingerd
на:
# wrap finger daemon finger stream tcp nowait root /usr/sbin/tcpd in.fingerd

Без добавления какого-либо контроля доступа ничего для клиента не изменится за исключением того, что любые запросы будут регистрироваться в syslog auth.

А вот теперь добавим контроль доступа. Он выполнен посредством двух файлов: /etc/hosts.allow и /etc/hosts.deny. Они содержат разрешения и запреты доступа к некоторым сервисам и хостам. Когда tcpd обрабатывает просьбу о доступе к finger от клиентского хоста biff.foobar.com, он просматривает hosts.allow и hosts.deny (именно в этом порядке!) в поисках соответствующей записи для сервиса и клиентского хоста. Если запись была найдена в hosts.allow, доступ будет предоставлен независимо от записей в hosts.deny. Если соответствие найдено в hosts.deny, то запрос будет отклонен. Если никакого соответствия не найдено вообще, запрос будет принят.

Записи в файлах доступа выглядят так:

servicelist: hostlist [:shellcmd]

servicelist задает список имен сервисов из /etc/services или ключевое слово ALL. Чтобы соответствовать всем сервисам, за исключением finger и tftp, используйте ALL EXCEPT finger, tftp.

hostlist задает список имен хостов, адресов IP или ключевых слов ALL, LOCAL, UNKNOWN или PARANOID. ALL соответствует любому хосту, LOCAL имени хоста, не содержащему точек. UNKNOWN соответствует любым множествам, чьи названия или адреса ошибочны. Наконец, PARANOID соответствует любому хосту, чье имя не преобразуется в IP-адрес. Имя, начинающееся с точки, соответствует всем хостам, чьи домены являются равными этому имени. Например, .foobar.com подойдет для biff.foobar.com. Имеются также условия для сетевых адресов IP и подсетей. Имя, заканчивающиееся на точку, соответствует всем адресам, которые начинаются на заданный шаблон. Так, 172.16. подойдет для 172.16.32.0, но не для 172.15.9.1. Шаблон вида n.n.n.n/m.m.m.m задает адрес и сетевую маску подсети, например, 172.16.0.0/255.255.0.0. Необязательно здесь указывать все адреса и имена. Их можно разместить в файле, а в этом месте вписать имя файла, начинающееся с "/", допустим, /var/access/trustedhosts.

Для того, чтобы отказать в доступе к finger и tftp всем, кроме локальных хостов, сделайте пустым /etc/hosts.allow и поместите в /etc/hosts.deny:

in.tftpd, in.fingerd: ALL EXCEPT LOCAL, .your.domain

Произвольная запись shellcmd может содержать команду для вызова оболочки, когда запись совпадает. Полезно установить ловушку, которая может разоблачить потенциальных нападающих:

in.ftpd: ALL EXCEPT LOCAL, .vbrew.com : \ echo "request from %d@%h: >> /var/log/finger.log; \ if [ %h != "vlager.vbrew.com:" ]; then \ finger -l @%h >> /var/log/finger.log \ fi

Аргументы %h и %d tcpd превратит в имя хоста клиента и имя сервиса. Подробности есть на man-странице hosts_access(5).



Краткий обзор протоколов


Поскольку UUCP используется поверх различных типов соединений, например, последовательных линий, TCP или даже X.25, специфические протоколы низкого уровня необходимы. Кроме того, отдельные реализации UUCP представили различные протоколы, которые делают приблизительно то же самое.
Краткий обзор протоколов

Поскольку UUCP используется поверх различных типов соединений, например, последовательных линий, TCP или даже X.25, специфические протоколы низкого уровня необходимы. Кроме того, отдельные реализации UUCP представили различные протоколы, которые делают приблизительно то же самое.

Протоколы могут быть разделены на две категории: потоковые и пакетные (streaming и packet). Первые передают файл целиком, возможно, вычисляя при этом контрольную сумму. Нет непроизводственных затрат, но требуется надежное соединение, так как любая ошибка потребует повторной передачи файла. Эти протоколы обычно используются на соединениях TCP, но не подходят для использования с телефонными линиями. Хотя современные модемы хорошо исправляют ошибки, нельзя обнаружить ошибку между компьютером и модемом.

С другой стороны, пакетные протоколы разбивают файл на отдельные куски равного размера. Каждый пакет посылается и получается отдельно, контрольная сумма вычисляется, и квитирование возвращается датчику. Чтобы делать это более эффективно, были изобретены протоколы подвижного окна, которые учитывают ограниченный размер окна, ожидающого обработки в любое время. Это значительно уменьшает время ожидания uucico в течение передачи. Несмотря на это, относительно большие непроизводительные затраты (по сравнению с потоковым протоколом), делают пакетный протокол неэффективным для использования поверх TCP.

Ширина канала данных также дает различие. Иногда посылка восьмибитовых символов через последовательное соединение невозможна, например, если соединение использует простой сервер терминала. В этом случае символы с восьмым набором битов должны кодироваться при передаче. Когда Вы передаете восьмибитовые символы по соединению с семью линиями, они должны быть согласно предположениям с самым плохим случаем, это удваивает количество данных, которые будут переданы, хотя сжатие, выполненное аппаратными средствами, может компенсировать это. Строки, которые могут передавать произвольные восьмибитовые символы, обычно называются восьмибитовыми чистыми (8-bit clean). Дело обстоит так для всех соединений TCP, также как для большинства соединений модема.

Следующие протоколы доступны в Taylor UUCP 1.06: g

Наиболее общий протокол и может быть понят всеми версиями uucico. Он делает полную проверку ошибок и, следовательно, хорошо подходит для плохих телефонных линий. g требует восьмибитового чистого соединения. Это пакет-ориентированный протокол, который использует методику подвижного окна.

i

Является двунаправленным пакетным протоколом, который может посылать и получать файлы одновременно. Требуется дуплексное соединение и восьмибитовый канал для данных. Он в настоящее время распознается только Taylor UUCP.

t

Протокол, предназначенный для использования над соединениями TCP или другими, свободными от ошибок. Использует пакеты в 1024 байта и требует восьмибитового чистого соединения.

e

Аналог t, но только потоковый.

f

Предназначен для использования с надежным X.25-соединением. Это потоковый протокол, желателен семибитовый канал данных. Восьмибитовые символы кодируются, что может сделать передачу неэффективной.

G

Реализация протокола g в System V Release 4. Также распознается и некоторыми другими версиями UUCP.

a

Протокол, схожий с ZMODEM. Требуется восьмиразрядное соединение, кодируются некоторые управляющие символы, подобно XON и XOFF.



Левая сторона


В левой стороне правила Вы определяете образец, который будет соответствовать адресу или группе адресов, которые нужно трансформировать. Большинство символов сравниваются буквально, но есть ряд символов, которые имеют специальное значение. Они перечислены в следующем списке:
Левая сторона

В левой стороне правила Вы определяете образец, который будет соответствовать адресу или группе адресов, которые нужно трансформировать. Большинство символов сравниваются буквально, но есть ряд символов, которые имеют специальное значение. Они перечислены в следующем списке:

$@

Соответствует строго нулю элементов.

$*

Соответствует нулю или большему числу элементов.

$+

Соответствует одному или большему числу элементов.

$-

Соответствует строго одному элементу.

$=x

Соответствует любой фразе в классе x

$x

Соответствует любому слову НЕ в классе x

Лексема (элемент) представляет собой строку символов, разграниченных пробелами. Пробел нельзя включить в лексему, но это и не требуется. Когда правило соответствует адресу, текст, связанный с каждым из образцов в выражении, будет назначен специальной переменной, которую мы используем в правой стороне. Единственное исключение: $@, который не соответствует никаким лексемам и, следовательно, не будет создавать текст, который нужно использовать на правой стороне.



Linux Journal и Linux Magazine


Linux Journal и Linux Magazine ежемесячные журналы по Linux, пишутся и издаются рядом фанатов Linux. Они содержат статьи в пределах от вопросов новичков до внутренней организации программирования ядра. Даже если Вы имеете доступ к Usenet, эти журналы хороший способ оставаться в курсе текущих новостей.
Linux Journal и Linux Magazine

Linux Journal и Linux Magazine ежемесячные журналы по Linux, пишутся и издаются рядом фанатов Linux. Они содержат статьи в пределах от вопросов новичков до внутренней организации программирования ядра. Даже если Вы имеете доступ к Usenet, эти журналы хороший способ оставаться в курсе текущих новостей.

Linux Journal самый старый журнал. Издается S.S.C. Incorporated. Вы можете найти его по адресу http://www.linuxjournal.com.

Linux Magazine более новая, независимая публикация. Его сайт: http://www.linuxmagazine.com.



Linux Usenet Newsgroups


Если Вы имеете доступ к Usenet, посмотрите следующие группы новостей: comp.os.linux.announce

Моделируемая (контролируемая) телеконференция, содержащая объявления и важные сообщения относительно Linux (например, сообщения об ошибках, существенные исправления и т.п.). Если Вы вообще собираетесь читать телеконференции Linux, эту читайте обязательно. Часто важные сообщения этой конференции не дублируются в другие. Также в этой же телеконференции бывают важные оперативные сообщения. Подписка через linux-announce@news.ornl.gov.
Linux Usenet Newsgroups

Если Вы имеете доступ к Usenet, посмотрите следующие группы новостей: comp.os.linux.announce

Моделируемая (контролируемая) телеконференция, содержащая объявления и важные сообщения относительно Linux (например, сообщения об ошибках, существенные исправления и т.п.). Если Вы вообще собираетесь читать телеконференции Linux, эту читайте обязательно. Часто важные сообщения этой конференции не дублируются в другие. Также в этой же телеконференции бывают важные оперативные сообщения. Подписка через linux-announce@news.ornl.gov.

comp.os.linux.help

Вопросы и ответы по уствновке и использованию Linux.

comp.os.linux.admin

Дискуссии о системном администрировании.

comp.os.linux.networking

Дискуссии о сетях в Linux.

comp.os.linux.development

Разработка ядра и системных программ Linux.

comp.os.linux.misc

Все, что не вошло в предыдущие группы новостей.

Есть конференции и на других языках, например, на французском fr.comp.os.linux и на немецком de.comp.os.linux.



Linux User Groups


Многие Linux User Groups оказывают помощь пользователям. Имеется ряд списков групп пользователей Linux. Некоторые из знаменитых: Groups of Linux Users Everywhere

http://www.ssc.com/glue/groups
Linux User Groups

Многие Linux User Groups оказывают помощь пользователям. Имеется ряд списков групп пользователей Linux. Некоторые из знаменитых: Groups of Linux Users Everywhere

http://www.ssc.com/glue/groups

LUG list project

http://www.nllgg.nl/lugww

LUG registry

http://www.linux.org/users



Logфайлы и отладка При компиляции


Следующий важный файл протокола, Stats, ведет статистику передачи файлов. Раздел Stats, соответствующий вышеупомянутой передаче напоминает (тоже после переформатирования строк):

postmaster pablo (1994-05-28 17:15:44.78) received 1714 bytes in 1.802 seconds (951 bytes/sec) postmaster pablo (1994-05-28 17:15:46.66) received 57 bytes in 0.634 seconds (89 bytes/sec) postmaster pablo (1994-05-28 17:15:49.91) received 1898 bytes in 1.599 seconds (1186 bytes/sec) postmaster pablo (1994-05-28 17:15:51.67) received 65 bytes in 0.555 seconds (117 bytes/sec) postmaster pablo (1994-05-28 17:15:55.71) received 3217 bytes in 2.254 seconds (1427 bytes/sec) postmaster pablo (1994-05-28 17:15:57.31) received 65 bytes in 0.590 seconds (110 bytes/sec)

Третий файл Debug. Он хранит отладочную информацию. Если Вы используете отладку, удостоверьтесь, что этот файл имеет права доступа 600. В зависимости от избранного Вами режима отладки, он может хранить имя пользователя и пароль, которые Вы используете, чтобы соединиться с удаленной системой.

Если используются инструментальные средства, которые ожидают, что файлы будут в традиционном формате, используемом HDB-совместимой версией UUCP, Вы можете также откомпилировать Taylor UUCP с поддержкой протоколов в стиле HDB. Для этого задайте соответствующую опцию компиляции в файле config.h.



Локальные макроопределения Стандартные



Локальные макроопределения

Стандартные макрофайлы конфигурации sendmail обеспечивают большое количество обработчиков прерываний и переменных, которыми Вы можете настраивать конфигурацию. Они названы локальными макроопределениями (local macro definitions) . Многие из них перечислены в файле CF в пакете с исходными кодами sendmail.

Локальные макроопределения обычно вызываются, по имени с указанием изменяемого параметра.



Mailstats Команда mailstats отображает



mailstats

Команда mailstats отображает статистику по объему почты, обработанной sendmail. Время, за которое была собрана информация, печатается в начале, за ним следует таблица с одной строкой для каждого конфигурированного транспорта и одной, показывающей общее количество всей почты. Каждая строка представляет восемь элементов:

Поле Значение
M Транспортный протокол
msgsfr Число принятых сообщений
bytes_from Объем принятой почты в килобайтах
msgsto Число переданных сообщений
bytes_to Объем передаиной почты в килобайтах
msgsreg Сколько сообщений отклонено
msgsdis Сколько сообщений пропущено
Mailer Имя транспортного агента
Образец вывода команды mailstats показан в примере 18-5.



Начало подачи новостей


Для начала подачи новостей скомандуйте:

ctlinnd begin site

Начало подачи новостей

Для начала подачи новостей скомандуйте:

ctlinnd begin site

Аргументы имеют смысл:

site

Имя сайта (из файла newsfeeds), которому надо начать подачу новостей. Если подача уже активна, сначала автоматически будет выполнена команда drop.

Эта команда заставляет сервер повторно прочитать файл newsfeeds, найти соответствующую запись и начать подачу новостей, используя найденные детали. Вы можете использовать эту команду, чтобы проверить новый режим подачи новостей к сайту после того, как добавили или изменили запись в файле newsfeeds.



Написание файлов hosts и networks


Даже если Вы хотите использовать DNS или NIS, можно иметь некоторое подмножество имен и в /etc/hosts. Например, если Вы хотите иметь некоторый вид поиска по имени даже, когда сетевые интерфейсы не запущены, например, во время загрузки. Это не только вопрос удобства, но также позволяет Вам использовать символические имена хостов в скриптах rc. Таким образом, при изменении IP-адресов, Вы должны будете только копировать обновленный файл hosts на все машины вместо того, чтобы редактировать большое количество файлов rc. Обычно Вы будете помещать все локальные имена и адреса в hosts добавлением их на любой gateway и NIS-сервер, если они используются.

Также при проверке Вы должны удостовериться, что сервер имен использует информацию только из файла hosts. Программное обеспечение DNS или NIS может иметь файлы примеров, которые могут дать странные результаты при их использовании. Чтобы заставить все приложения использовать исключительно /etc/hosts при поиске IP-адреса хоста, Вы должны отредактировать файл /etc/host.conf. Закомментируйте все строки, начинающиеся с ключевого слова order и вставьте строку:

order hosts

Конфигурация библиотеки сервера имен будет подробно описана в главе 6.

Файл hosts содержит по одной записи на строку, состоящую из IP-адреса, имени хоста и необязательного списка псевдонимов. Поля отделяются пробелами или табуляцией, поле адреса должно начинаться в первой колонке. Все, что следует после символа #, расценивается как комментарий и игнорируется.

Имя хоста может быть полностью квалифицированным или заданным относительно локального домена. Для vale Вы ввели бы в hosts полностью квалифицированное имя, vale.vbrew.com, а также vale само по себе так, чтобы было известно и официальное имя и более короткое локальное.

Пример файла hosts для Virtual Brewery дан ниже. Два специальных имени, vlager-if1 и vlager-if2, задают адреса для обоих интерфейсов, используемых на vlager:

# # Hosts file for Virtual Brewery/Virtual Winery # # IP FQDN aliases # 127.0.0.1 localhost # 172.16.1.1 vlager.vbrew.com vlager vlager-if1 172.16.1.2 vstout.vbrew.com vstout 172.16.1.3 vale.vbrew.com vale # 172.16.2.1 vlager-if2 172.16.2.2 vbeaujolais.vbrew.com vbeaujolais 172.16.2.3 vbardolino.vbrew.com vbardolino 172.16.2.4 vchianti.vbrew.com vchianti

Точно так же, как с IP-адресами хостов, можно дать символическое имя сетевым адресам. Поэтому файл hosts имеет компаньона /etc/networks, который отображает имя сети на сетевой адрес и наоборот. В Virtual Brewery мы могли бы устанавливать файл networks подобно этому:

# /etc/networks for the Virtual Brewery brew-net 172.16.1.0 wine-net 172.16.2.0



Настройка групп новостей


Администратор новостей может управлять правами доступа пользователей разных групп. INN обеспечивает два файла конфигурации, позволяющие администратору решать, какие группы поддерживать, и обеспечить описания для них.
Настройка групп новостей

Администратор новостей может управлять правами доступа пользователей разных групп. INN обеспечивает два файла конфигурации, позволяющие администратору решать, какие группы поддерживать, и обеспечить описания для них.



Настройка INN Одно из самых больших


Затем Вы должны удостовериться, что innd запускается при начальной загрузке. Заданная по умолчанию установка INN имеет файл скрипта boot в каталоге /etc/news. Если Ваш дистрибутив использует пакет init в стиле SystemV, все, что Вы должны сделать, это создать символическую связь из Вашего /etc/init.d/inn на /etc/news/boot. Для других разновидностей init Вы должны удостовериться, что /etc/news/boot выполнен из одного из скриптов rc. Так как INN требует поддержки работы с сетями, скрипт запуска должен быть выполнен только после того, как сетевые интерфейсы будут полностью сконфигурированы.



Настройка маршрутизации почты



Настройка маршрутизации почты для локальных хостов

Конфигурация Virtual Brewery, вероятно, более сложная, чем требуется для большинства мест. Большинство машин сегодня использовало бы только транспорт SMTP и не работали бы с UUCP вообще. В нашей конфигурации мы настроили "интеллектуальный хост (smart host)", который используется, чтобы обработать всю исходящую почту. Так как мы используем транспорт SMTP в нашей локальной сети, мы должны сообщить sendmail, что он не должен посылать локальную почту через smart host. Макрокоманда LOCAL_NET_CONFIG позволяет Вам вставить правила sendmail непосредственно в sendmail.cf, чтобы изменять путь, которым локальная почта обработана. Позже эти правила будут рассмотрены подробнее, пока же примем тот факт, что любая почта для хоста vbrew.com должна доставляться через SMTP.



Настройка маршрутизатора IPX Из


В IPX-среде нужен еще один класс информации. Service Advertisement Protocol (SAP) несет информацию, какие сервисы являются доступными и на каких машинах. Это протокол SAP, который позволяет пользователям получать, например, списки серверов файлов или печати в сети. Протокол SAP работает при наличии компьютеров, которые обеспечивая сервисы, периодически передают список сервисов, которые они предлагают. Сетевые маршрутизаторы IPX собирают эту информацию и передают ее вместе с информацией о маршрутах. Чтобы быть правильным IPX-маршрутизатором, надо обрабатывать информацию RIP и SAP.

Точно так же, как IP, IPX в Linux обеспечивается демоном ipxd, чтобы выполнить задачи, связанные с управлением маршрутизацией. Снова, точно как с IP, это ядро, которое управляет пересылкой пакетов между сетевыми интерфейсами IPX, но выполняет это согласно набору правил, называемых таблицей маршрутизации IPX (IPX routing table). Демон ipxd поддерживает таблицу, слушая на каждом из активных сетевых интерфейсов и анализируя, когда изменение маршрутизации необходимо. Он также отвечает на запросы компьютеров, которые просят о информации маршрутизации.

Команда ipxd доступна в откомпилированном виде в ряде дистрибутивов и в исходниках с anonymous FTP http://metalab.unc.edu (файл /pub/Linux/system/filesystems/ncpfs/ipxripd-x.xx.tgz ).

Никакая конфигурация не является необходимой для ipxd. При запуске он автоматически управляет маршрутизацией IPX устройств, которые были конфигурированы. Вы должны гарантировать, что Ваши IPX-устройства конфигурированы правильно, используя команду ipx_interface прежде, чем запускаете ipxd. Каждые 30 секунд ipxd проверяет присоединенные локально IPX-сети и автоматически управляют ими. Это обеспечивает средства управления сетями на интерфейсах, которые не могут быть активны все время типа интерфейсов PPP.

Обычно ipxd запускается при старте системы из скрипта rc:

# /usr/sbin/ipxd
Символ & не нужен, потому что ipxd перейдет в фоновый режим по умолчанию. В то время как ipxd наиболее полезен на машинах, действующих как IPX маршрутизаторы, он также может пригодиться на сегментах, где есть несколько маршрутизаторов. Когда Вы определяете параметр -p, ipxd будет действовать пассивно: слушать информацию маршрутизации сегмента и модифицировать таблицы маршрутизации, но не будет передавать информацию маршрутизации. Этим путем компьютер может поддерживать таблицы маршрутизации актуальными, не запрашивая маршруты каждый раз, когда требуется входить в контакт с удаленным компьютером.



Настройка nn Пакет nn написан


Чтобы достигать этой цели, nn поставляется с большим набором инструментальных средств сопровождения, которые позволяют проводить не только отсеивание, но также проверки на непротиворечивость базы данных, учет, сбор статистики использования и ограничение доступа. Имеется также программа администрации, называемая nnadmin, которая позволяет Вам выполнять эти задачи в интерактивном режиме.

Диспетчер базы данных nn называется nnmaster. Он обычно выполняется как daemon и запускается из скрипта rc. Он вызывается как:

/usr/local/lib/nn/nnmaster -l -r -C

Это дает возможность отсеивания для всех newsgroups, представленных в файле active.

Также Вы можете вызывать nnmaster периодически из cron, передавая ему список групп. Этот список очень похож на список в файле sys за исключением того, что он использует пробелы вместо запятых. Вместо группы all для всех должен использоваться пустой аргумент "", чтобы обозначить все группы. Типовой вызов:

# /usr/local/lib/nn/nnmaster !rec.games.go rec comp

Обратите внимание, что порядок важен: крайная левая спецификация группы, которая соответствует ситуации, всегда используется. Таким образом, если мы поместим !rec.games.go после rec, все статьи из этой группы отсеются.

nn предлагает разные методы удалять устаревшие статьи из баз данных. Первое: модифицировать базу данных, развертывая каталоги групп новостей и отбрасывая записи, чья соответствующая статья является больше не доступной. Это заданная по умолчанию операция, полученная вызовом nnmaster с опцией -E. Приемлемо быстро, если Вы не делаете это через NNTP.

Второй метод ведет себя подобно заданному по умолчанию устареванию, выполненному mthreads, в котором она только удаляет те записи, которые относятся к статьям, чье число меньше метки ожидания в файле active. Это можно включить, используя опцию -e.

В заключение, третья стратегия должна отбросить всю базу данных и переоформить все статьи. Это может быть выполнено опцией -E3.

Список групп, которые устарели задается опцией -F. Однако, если Вы имеете nnmaster, выполняющийся как daemon, Вы должны уничтожить его (используя -k) прежде, чем сможет произойти устаревание, и перезапустить его с первоначальными опциями. Таким образом, команда выполнения устаревания на всех группах, использующая метод 1:

# nnmaster -kF "" # nnmaster -lrC

Имеются еще много опций, которые могут использоваться, чтобы подстроить поведение nn. Если Вы беспокоитесь относительно удаления ошибочных (поврежденных) статей или сборников статей, прочитайте man-страницу по nnmaster.

nnmaster полагается на файл GROUPS, который расположен в /var/lib/nn. Если он не существует первоначально, то будет создан. Для каждой newsgroup он содержит строку, которая начинается с имени группы, необязательно сопровождаемого временной меткой и флагами. Вы можете редактировать эти флаги, чтобы задать поведение для рассматриваемой группы, но Вы не можете изменять порядок, в котором группы появляются. Флаги и их эффекты детализированы на man-странице по nnmaster.



Настройка подачи новостей


INN обеспечивает администратору новостей способ управлять тем, какие группы будут посланы на другие сервера, а также каким способом это будет выполнено. Наиболее общий метод использует протокол NNTP, но INN также позволяет передавать новости через другие протоколы, например, UUCP.
Настройка подачи новостей

INN обеспечивает администратору новостей способ управлять тем, какие группы будут посланы на другие сервера, а также каким способом это будет выполнено. Наиболее общий метод использует протокол NNTP, но INN также позволяет передавать новости через другие протоколы, например, UUCP.



Настройка протокола передачи


Все протоколы учитывают некоторое изменение в размерах пакета, блокировках по времени и т.п. Обычно значения по умолчанию, обеспечивающие работу при стандартных обстоятельствах, не оптимальны для вашей системы. Протокол g, например, использует размеры окна от 1 до 7 и размеры пакета в степенях 2 в пределах от 64 до 4096. Если ваша телефонная линия обычно настолько шумная, что теряется более 5% всех пакетов, Вы должны уменьшить размер пакета и сократить окно. С другой стороны, на очень хороших телефонных линиях непроизводительные затраты протокола при посылке запроса черз каждые 128 байт могут оказзаться расточительными, так что Вы можете увеличивать размер пакета до 512 или даже 1024.
Настройка протокола передачи

Все протоколы учитывают некоторое изменение в размерах пакета, блокировках по времени и т.п. Обычно значения по умолчанию, обеспечивающие работу при стандартных обстоятельствах, не оптимальны для вашей системы. Протокол g, например, использует размеры окна от 1 до 7 и размеры пакета в степенях 2 в пределах от 64 до 4096. Если ваша телефонная линия обычно настолько шумная, что теряется более 5% всех пакетов, Вы должны уменьшить размер пакета и сократить окно. С другой стороны, на очень хороших телефонных линиях непроизводительные затраты протокола при посылке запроса черз каждые 128 байт могут оказзаться расточительными, так что Вы можете увеличивать размер пакета до 512 или даже 1024.

Taylor UUCP обеспечивает механизм настройки этих параметров командой protocol-parameter в файле sys. Например, чтобы установить пакет протокола g в 512 байт при обмене с pablo:

system pablo ... protocol-parameter g packet-size 512

Настраиваемые параметры и их названия изменяются от протокола к протоколу. Для полного списка изучите документацию, поставляемую с Taylor UUCP.



Настройка сервера имен файл resolv conf


При конфигурировании библиотеки resolver для того, чтобы использовать сервис BIND для поиска хостов, Вы обязательно должны сообщить, какое имя сервера используете. Существует отдельный файл, предназначенный специально для этого, называемый resolv.conf. Если этот файл не существует или пуст, то resolver примет имя сервера, определенного для Вашего локального хоста. Если Вы запускаете сервер на Вашем локальном хосте, то должны установить это имя отдельно, как это сделать будет объяснено позже в следующем разделе. Если в локальной сети есть возможность использовать существующее имя сервера, то ему должно отдаваться предпочтение.
Настройка сервера имен: файл resolv.conf

При конфигурировании библиотеки resolver для того, чтобы использовать сервис BIND для поиска хостов, Вы обязательно должны сообщить, какое имя сервера используете. Существует отдельный файл, предназначенный специально для этого, называемый resolv.conf. Если этот файл не существует или пуст, то resolver примет имя сервера, определенного для Вашего локального хоста. Если Вы запускаете сервер на Вашем локальном хосте, то должны установить это имя отдельно, как это сделать будет объяснено позже в следующем разделе. Если в локальной сети есть возможность использовать существующее имя сервера, то ему должно отдаваться предпочтение.

Самая важная опция в resolv.conf это name server, которая задает IP-адрес используемого сервера. Если Вы определите несколько имен серверов, используя опцию name server несколько раз, то они будут проверяться в этом порядке. Поэтому Вы должны поместить наиболее надежный сервер первым. Могут поддерживаться не более трех серверов. Если опция name server не задана, то resolver попытается соединиться с сервером на локальном хосте.

Две других опции, domain и search, имеют дело с заданными по умолчанию доменами, которые берутся из имени хоста, если BIND не может найти адрес с первого запроса. Опция search определяет список доменов, которые необходимо проверить. Пункты списка разделены пробелом или табуляцией. Обычно при подключении к компьютер в локальном домене не указывают полностью квалифицированное имя, но использование имени вроде gauss в командной строке приведет на локальный домен, например, mathematics.groucho.edu.

Это только цель инструкции domain. Она позволяет Вам определять заданное по умолчанию имя домена, которое будет добавлено, когда DNS терпит неудачу при поиске имени хоста. Например, когда дано имя gauss, resolver не может найти машину gauss. в DNS, поскольку такого домена верхнего уровня нет. Когда дано mathematics.groucho.edu как значение по умолчанию, resolver повторяет запрос для gauss с заданным по умолчанию доменом.

Но как только Вы выйдете за пределы домена отдела математики, хорошая жизнь кончится. Конечно, Вы также хотели бы иметь записи вроде quark.physics для компьютеров в отделе Физики.

Это делается с помощью search list. Список может быть определен, используя опцию search, которая является обобщением инструкции domain. Он задает перечень доменов, которые будут использовать для поиска машины с коротким именем.

Инструкции search и domain исключают друг друга и не могут появляться больше одного раза. Если никакая опция не задана, resolver пробует взять заданный по умолчанию домен из локального имени хоста (hostname) системным вызовом getdomainname(2). Если локальный hostname не имеет доменной части, заданный по умолчанию домен будет принят как корневой домен.

Если Вы помещаете инструкцию search в resolv.conf, Вы должны внимательно следить, какие домены туда попадают. Библиотека Resolver до BIND 4.9 создавала заданный по умолчанию список поиска из имени домена, когда список поиска не был задан. Этот заданный по умолчанию список был составлен из заданного по умолчанию домена и всех родительских доменов до корневого. Это вызывало проблемы потому, что запросы DNS попадали на сервера, которые никогда не имели дела с нужным доменом.

Предположим, что Вы из сети Virtual Brewery хотите обратиться к foot.groucho.edu. Но ошибочно вместо foot набираете foo, который не существует. Сервер имен GMU сообщит Вам, что не знает такой компьютер. Со списком поиска старого стиля resolver теперь продолжил бы пробовать найти имя с добавлением vbrew.com и com. Последнее проблематично, потому что groucho.edu.com вполне может оказаться реальным доменом. Их сервер имен мог бы даже найти в своем домене foo. В результате Вы попадете на машину, к которой совсем не стремились! Вряд ли Вы на ней зарегистрируетесь, но с толку будете сбиты основательно.

Для некоторых прикладных программ эти поддельные ведущие поисковые таблицы могут быть проблемой защиты. Следовательно, Вы должны обычно ограничивать домены в Вашем списке поиска локальная организацией. В отделе математики Groucho Marx University список поиска обычно установлен в maths.groucho.edu и groucho.edu.

Если заданный по умолчанию домен создает проблемы, посмотрите часть файла resolv.conf для Virtual Brewery:

# /etc/resolv.conf # Our domain domain vbrew.com # # We use vlager as central name server: name server 172.16.1.1

Когда запрашивается имя vale, resolver ищет vale, а в случае неудачи еще и vale.vbrew.com.



Настройка trn Программа trn является


В отличие от tin trn не имеет никакого средства для производства базы данных поиска во время выполнения. Взамен он использует базу, подготовленную программой mthreads, которая должна регулярно вызываться из cron, чтобы модифицировать индексные файлы.

Невыполнение mthreads,, однако, не означает, что Вы не можете обращаться к новым статьям, это только означает, что Вы будете иметь все статьи "A GENUINE INVESTMENT OPPORTUNITY", рассеянными в меню выбора статей, вместо одного экземпляра (который Вы можете легко пропустить).

Чтобы включить отсеивание для определенных newsgroups, mthreads вызывается со списком newsgroup в командной строке. Список сделан как в файле sys:

$ mthreads "comp,rec,!rec.games.go"

Отсеивает все comp и rec, кроме rec.games.go. После этого Вы просто вызываете mthreads без опций вообще, чтобы заставить обработать любые недавно прибывшие статьи. Отсеивание всех групп, найденных в файле active, может быть включено вызовом mthreads со списком групп all.

Если Вы получаете новости ночью, то будете обычно выполнять mthreads один раз утром, но Вы можете также делать это более часто, если необходимо. Абоненты, которые имеют очень большой трафик, могут выполнять mthreads в daemon-режиме. Когда mthreads запускается при начальной загрузке, используя опцию -d, он помещает себя в фон и пробуждается каждые 10 минут, чтобы проверить, имеются ли недавно прибывшие статьи, и просеивает их. Чтобы выполнять mthreads в daemon-режиме, поместите следующую строку в скрипт rc.news:

/usr/local/bin/rn/mthreads -deav

Опция -a заставит mthreads автоматически включить отсеивание для новых групп, как только они будут созданы. Опция -v дает возможность записи подробных регистрационных сообщений в файл регистрации mthreads, mt.log в каталоге, где Вы установили trn.

Старые статьи, которые больше не доступны, должны быть удалены из индексных файлов. По умолчанию только статьи, чье число меньше метки ожидания (low-water mark), будут удалены. Статьи с числом выше этого, которые устарели (потому что самая старая статья была назначена на дальнюю дату старения полем Expires: заголовка) могут быть удалены командой mthreads с опцией -e, чтобы вынудить расширенную чистку. Когда mthreads выполняется в daemon-режиме, опция -e заставит выполнять такое расширенное старение один раз в день, в полночь.



Настройка удаленного выполнения


Традиционные команды, используемые для выполнения задач на удаленных компьютерах rlogin, rsh и rcp. Пример команды rlogin приведен в главе 1. Я кратко показал проблемы защиты, связанные с этим, в разделе о защите системы в главе 1 и предложил в качестве замены пакет ssh. Он обеспечивает команды slogin, ssh и scp.

Каждая из этих команд порождает оболочку на удаленном компьютере и позволяет пользователю выполнять команды. Конечно, пользователь должен быть зарегистрирован на том удаленном компьютере, где должна быть выполнена команда. Таким образом, все эти команды используют процесс авторизации. Старые r-команды просто обменивались с удаленным компьютером именем пользователя и его паролем в открытом виде. Поэтому любая программа сетевого наблюдения легко перехватывала пароли. Пакет ssh обеспечивает более высокий уровень защиты: он использует методику Public Key Cryptography для авторизации и шифрования обменов между компьютерами, чтобы гарантировать, что ни пароли, ни другие данные сеанса не перехвачены. В принципе, их как и раньше можно перехватить, но они будут зашифрованы стойким криптоалгоритмом, так что никакой пользы перехватившему от них не будет.

Иногда желательно ослабить проверку доступа для некоторых пользователей. Например, если Вы часто должны регистрироваться на других машинах Вашей локальной сети, неплохо бы быть признанным без ввода пароля каждый раз. Это всегда было возможно с r-командами, но пакет ssh позволяет Вам сделать это немного легче. Но такой подход опасен тем, что если на одной машине логин пользователя вскрыт, это дает доступ без пароля на другие машины.

Для повышения безопасности нужно выключить r-команды и настроить ssh на работу вместо них.



Настройка UUCP Exim не имеет никакого


# Transport uucp: driver = pipe user = nobody command = "/usr/local/bin/uux -r - \ ${substr_-5:$host}!rmail ${local_part}" return_fail_output = true # Router uucphost: transport = uucp driver = domainlist route_file = /usr/exim/uucphosts search_type = lsearch

В полном файле конфигурации, транспорт был бы вставлен в описания других транспортов и маршрутизатор, вероятно, определен как первый маршрутизатор. Файл /usr/exim/uucphosts хранит запись:

darksite.example.com: darksite.UUCP
Эта запись значит, что почта на домен darksite.example.com будет передана по UUCP на darksite. Эта конфигурация могла бы быть установлена еще проще без маршрутизатора, добавлением суффикса .UUCP к darksite , но такой путь лучше тем, что ясно дает понять различие между доменом darksite.example.com и UUCP-машиной darksite.

Всякий раз, когда маршрутизатор натолкнется на домен, который находится в файле маршрута, он пошлет адрес UUCP-транспорту, который впоследствии передаст письмо команде uux (описана в главе 16). Если имеется проблема, uux сгенерирует некоторый вывод и завершится с кодом ошибки, отличным от нуля. Установка return_fail_output удостоверится, что вывод возвращен отправителю.

Если входящие UUCP-сообщения сгруппированы в файлы в формате batched SMTP, они могут быть переданы непосредственно Exim командой:

exim -bS

Когда Exim получает сообщение в местном масштабе, он требует, чтобы отправитель был зарегистрированным в системе пользователем. Для UUCP-пакета надо, чтобы отправители брались из входящего сообщения. Exim будет делать это, если процесс, который вызывает его, запущен как доверенный пользователь (trusted user). Если Вы хотите, чтобы входящий трафик UUCP-почты был обработан пользователем, например, uucp, Вы должны в файле конфигурации Exim определить:

trusted_users = uucp
чтобы гарантировать, что адреса отправителя правильно обработаны.



Настройка виртуальных хостов


Виртуальные домены обеспечивают компьютер возможностью приема и передачи почты от имени различных доменов, как если бы это был ряд разных хостов. Часто это используется интернет-провайдерами в сочетании с web-хостингом. Собственно, именно так работает автор этих строк: моя машина имеет лишь почтовый выход в Сеть. Поэтому вся почта для меня реально оседает на сервере провайдера, откуда я ее периодически забираю по UUCP. Это при том, что моей машине приписано нормальное доменное имя.
Настройка виртуальных хостов

Виртуальные домены обеспечивают компьютер возможностью приема и передачи почты от имени различных доменов, как если бы это был ряд разных хостов. Часто это используется интернет-провайдерами в сочетании с web-хостингом. Собственно, именно так работает автор этих строк: моя машина имеет лишь почтовый выход в Сеть. Поэтому вся почта для меня реально оседает на сервере провайдера, откуда я ее периодически забираю по UUCP. Это при том, что моей машине приписано нормальное доменное имя.



Необязательные параметры Эти параметры



Необязательные параметры

Эти параметры иногда бывают очень полезны:

-b

Используется для двунаправленного режима. Этот параметр соответствует трафику в любом направлении между определенным источником и адресатом. Это избавляет Вас от необходимости создавать два правила: одно для прямого подключения и одно для обратного.

-o

Включает регистрацию соответствия пакетов через протокол ядра. Любой пакет, который соответствует этому правилу, будет регистрироваться как сообщение ядра. Это полезно, чтобы обнаружить несанкционированный доступ.

-y

Используется, чтобы соответствовать TCP-пакетам запроса подключения. Этому правилу будут соответствовать только TCP-пакеты с установленным битом SYN и неустановленным битом ACK.

-k

Используется, чтобы соответствовать TCP-пакетам подтверждения попытки подключения. Этому правилу будут соответствовать только TCP-пакеты с установленным битом ACK.



NIS и затенение паролей Использование


В libc5 нет никакого реального решения для совместного использования файлов shadow через NIS. Единственный способ распределять пароль и информацию пользователя по NIS сводится к обычным картам passwd.*. Если Вы используете теневые пароли, самый простой способ совместно использовать их состоит в том, чтобы генерировать соответствующий файл passwd из /etc/shadow с помощью утилит, подобных pwuncov, и создавать карты NIS из этого файла.

Поддержка NIS в GNU libc library (libc6) обеспечивает поддержку теневых баз данных паролей. Это упрощает управление паролями в средах, в которых Вы хотите использовать NIS с теневыми паролями. Чтобы использовать данное средство, Вы должны создать базу данных shadow.byname и добавить следующую строку к файлу /etc/nsswitch.conf:

# Shadow password support shadow: compat

Если Вы используете теневые пароли с NIS, нужно ограничить доступ к базе данных NIS. См. раздел "Защита сервера NIS" выше в этой главе.



NIS против NIS+ NIS и NIS+ совместно


NIS+ дополнительно поддерживает безопасный и шифрованный RPC, который помогает решать проблемы защиты NIS.

Традиционный NIS использует RPC Version 2, а NIS+ нужна Version 3. На момент написания книги хорошей рабочей реализации NIS+ для Linux не было, так что этот сервис не рассмотрен здесь детально.



О поддержке NDS


Начиная с NetWare Version 4, Novell добавила новый сервис NetWare Directory Service (NDS). Спецификации NDS не доступны в открытом виде. Это ограничение, которое препятствует разработке свободной поддержки. Только Version 2.2.0 или позже пакета ncpfs, который мы обсудим позже, имеет поддержку NDS. Эта поддержка была разработана техникой обратного анализа протокола NDS. Поддержка работает, но все еще официально рассматривается экспериментальной. Вы можете использовать не-NDS инструментальные средства с серверами NetWare 4, если они имеют включенный режим "bindery emulation mode".
О поддержке NDS

Начиная с NetWare Version 4, Novell добавила новый сервис NetWare Directory Service (NDS). Спецификации NDS не доступны в открытом виде. Это ограничение, которое препятствует разработке свободной поддержки. Только Version 2.2.0 или позже пакета ncpfs, который мы обсудим позже, имеет поддержку NDS. Эта поддержка была разработана техникой обратного анализа протокола NDS. Поддержка работает, но все еще официально рассматривается экспериментальной. Вы можете использовать не-NDS инструментальные средства с серверами NetWare 4, если они имеют включенный режим "bindery emulation mode".

Программное обеспечение Caldera имеет полную поддержку NDS, потому что их реализация запатентована у Novell. Эта реализация не свободна. Так что Вы не будете иметь доступ к исходному тексту и не сможете свободно копировать и распространять программное обеспечение.



Обработка сообщений Control


Как и C-News, INN может автоматически обрабатывать сообщения Control. INN обеспечивает мощный механизм конфигурации, чтобы управлять тем, какое действие будет выполнено для каждого ряда сообщений управления, и блок контроля доступа, чтобы управлять тем, кто может инициализировать действия по управлению группами.
Обработка сообщений Control

Как и C-News, INN может автоматически обрабатывать сообщения Control. INN обеспечивает мощный механизм конфигурации, чтобы управлять тем, какое действие будет выполнено для каждого ряда сообщений управления, и блок контроля доступа, чтобы управлять тем, кто может инициализировать действия по управлению группами.



Обычно используемые параметры sendmail mc


Несколько элементов в файле sendmail.mc требуются всегда. Другие могут игнорироваться, если Вы можете избежать неприятностей со значениями по умолчанию. Общая последовательность определений в файле sendmail.mc такая:

VERSIONID
Обычно используемые параметры sendmail.mc

Несколько элементов в файле sendmail.mc требуются всегда. Другие могут игнорироваться, если Вы можете избежать неприятностей со значениями по умолчанию. Общая последовательность определений в файле sendmail.mc такая:

VERSIONID

OSTYPE

DOMAIN

FEATURE

Local macro definitions

MAILER

LOCAL_* rulesets



Обзор файлов настроек Обычно sendmail


Сегодня sendmail настраивается с помощью макрокоманд с легким для понимания синтаксисом. Макрометод генерирует конфигурации, чтобы охватить большинство инсталляций, но Вы всегда имеете опцию настройки результирующего sendmail.cf вручную, чтобы работать в более сложной среде.



Обзор Глава 1 обсуждает хронологию


Глава 3 имеет дело с главными проблемами конфигурации, типа формирования ядра и установки платы Ethernet. Настройка последовательных портов рассматривается отдельно в главе 4, потому что обсуждение этой темы не является специфичным для TCP/IP.

Глава 5 поможет Вам настроить машину для работы с сетями TCP/IP. Она описывает настройку для автономных компьютеров только с кольцевым интерфейсом loopback и для машин с подключением к Ethernet. Здесь также рассказано о ряде полезных инструментов для проверки настроек.

Глава 6 описывает конфигурацию сервера имен.

Глава 7 объясняет, как установить подключения SLIP и дает детальное описание программы dip, инструмента, который позволяет Вам автоматизировать большинство необходимых шагов.

Глава 8 охватывает протокол PPP и программу pppd, PPP daemon.

Глава 9 продолжает обсуждение сетевой защиты и описывает Linux TCP/IP firewall и инструментальные средства конфигурации: ipfwadm, ipchains и iptables. IP firewall обеспечивает возможность очень точно управлять тем, кто может обращаться к Вашей сети и ее компьютерам.

Глава 10 объясняет, как конфигурировать средство IP Accounting в Linux, так что Вы можете следить, сколько трафика проходит, а также какого именно, куда и откуда.

Глава 11 описывает свойство программного обеспечения работы с сетями в Linux под названием IP masquerade, которое позволяет целой IP-СЕТИ работать с Internet через ОДИН IP-адрес.

Глава 12 дает краткое введение в установку некоторых наиболее важных сетевых прикладных программ, типа rlogin, ssh и им подобных. Эта глава также рассказывает как сервисы управляются суперсервером inetd, и о том как Вы можете ограничить доступ к некоторым сервисам набором доверенных компьютеров.

Глава 13 и глава 14, рассматривают NIS и NFS. NIS используется для распространения административной информации (например, паролей в локальной сети). NFS позволяет нескольким машинам совместно использовать одну файловую систему.

В главе 15 рассмотрены протокол IPX и файловая система NCP. Это позволяет интегрировать Linux в сети Novell NetWare, разделять файлы и принтеры с не-Linux машинами.

Глава 16 посвящена администрированию пакета Taylor UUCP, свободной реализации UUCP.

Глава 17 представляет собой введение в концепцию электронной почты и показывает, как почта доходит до адресата.

Глава 18 и глава 19, рассматривают настройку почтовых серверов sendmail и exim соответственно. Сервер exim проще в установке, но не имеет ряда возможностей sendmail, например, поддержки UUCP.

Глава 20 и по главу 23, рассматривают новости Usenet, как поставить и использовать пакеты C News, nntpd и INN: три популярных средства для работы с Usenet. В главе 20 дается обзор. Затем в главе 21 обсуждается использование C News, сервиса с поддержкой UUCP. Следующие главы обсуждают современные альтернативы C News, которые используют Internet-протокол NNTP (Network News Transfer Protocol, протокол передачи сетевых новостей). Глава 22 как раз и рассматривает простой демон NNTP, nntpd. Глава 23 описывает более серьезный вариант: InterNet News daemon (INN).

В заключение глава 24 расскажет, как настроить разные программы чтения новостей (newsreaders).



Обзор параметров ipfwadm


Команда ipfwadm имеет много параметров. В общем виде синтаксис таков:

ipfwadm category command parameters [options]

Обзор параметров ipfwadm

Команда ipfwadm имеет много параметров. В общем виде синтаксис таков:

ipfwadm category command parameters [options]



Обзор передачи UUCP и удаленного


Например, допустим, что на Вашей системе выдали следующую команду, которая заставляет UUCP копировать файл netguide.ps на машину pablo и выполнить команду lpr, чтобы напечатать файл:

$ uux -r pablo!lpr !netguide.ps

UUCP не вызывает удаленную систему немедленно, чтобы выполнить задачу (иначе Вы могли это сделать kermit). Вместо этого он временно сохраняет описание задачи на удаленной системе. Это называется буферизацией задачи (spooling). Каталог, в котором сохраняется задача, называется буферным каталогом (spool directory) и обычно находится в /var/spool/uucp. В нашем примере описание задачи содержало бы информацию относительно удаленной команды, которая будет выполнена (lpr), пользователя, который запросил выполнение, и пары других предметов. В дополнение к описанию задачи, UUCP должен сохранить входной файл netguide.ps.

Точное расположение и наименование буферных файлов может изменяться в зависимости от некоторых опций времени компиляции. HDB-совместимые UUCP вообще сохраняют буферные файлы в подкаталогах структуры /var/spool/uucp с именем удаленной машины. Скомпилированный для Taylor-конфигурации, UUCP создаст подкаталоги в /var/spool/uucp/site для различных типов буферных файлов.

Через определенные интервалы UUCP связывается с удаленной системой. Когда соединение установлено, UUCP передает файлы, описывающие задачу, плюс все входные файлы. Входящие задачи не будут выполнены немедленно, а только после разрыва соединения. Это делает программа uuxqt, которая также заботится о дальнейшей пересылке любых задач, если они предназначены для другой машины.

Для различия между очень важными и менее важными задачами, UUCP с каждой задачей связывает уровень приоритета (grade). Это один знак, в пределах от 0 до 9, от А до Z и через z, в уменьшающемся старшинстве. Почта обычно записывается в буферный файл с приоритетом B или C в то время, как новости записываются с приоритетом N. Работы с более высоким приоритетом передаются раньше. Приоритеты могут быть назначены, используя опцию -g при вызове uucp или uux (так вот, что значат эти имена файлов!).

Вы можете также запретить передачу задач в определенное время с приоритетом ниже заданного. Это также называется максимальным приоритетом буфера (maximum spool grade), допустимым в течение диалога (по умолчанию z). Обратите внимание на терминологическую неоднозначность: файл будет перемещен только, если он имеет приоритет выше максимального приоритета буфера!



Обзор последовательных устройств


В Linux существует три класса tty: виртуальные консоли, псевдотерминалы (подобные дуплексному каналу, используемому приложениями типа X11) и последовательные устройства. Последние также причисляется к tty потому, что они позволяют создавать диалоговые сессии по последовательной связи: будь то простой терминал или удаленный, компьютер соединенный с Вашим по телефонной линии. Обратиться к виртуальным консолям можно с локальной консоли клавишами с Alt-F1 по Alt-Fnn, где nn задает номер консоли.

SLIP и PPP имеют много общего в своей реализации в ядре. Ядро, действительно, не обрабатывает tty как сетевое устройство, которым Вы можете управлять, подобно устройству Ethernet, используя команды типа ifconfig. Однако, оно обрабатывает tty-устройства как места, где сетевые устройства могут быть подключены. Для этого ядро включает код для устройств tty, получивший название "line discipline". Общая идея состоит в том, что последовательный драйвер обрабатывает данные по-разному, а как именно, зависит от заданной line discipline. В заданной по умолчанию line discipline драйвер просто передает каждый символ, который получил в свою очередь. Когда выбрана line discipline для SLIP или PPP, драйвер читает блок данных, создает его заголовок для правильной обработки принимающей стороной и передает новый блок данных в сеть.



Официальные печатные версии Осенью


Казалось бы, какой смысл покупать книгу, если она есть в бесплатном доступе? Есть ли какие-то отличия между бесплатной и печатной версиями?

O'Reilly & Associates печатает Networking Guide для всех желающих купить именно книгу. Как показывает опыт этой уважаемой фирмы, люди охотно покупают книги даже при наличии бесплатной электронной версии. Почему? А потому, что читать с экрана неудобно. Конечно, можно и самому отпечатать, но затраты на это нередко оказываются выше стоимости печатной книги, а уж качество... Так что нет ничего удивительного в том, что проект бесплатного документирования успешно сотрудничает с коммерческой издательской фирмой.

Кроме того, если есть одна изданная книга по Linux, покупатель вполне заинтересуется и другими. А это сулит издательству немалые прибыли. Вот так и получается, что электронная копия не мешает продавать бумажную.

Какая разница между электронной и печатной версиями по содержанию? Никакой. В печатной версии есть все то же самое, что и в электронной.

В книге издаетльства will сделаны хорошие рисунки и очень грамотно составлено оглавление. По сравнению с электронной версией, это явный шаг вперед. Так что, если Вы собираетесь читать книгу от корки до корки, бумажная версия явно лучше.



Опции командной строки uucico


Этот раздел описывает наиболее важные опции командной строки uucico. За полным списком, пожалуйста обратитесь к man-странице uucico.
Опции командной строки uucico

Этот раздел описывает наиболее важные опции командной строки uucico. За полным списком, пожалуйста обратитесь к man-странице uucico.

-system, -s system

Вызов по имени системы system, если нет запрета в соответствии c ограничениями времени обращения.

-S system

Вызов по имени системы system безоговорочно.

-master, -r1

Запукает uucico в режиме master. Это опция задана по умолчанию, когда указаны -s или -S. Опция -r1 заставляет uucico пробовать вызывать все системы в sys, если не запрещено обращение и нет ограничения времени повторения.

-slave, -r0

Запускает uucico в режиме подчиненного. Это используется как значение по умолчанию, когда не заданы -s или -S. В непривилегированном режиме любой стандартный ввод-вывод соединяется с последовательным портом, порт TCP используется, если задана опция -p.

-ifwork, -C

Предписывает uucico вызывать указанную систему только при наличии задач для нее.

-debug type, -x type, -X type

Включают отладку заданного типа. Несколько типов могут быть разделены запятой. Допустимы следующие типы: abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming и outgoing. Использование all включает все опции сразу. Для совместимости с другими реализациями UUCP, взамен может быть определен номер, который включает отладку для первых n типов из вышеупомянутого списка.

Отладочные сообщения будут регистрироваться в файле Debug в /var/spool/uucp.



Опции sendmail Пакет sendmail


Чтобы конфигурировать любые из этих параметров, Вы можете определять их в файле конфигурации m4, что является предпочтительным методом, или вставлять их непосредственно в файл sendmail.cf. Например, если нужно, чтобы sendmail запускал новый процесс для каждого сообщения почты, нужно добавить строку к файлу конфигурации m4:

define(`confSEPARATE_PROC',`true')

Соответствующая запись в файле sendmail.cf:

O ForkEachJob=true

Следующий список описывает общие параметры sendmail m4 и эквиваленты sendmail.cf:

confMIN_FREE_BLOCKS (MinFreeBlocks)

Есть одна проблема с почтовой очередью: она растет. При большом числе писем, она может разрастись настолько, что на диске свободного места уже не будет. Поэтому есть опция, чтобы определить минимальное число дисковых блоков, которые должны быть свободны перед приемом письма (значение по умолчанию 100 блоков). Блоки в разных системах могут иметь разный размер, но обычно кратный 512 байтам.

confME_TOO (MeToo)

При раскрытии псевдонимов отправитель письма может оказаться в списке получателей. Эта опция определяет, получит ли отправитель копию. Имеющие силу значения: "true" и "false" (значение по умолчанию false).

confMAX_DAEMON_CHILDREN (MaxDaemonChildren)

При получении sendmail входящего соединения SMTP с удаленного хоста, для его обработки запускается отдельная копия sendmail. Но память-то у Вашей машины не резиновая! При большом количестве таких подключений кончится все, что угодно. Тем более, sendmail не относится к числу программ с низким потреблением ресурсов. Эта опция позволяет задать максимальное число копий, которые работают одновременно. Если лимит исчерпан, входящие соединения будут отклоняться до завершения работы какой-то копии. Значение по умолчанию: undefined (не определено).

confSEPARATE_PROC (ForkEachJob)

При обработке очереди почты и посылке сообщений sendmail обрабатывает одно сообщение за раз. Когда эта опция включена, sendmail будет порождать по копии для каждого письма. Это особенно полезно, когда имеются некоторые сообщения, которые увязли в очереди потому, что есть проблемы с целевым хостом. (Значение по умолчанию: false).

confSMTP_LOGIN_MSG (SmtpGreetingMessage)

При подключении sendmail выдает приветствие. По умолчанию, это сообщение содержит hostname, имя агента передачи почты, версию sendmail, локальную версию и текущую дату. RFC 821 определяет, что первым словом приветствия должно быть полным доменным именем компьютера, но остальная часть может быть произвольной. Вы можете определять здесь даже макрокоманды sendmail, они будут нормально работать! Единственные люди, которые это сообщение увидят, это администраторы, пытающиеся понять, почему не работает почта у них, и люди, которым интересна настройка Вашего сервера (например, хакеры). Слово "EMSTP" между первым и вторым словами служит сигналом удаленным хостам о поддержке этого протокола (значение по умолчанию: $j Sendmail $v/$Z; $b).



Опции управления связью Выше Вы


Две наиболее важных опции, которые могут быть включены LCP: максимальная длина получаемых пакетов (Maximum Receive Unit) и асинхронное отображение управляющего символа (Asynchronous Control Character Map). Имеется ряд других опций конфигурации LCP, но они слишком специализированы для обсуждения их здесь (большинству пользователей они никогда не понадобятся). Пожалуйста, обратитесь к RFC 1548 за их описанием.

Asynchronous Control Character Map, коротко именуется async map, используется на асинхронных связях, типа телефонных линий, для опознания управляющих символов, которые нужно найти (заменить специфической последовательностью с двумя символами). Например, Вы, может быть, захотите избежать символов XON и XOFF, используемых для установления связи программным обеспечением, потому что плохо сконфигурированный модем может нарушить получение стоп-сигнала. Другим символом, передача которого в чистом виде нежелательна, является Ctrl-] (символ ESC в telnet). PPP позволяет Вам обходить любой символ с ASCII-кодом от 0 до 31, определяя их в аsync-отображении.

Async-отображение предсавляет собой растр длиной в 32 бита с самым младшим битом, соответствующим ASCII-символу NULL, и старшим битом, соответствующим ASCII-коду 31. Если бит установлен, он сообщает, что соответствующий символ должен быть пропущен при передаче.

Для того, чтобы сообщить серверу, что он не должен пропускать все управляющие символы, а только некоторые из них, Вы можете точно определить новый asyncmap для pppd, используя опцию asyncmap. Например, если должны быть пропущены только ^S и ^Q (ASCII-коды 17 и 19, обычно используются для старт-сигнала (XON) и стоп-сигнала (XOFF)), то Вам надо использовать следующую опцию:

asyncmap 0x000A0000

Первоначально, async-отображение установлено в 0xffffffff, то есть все управляющие символы будут пропущены.

Максимальная длина получаемого пакета или Maximum Receive Unit (MRU) сообщает максимальный размер HDLC-фрейма, который мы хотим получить. Хотя это может напоминать Вам значение MTU (Maximum Transfer Unit), но эти два параметра имеют мало общего. MTU параметр ядра для работы с сетями, он описывает максимальный размер структуры для передачи через сетевой интерфейс (неважно какой). MRU советует передающей стороне, какой размер пакетов оптимален.

Выбор MRU задает не скорость связи, а скорее количество пакетов, пришедших без ошибок. Если Вы имеете в виду интерактивные приложения, то установить MRU в значение около 296 является хорошей идеей, чтобы случайный больший блок данных (например, из FTP-сеанса) не сделал курсор "прыгающим". Чтобы сообщить pppd о том, что ему надо запросить MRU 296, задайте ему опцию mru296. Но маленький MRU имеет смысл только, если Вы используете VJ-сжатие заголовков (оно включается по умолчанию).

pppd также понимает пару LCP-опций, которые конфигурируют поведение процесса переговоров, типа максимального числа запросов конфигурации, которые могут быть переданы перед тем, как связь будет прервана.

В заключение есть две опции, которые обращаются к LCP-ECHO сообщениям. PPP определяет эти два сообщения, Echo Request и Echo Response. pppd использует эту особенность, чтобы проверить, действует ли связь. Вы можете отключить это, используя опцию lcp-echo-interval. Время задается в секундах. Если никаких структур от удаленного хоста не получено за этот интервала, то pppd сгенерирует запрос ECHO и будет ожидать, какой ECHO-ответ вернет сервер. Если он не возвращает ответ, связь будет прервана после некоторого числа посланных запросов. Это число может быть установлено, используя опцию lcp-echo-failure. По умолчанию эта возможность отключена.



Определение протокола транспортировки



Определение протокола транспортировки почты

Если Вы хотите использовать sendmail для передачи нелокальной почты, Вы должны сообщить какой транспорт использовать. Макрокоманда MAILER делает это очень простым. Текущая версия sendmail поддерживает ряд протоколов транспорта почты. Некоторые из них экспериментальны, другие, вероятно, очень редко используются.

В нашей сети мы нуждаемся в SMTP транспорте, чтобы посылать и получать почту в локальной сети, и в UUCP транспорте, чтобы посылать и получать почту от нашего интеллектуального хоста. Чтобы достичь этого, мы просто включаем транспорты smtp и uucp. Транспорт local включен по умолчанию, но может быть определен для ясности, если Вы желаете. Если Вы включаете оба транспорта, smtp и uucp, Вы должны всегда убедиться, что определили smtp первым.

Обычно используемые транспорты, доступные Вам в макрокоманде MAILER, описаны в следующем списке: local

Этот транспорт включает локальный агент поставки, используемый, чтобы послать почту в почтовый ящик пользователя на этой машине, и агент prog используемый, чтобы послать сообщения локальным программам. Этот транспорт включен по умолчанию.

smtp

Этот транспорт осуществляет Simple Mail Transport Protocol (SMTP), который является наиболее общим средством транспортировки почты в Internet. Когда Вы включаете этот транспорт, четыре агента будут конфигурированы: smtp (нормальный SMTP), esmtp (расширенный SMTP), smtp8 (8-битный двоичный SMTP) и relay (специально разработан для шлюзования писем между разными хостами).

uucp

Транспорт uucp обеспечивает поддержку двух агентов: uucp-old, который является традиционным UUCP, и uucp-new, который позволяет указывать много получателей, которые будут обработаны в одной передаче сразу.

usenet

Этот агент позволяет Вам посылать сообщения почты непосредственно в сети Usenet. Любое локальное сообщение, направленное к адресу news.group.usenet, будет подано в сеть новостей для группы новостей news.group.

fax

Если Вы имеете установленное программное обеспечение HylaFAX, этот агент позволит Вам направлять письма так, что можно будет создать шлюз email-fax. Это свойство было экспериментальным на момент написания книги, и более подробная информация может быть получена на http://www.vix.com/hylafax.

Имеются другие агенты, например, pop, procmail, mail11, phquery и cyrus, которые являются полезными, но менее распространенными. Документация к ним есть в пакете исходных кодов.



Организация и администрирование почтовых и файловых серверов Internet


Организация и администрирование почтовых и файловых серверов Internet

1. Введение

2. Электронная почта в Internet

2.1. Принципы организации
2.2. Протокол SMTP
2.3. Протокол POP3 (Post Office Protocol)
2.4. Формат почтового сообщения (RFC-822)
2.5. Спецификация MIME (Multipurpose Internet Mail Extension)

3. Программное обеспечение почтового обмена

3.1. Программа Sendmail 3.1.1. Настройка программы sendmail
3.1.2. Тестирование обслуживания по протоколу SMTP
3.1.3. Тестирование по протоколу POP3
3.1.4. Протокол IMAP
3.1.5. Тестирование отправки почты программой Sendmail - флаг "-v"
3.1.6. Тестирование правил преобразования адресов


3.2. Доступ к ресурсам Internet через электронную почту

3.2.1. Доступ к ресурсам архивов FTP
3.2.2. Поиск ресурсов посредством Archie

4. Файловые архивы Internet

4.1. Протокол FTP (File Transfer Protocol)
4.2. Режимы обмена данными
4.3. Программное обеспечение доступа к FTP-архивам 4.3.1. Сервер протокола - программа ftpd
4.3.2. Программа обмена файлами - ftp
4.3.3. Поиск в FTP-архивах - программа Archie

Приложения

Приложение 1. Команды протокола SMTP
Приложение 2. Коды возврата SMTP


Ошибкоустойчивость Resolver


Если Вы запускаете LAN внутри большей сети, непременно должны использовать центральные сервера имен, если они доступны. Преимущество этого состоит в том, что они имеют богатые кэши, так как все запросы направлены к ним. Эта схема имеет недостаток: когда сгорел базовый кабель в нашем университете при пожаре, невозможно было дальше работать в LAN нашего отдела, потому что resolver не мог достичь какого-либо из серверов. Не было login на X-терминалах, печати на принтерах и т.д.
Ошибкоустойчивость Resolver

Если Вы запускаете LAN внутри большей сети, непременно должны использовать центральные сервера имен, если они доступны. Преимущество этого состоит в том, что они имеют богатые кэши, так как все запросы направлены к ним. Эта схема имеет недостаток: когда сгорел базовый кабель в нашем университете при пожаре, невозможно было дальше работать в LAN нашего отдела, потому что resolver не мог достичь какого-либо из серверов. Не было login на X-терминалах, печати на принтерах и т.д.

Хотя опускаться до пожаров для университетского городка никуда не годиться, каждый обязан соблюдать технику безопасности, чтобы избежать случаев, подобных этим.

Один из способов это обойти: устанавливать локальный сервер, который определяет имена из Вашего локального домена и пересылает все запросы для других имен к главным серверам. Конечно, это применимо только тогда, когда Вы используете Ваш собственный домен.

Альтернатива: Вы можете поддерживать резервную ведущую таблицу для домена или LAN в /etc/hosts. Это очень просто, Вы просто гарантируете, что библиотека resolver делает сначала запрос DNS, а во вторую очередь файла hosts. В файле /etc/host.conf Вы используете для этого order bind,hosts, а в файле /etc/nsswitch.conf следует задать hosts: dns files, чтобы resolver вернулся обратно к файлу hosts, если центральный сервер имен недоступен.



Основы безопасности Плохо сконфигурированный


Замечание:

Настройка сетевого интерфейса и таблицы маршрутизации требуют привилегии root. Обычно Вы будете решать эту проблему, выполняя setuid root. Однако, pppd позволяет пользователям установить различные защитные опции. Для защиты против любого нападения, пользователь может манипулировать этими опциями, Вам следует установить пару значений по умолчанию в глобальном файле /etc/ppp/options, подобно показанным в главе "Использование файлов Options". Некоторые из них, например, авторизационные опции, не могут быть отменены пользователем.

Для зашиты важна опция connect. Если Вы предполагаете позволить не-root пользователям вызывать pppd, чтобы соединиться с Internet, Вы должны всегда добавлять параметры connect и noauth к глобальному файлу параметров /etc/ppp/options. Если Вы этого не сделаете, пользователи смогут выполнить произвольные команды с привилегиями root, определяя команду как параметр connect в строке запуска pppd или в их персональном файле параметров.

Другая хорошая идея состоит в том, чтобы ограничить, какие пользователи могут выполнять pppd, создав группу в /etc/group и добавляя только тех пользователей, которым это разрешено. Вы должны затем изменить группу владельца pppd на эту группу и удалить разрешение на выполнение для всех остальных пользователей. Допустим, свежая группа называется dialout, тогда выполните:

# chown root /usr/sbin/pppd # chgrp dialout /usr/sbin/pppd # chmod 4750 /usr/sbin/pppd

Конечно, Вы должны защитить себя от систем, с которыми работаете. Вы должны Всегда требовать какого-либо варианта их авторизации. Дополнительно, Вы не должны позволять посторонним машинами использовать любой IP-адрес, который они выбирают. Следующий раздел подробно освещает эти темы.