Образец вывода команды hoststat
Пример 18-6. Образец вывода команды hoststat
# hoststat
-------------- Hostname ---------- How long ago ---------Results--------- mail.telstra.com.au 04:05:41 250 Message accepted for scooter.eye-net.com.au 81+08:32:42 250 OK id=0zTGai-0008S9-0 yarrina.connect.com.a 53+10:46:03 250 LAA09163 Message acce happy.optus.com.au 55+03:34:40 250 Mail accepted mail.zip.com.au 04:05:33 250 RAA23904 Message acce kwanon.research.canon.com.au 44+04:39:10 250 ok 911542267 qp 21186 linux.org.au 83+10:04:11 250 IAA31139 Message acce albert.aapra.org.au 00:00:12 250 VAA21968 Message acce field.medicine.adelaide.edu.au 53+10:46:03 250 ok 910742814 qp 721 copper.fuller.net 65+12:38:00 250 OAA14470 Message acce amsat.org 5+06:49:21 250 UAA07526 Message acce mail.acm.org 53+10:46:17 250 TAA25012 Message acce extmail.bigpond.com 11+04:06:20 250 ok earthlink.net 45+05:41:09 Deferred: Connection time
|
Команда purgestat сбрасывает собранные статистические данные и является эквивалентной вызову:
Статистика продолжит расти, пока Вы не очистите (сбросите) ее. Вы могли бы периодически выполнять команду purgestat, чтобы искать недавние записи, особенно, если Вы имеете сильно загруженный сайт. Вы могли бы поместить команду в файл crontab, чтобы очистка статистики выполнялась автоматически, или делать это только непосредственно.
Пример простого правила
Рассмотрим следующее правило левой стороны:
Пример простого правила
Рассмотрим следующее правило левой стороны:
Это правило соответствует нулю или большему количеству элементов, сопровождаемых символом после них.
Если это правило применить к brewer@vbrew.com или к Head Brewer < >, соответствия не будет. В первом случае потому, что нет символа $+ соответствует одному или большему числу лексем, а в данном случае никаких лексем между символами <> нет. В любом случае при несоответствии правила, правая сторона не используется.
Если правило применить к Head Brewer < brewer@vbrew.com >, то оно сработает, и на правой стороне $1 заменится на Head Brewer, а $2 на brewer@vbrew.com.
Если правило применить к < brewer@vbrew.com > оно сработает потому, что $* соответствует нулю или более лексем, а на правой стороне $1 заменится на пустую строку.
Пример сети Предположим что у
Пример сети
Предположим, что у нас есть сеть небольшой организации, которая использует Linux-машину с firewall для связи с Internet. Мы разрешаем пользователям этой сети обращаться к web-серверам в Internet, но не позволяем какой-либо другой трафик.
Мы должны определить правила пересылки наружу пакетов с исходным адресом в нашей сети и портом назначения 80, а также пакетов с ответами.
Предположим, что наша сеть имеет 24-битную сетевую маску (класс C) и ее сетевой адрес 172.16.1.0. Правила будут такими:
# ipfwadm -F -f
# ipfwadm -F -p deny
# ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80
# ipfwadm -F -a accept -P tcp -S 0/0 80 -D 172.16.1.0/24
|
Параметр -F инструктирует
ipfwadm, что мы определяем правило пересылки пакетов (forwarding). Первая команда предписывает ipfwadm очистить все правила. Это гарантирует, что мы работаем с известным состоянием, и после добавления правил не окажется, что остались еще какие-то неизвестные нам правила.
Второе правило устанавливает нашу заданную по умолчанию стратегию пересылки. Мы сообщаем, что ядро должно отвергать пересылку всех IP-пакетов, кроме тех, которые мы позже разрешим. Это очень важный момент, так как здесь определяется судьба всех пакетов, которые не подходят какому-либо правилу.
Третье и четвертое правила определяют наши требования к пропускаемым пакетам. Третья команда позволяет нашим пакетам выходить из системы наружу, а четвертое правило позволяет приходить ответам.
Давайте расмотрим все параметры:
-F
Определяет правило пересылки (Forwarding).
-a accept
Добавляет правило со стратегией "accept", позволяющей принимать все пакеты, соответствующие этому правилу.
-P tcp
Правило применимо к TCP-пакетам (не трогает пакеты UDP или ICMP).
-S 172.16.1.0/24
Исходящий адрес должен иметь маску подсети в 24 бита и адрес сети 172.16.1.0.
-D 0/0 80
Адрес назначения должен иметь нулевые биты (0.0.0.0). Это соответствует любому адресу. Число 80 определяет порт назначения, в этом случае WWW. Вы можете также использовать любую запись из файла /etc/servicesдля определения порта, например, -D 0/0 www.
ipfwadm принимает сетевые маски в форме, с которой Вы можете быть незнакомы. Запись /nn обозначает сколько бит адреса значительны или размер маски. Биты всегда считаются слева направо. Ряд примеров перечислен в таблице 9-1.
Про эту книгу Когда Olaf присоединился
Olaf продолжал работать над Networking Guide и результатом стала сильно расширенная версия. Vince Skahan дописал главу про sendmail, которая в этой версии полностью переписана из-за нового интерфейса настройки sendmail.
Текущая версия была модифицирована и дополнена по просьбе издательства O'Reilly & Associates под редакцией Terry Dawson. Terry был около 20 лет оператором любительского радио и примерно 15 лет связан с индустрией телекоммуникаций. Он соавтор оригинального NET-FAQ, и с тех пор поддерживал ряд документов HOWTO, связанных с сетями. Terry всегда был сторонником проекта Network Administrators Guide, и именно он добавил несколько новых глав к этой версии, описывающих новые свойства работы с сетями Linux.
Глава про exim написана Philip Hazel, координатором разработки этого пакета.
Книга орагнизована ступенчато. В начале даются базовые сведения о работе с сетями, заостряя внимание на сетях TCP/IP. Затем изложение плавно переходит к настройке аппаратуры, протокола TCP/IP, различных сервисов, включая firewall, accounting и masquerade, настройке сетевых приложений, например, rlogin, сетевой файловой системы (Network File System) и сетевой информационной системы (Network Information System). Далее рассказывается о настройке поддержки UUCP. Несколько разделов посвящены настройке важных для TCP/IP и UUCP сервисов: e-mail и news. Отдельная глава посвящена протоколу IPX и файловой системе NCP, поскольку они часто применяются в средних организациях вместе с Linux.
Описание e-mail охватывает маршрутизацию, адресацию и настройку почты. Здесь есть описание сервера exim, идеального для почти всех конфигураций, не требующих поддержки протокола UUCP, и сервера sendmail, подходящего для сложных и больших систем.
Описание службы новостей (news) дает Вам краткий обзор того, как работают новости Usenet. Это охватывает INN и C-News, два наиболее широко используемых пакета программ транспортировки новостей, и использование NNTP, чтобы обеспечить программам работы с новостями доступ к локальной сети.
Конечно, нельзя объять необъятное. Многого в этой книге просто нет. Ряд примеров может и не сработать у Вас. Иногда причина в Ваших ошибках, но не всегда. Часто причиной являются изменения в программном обеспечении работы с сетями. Следовательно, изучите перечисленные информационные ресурсы. Есть хорошая вероятность, что Вы не одиноки с Вашими проблемами, там может найтись исправление или хотя бы способ обхода проблемы. Много проблем вызваны программным обеспечением из различных стадий разработки, которые не могут работать вместе правильно. В конце концов, Linux пока в стадии разработки, так что внимательно следите за обновлениями пакетов.
Процедура удаленного вызова (Remote
Сервер RPC состоит из системы таких процедур, что клиент может обратится, посылая RPC-запрос к серверу вместе с параметрами процедуры. Сервер вызовет обозначенную процедуру и вернет значение возврата процедуры, если оно есть. Чтобы быть машинно-независимыми, все данные, которыми обмениваются клиент и сервер, преобразуются к так называемому внешнему представлению данных (External Data Representation, XDR). RPC связан с сокетами UDP и TCP для передачи данных в формате XDR. Sun объявила RPC как public domain, и его описание доступно в серии документов RFC.
Иногда изменения в приложениях RPC вводят несовместимость в процедуру вызова интерфейса. Конечно, при простом изменении сервер разрушил бы все приложения, которые все еще ожидают прежних вызовов. Следовательно, RPC-программы имеют номера версии, приписываемые им, обычно начинающиеся с 1. Каждая новая версия RPC следит за номером версии. Часто сервер может предлагать несколько версий одновременно. Клиенты в этом случае указывают номером версии, которую они хотят использовать.
Сетевая связь между серверами и клиентами RPC немного особая. RPC-сервер предлагает одну или более системных процедур, каждое множество таких процедур называется программой (program) и однозначно идентифицировано номером программы (program number). Список имен сервисов обычно хранится в /etc/rpc, пример которого приведен ниже.
Программы чтения новостей и INN
Но есть другой вариант: программа может обращаться к серверу дистанционно через протокол NNTP. Этот тип подключения будет обработан по-другому. Всякий раз, когда программа подключается к серверу NNTP, innd
порождает отдельную копию обработчика nnrpd, который обрабатывает сеанс, в то время как innd возвращается к более важным вещам (получение входящих новостей, например). Как процесс innd различает входящую подачу новостей и соединение от клиентского newsreader? Ответ прост: протокол NNTP требует, чтобы программа-newsreader при соединении выдала команду mode reader после соединения с сервером. Когда эта команда будет получена, сервер запустит процесс nnrpd, вручает ему подключение и возвращается к ожиданию подключений. Проблема в том, что сам innd не распознает никаких команд для работы с новостями, так что программа-клиент должна начинать сеанс корректно.
Программы для модемной связи Есть
Кроме терминальных программ есть также программное обеспечение, которое использует последовательную связь в неинтерактивном режиме для передачи данных. Преимущество этой техники в том, что требуется гораздо меньше времени, чтобы загрузить несколько мегабайт автоматически, чем читать почту интерактивно в почтовом ящике на удаленной машине или смотреть интересную информацию на BBS. С другой стороны, она требует больше места на диске из-за большого количества бесполезной информации, которую Вы обычно получаете.
Основной представитель этого вида программного обеспечения UUCP. Это набор программ, которые позволяют копировать файлы с одного хоста на другой, выполнять программы на отдаленном хосте и т.д. Он часто используется для передачи почты или новостей в частных сетях. Но есть и другое недиалоговое комуникационное программное обеспечение, например, используемое в Fidonet. Fidonet-приложения, подобные ifmail, также доступны.
SLIP и PPP находятся где-то посередине и используются как диалоговыми, так и недиалоговыми приложениями. Много людей используют SLIP или PPP, чтобы дозвониться до университетской сети или какого-либо другого общественного сервера, чтобы работать с FTP, WWW и другими сервисами. SLIP и PPP могут также использоваться для постоянной связи "сеть-сеть", хотя здесь более полезен ISDN.
Просмотр данных с помощью ipchains
Команда ipchains не будет отображать данные учета (счетчики пакетов и байтов), если не задан параметр -v:
Просмотр данных с помощью ipchains
Команда ipchains не будет отображать данные учета (счетчики пакетов и байтов), если не задан параметр -v:
Точно как с ipfwadm мы можем отображать счетчики пакетов и байтов точно, используя опцию -x:
Просмотр данных с помощью ipfwadm
Команда ipfwadm позволяет смотреть собранные данные о трафике следующим образом:
# ipfwadm -A -l
IP accounting rules pkts bytes dir prot source destination ports 9833 2345K i/o all 172.16.3.0/24 anywhere n/a 56527 33M i/o all 172.16.4.0/24 anywhere n/a
|
Просмотр данных с помощью ipfwadm
Команда ipfwadm позволяет смотреть собранные данные о трафике следующим образом:
# ipfwadm -A -l
IP accounting rules pkts bytes dir prot source destination ports 9833 2345K i/o all 172.16.3.0/24 anywhere n/a 56527 33M i/o all 172.16.4.0/24 anywhere n/a
|
Это сообщает нам число пакетов представляющее каждое направление. Если мы используем расширенный выходной формат с опцией -e
(не показан здесь, потому что вывод слишком широк для страницы), мы также получим список опций и имена интерфейсов. Большинство полей в выводе понятны, так что я поясню только некоторые:
dir
Направление, в котором применяется правило. Ожидаемые здесь значения: in, out или i/o (оба направления).
prot
Протокол, для которого применяются правила.
opt
Кодированная форма параметров, использованных при вызове ipfwadm.
ifname
Имя интерфейса, к которому применяется правило.
ifaddress
Адрес интерфейса, к которому применяется правило.
По умолчанию ipfwadm отображает счетчики пакетов и байтов в сокращенной форме, округленной к ближайшей тысяче (K) или миллиону (M). Можно задать вывод точных чисел без округления:
Просмотр данных с помощью iptables
Команда iptables ведет себя очень похоже на ipchains. Снова мы должны использовать -v для просмотра результатов учета трафика:
Просмотр данных с помощью iptables
Команда iptables ведет себя очень похоже на ipchains. Снова мы должны использовать -v для просмотра результатов учета трафика:
Как и с командой ipchains можно использовать -x для показа точных данных.
Просмотр наших правил После ввода
Просмотр наших правил
После ввода правил можно попросить ipfwadm их показать в виде списка:
Эта команда внесет в список все конфигурированные правила пересылки. Вывод будет примерно таким:
# ipfwadm -F -l
IP firewall forward rules, default policy: accept type prot source destination ports deny tcp anywhere 172.16.10.0/24 www -> any acc tcp 172.16.1.0/24 anywhere any -> www
|
Команда
ipfwadm будет пытаться транслировать номер порта в сервисное имя, использующее /etc/services, если там есть такая запись.
Заданный по умолчанию вывод не включает одну важную деталь: он не показывает действие параметра -y. Команда ipfwadm способна произвести более детализированный вывод, если Вы определяете параметр -e (расширенный вывод). Он включает в себя столбец opt (опции), в котором будет показан параметр -y для пакетов SYN:
# ipfwadm -F -l -e
P firewall forward rules, default policy: accept pkts bytes type prot opt tosa tosx ifname ifaddress source ... 0 0 deny tcp --y- 0xFF 0x00 any any anywhere ... 0 0 acc tcp b--- 0xFF 0x00 any any 172.16.1.0/24 ...
|
Противоспамовая оборона
Что такое спам, я полагаю, объяснять не надо. Особенно, если Вы платите за трафик, как я. Поэтому я вполне разделяю чувства тех, кто хочет отделаться от этого ужаса хотя бы частично.
Противоспамовая оборона
Что такое спам, я полагаю, объяснять не надо. Особенно, если Вы платите за трафик, как я. Поэтому я вполне разделяю чувства тех, кто хочет отделаться от этого ужаса хотя бы частично.
К счастью, sendmail включает некоторую поддержку механизмов для борьбы с этой заразой электронной почты.
Противоспамовая оборона Спам (Mail
После появления RBL, были созданы несколько других подобных списков. Один из наиболее полезных Dial-Up List (DUL), который вносит в список IP-адреса dial-up компьютеров. Они должны обычно посылать почту только почтовым серверам своих провайдеров. Многие сайты блокируют почту с внешних модемных машин, поскольку это обычно спамеры.
Exim обеспечивает поддержку для обработки черных списков в реальном времени. Это очень легко настроить. Для включения такой поддержки впишите в свой файл /etc/exim.conf:
# Vixie / MAPS RBL (http://maps.vix.com/rbl) rbl_domains = rbl.maps.vix.com : dul.maps.vix.com
|
Этот пример проверяет RBL и DUL, отклоняя любые сообщения с компьютеров, которые находятся в любом из этих списков. Опция rbl_hosts позволяет Вам определять группы компьютеров, к которым проверка RBL будет (или не будет) применяться. По умолчанию задано:
Это означает, что все компьютеры подчиненны проверке RBL. Если Вы хотите для какого-то компьютера отменить проверку, используйте:
rbl_hosts = ! nocheck.example.com : *
|
Метка восклицания перед первым элементом в этом списке указывает инвертированный элемент: если компьютер называется nocheck.example.com, эта запись будет соответствовать ему. Но из-за отрицания проверка RBL не выполняется. Любой другой компьютер соответствует второму элементу в списке.
Проверка ARPтаблиц В некоторых
Аргумент hostname может быть как именем, так и IP адресом в стандарте dotted quad.
Первая строка отображает ARP-запись для IP-адреса, указанного хоста или всех известный хостов, если hostname не задается. Например, вызов arp на vlager может выдать:
# arp -a
IP address HW type HW address 172.16.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1 172.16.1.2 10Mbps Ethernet 00:00:C0:90:B3:42 172.16.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
|
Это показывает Ethernet-адреса vlager, vstout и vale .
При использовании опции -t Вы увидите информацию только о том типе аппаратных средств, который укажете. Это могут быть: ether, ax25 или pronet для Ethernet 10Mbps, AMPR AX.25 и IEEE 802.5 token ring, соответственно.
Опция -s используется, чтобы добавить Ethernet-адрес хоста к ARP-таблицам. Аргумент
hwaddr определяет адрес аппаратных средств, который по умолчанию предполагается Ethernet-адресом, указанным как шесть шестнадцатиричных байт, разделяемых двоеточиями. Вы можете также устанавливать адреса для других типов аппаратных средств, используя опцию -t.
Одна из проблем, которая может потребовать, чтобы Вы вручную добавили IP-адрес к ARP-таблице, это когда по некоторым причинам ARP-запросы для удаленного хоста не доходят, например, когда есть сбой ARP-драйвера, или имеется другой хост в сети, который ошибочно опознает себя с IP-адресом другого хоста. Твердая установка IP-адреса в ARP-таблице также является мерой защиты себя от хостов в Вашем Ethernet, которые прикидываются кем-то другим.
Вызов arp с использованием ключа -d удаляет все ARP-записи, касающиеся данного хоста. Это может быть необходимо, чтобы вынудить интерфейс повторно получить Ethernet-адрес для данного IP. Это полезно, когда переконфигурированная система имеет неправильную ARP-информацию.
Опция -s может также использоваться, чтобы создать proxy ARP. Это специальная техника когда хост, скажем, gate действует как gateway для другого хоста, назовем его fnord, делая вид, что оба адреса относятся к тому же самому хосту, а именно, gate. Это делается так: на gate создается ARP-запись о fnord, которая указывает на его собственный Ethernet-интерфейс. Теперь, когда хост посылает ARP-запрос о fnord, gate будет возвращать ответ, содержащий собственный Ethernet-адрес. Спрашивающий хост будет посылать все пакеты gate, который перенаправит их к fnord.
Эта схема может быть необходима, например, когда Вы хотите работать с fnord с DOS-машины с нестандартным TCP, которое плохо работает с маршрутизацией. Когда Вы используете proxy ARP, DOS-машине будет казаться, что fnord находится в локальной подсети, так что ей не требуется что-либо знать относительно маршрутов и gateway.
Другое очень полезное применение proxy ARP, когда один из Ваших хостов действует как gateway к некоторому другому хосту только временно, например, по телефону. В предыдущем примере мы уже столкнулись с laptop vlite, который был связан с vlager через PLIP-связь только в небольшом промежутке времени. Конечно, это будет работать только, если адрес хоста, для которого Вы хотите обеспечить proxy ARP, находится в той же самой IP-подсети, что и Ваш gateway. Например, vstout мог бы быть proxy ARP для любого хоста из подсети Brewery ( 172.16.1.0), но не для хоста из подсети Winery (172.16.2.0).
Требуемые действия для обеспечения proxy ARP для fnord приведены ниже. Конечно, Ethernet-адрес должен быть от gate:
# arp -s fnord 00:00:c0:a1:42:e0 pub
|
Запись proxy ARP может быть удалена:
"Если значение переменной...
То же самое можно записать и по-другому:
if(x!=NULL) { strcpy(q,x); strcat(q," <"); strcat(q,g); strcat(q,">"); { else { strcpy(q,g); }
В данном случае $?
соответствует оператору if, $|
- else, а $. - конец условного оператора.
Следующая секция - это определение опций:
############### # Options # ############### # strip message body to 7 bits on input? #O7False # Insist that the BIND name server be running to resolve names OI # deliver MIME-encapsulated error messages? OjTrue
В данном случае приведен только фрагмент этой секции. Большинство параметров общие для всех установок sendmail. Указанные же в листинге параметры являются принципиальными с точки зрения режимов работы sendmail. Первый параметр определяет тот факт, что по почте можно пересылать семибитовую информацию. Согласно RFC-822 информация должна быть семибитовая, но для передачи кириллицы это значит использовать кодирование, что абсолютно не приемлемо. Поэтому данный параметр должен быть закоментарен. В системах, где используется сервер доменных имен, опция I (OI) должна быть установлена, чтобы не было ошибок при идентификации доменов. Последний параметр не является принципиальным, но для целей более понятного представления его следует установить. Если почтовый клиент не поддерживает MIME, то данный параметр следует закоментарить.
Следующие две секции определяют уровень сообщений об ошибках и доверенных пользователей:
########################### # Message precedence # ########################### Pfirst-class=0 Pspecial-delivery=100 Plist=-30 Pbulk=-60 Pjunk=-100 ##################### # Trusted users # ##################### Troot Tdaemon Tuucp
За этими двумя секциями следует секция описания полей заголовка почтового сообщения, который генерируется программой sendmail:
######################### # Format of headers # ######################### H?P?Return-Path: $g HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $q H?F?From: $q H?x?Full-Name: $x HSubject: # HPosted-Date: $a # H?l?Received-Date: $b H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j>
Формат команд данной секции определяет какие поля включаются в заголовок, а какие не включаются. Данная секция тесно связана с секцией определения программ рассылки почты. Если после H нет знака вопроса, то поле включается в заголовок сообщения для любой программы рассылки, если после H символ "?" присутствует, то в строке аргументов программы рассылки данный флаг должен быть определен для того, чтобы данное поле было включено в заголовок. Как следует из приведенного выше описания, всегда включаются только поля Received и Subject. Все перечисленные поля не являются обязательными полями заголовка.
Следующая секция - правила преобразования адресов. Но прежде чем обсуждать ее содержание следует сказать как и когда sendmail эти адреса преобразовывает.
Прежде всего необходимо рассмотреть схему преобразования (рисунок 3.3).
Работа с внутренними IPсетями
Для обхода этой проблемы настроим vlager, чтобы он работал как стартовая площадка для доступа к сервисам Internet. Для внешнего мира он представится как нормальный SLIP-хост Internet с зарегистрированным адресом IP (вероятно, назначенным провайдером, управляющим cowslip). Любой пользователь vlager может использовать программы ftp, telnet, lynx и тому подобные для работы с Internet. Любой пользователь Virtual Brewery LAN может с помощью telnet зайти на vlager и использовать программы на нем. Для некоторых прикладных программ могут быть решения, которые не требуют регистрироваться на vlager. Для пользователей WWW, например, стоит применить прокси-сервер (proxy server) на vlager, который передаст все запросы пользователей на соответствующие сервера в сети.
Необходимость заходить на vlager вызывает неудобства. Но это может быть применимо в небольшой сети, особенно в случае невозможности регистрации нормальной IP-сети. Здесь полезно использовать фильтрацию трафика, чтобы не открывать всю внутреннюю сеть всем в Internet через шлюзовой компьютер. Настройка firewall подробно описана в главе 9. В главе 11 мы подробно рассмотрим Linux IP masquerade, который обеспечивает хорошую замену прокси-серверу.
Допустим, что Brewery имеет IP-адрес 192.168.5.74 для SLIP-доступа. Этот адрес необходимо ввести в файл /etc/hosts с именем vlager-slip. Процедура обеспечения связи по SLIP остается неизменяемой.
Рассмотрим внимательно набор правил
Рассмотрим внимательно набор правил
Итак, посмотрим на наш набор правил. Видите ли вы, что в нем есть дыра, через которую все еще можно атаковать систему?
Наш набор правил позволяет проходить в нашу сеть всем пакетам с исходным портом 80. Это будет включать и пакеты с установленным битом SYN! Бит SYN объявляет TCP-пакет запросом подключения. Если человек снаружи имел привилегированный доступ к компьютеру, он может сделать подключение через наш firewall на любой из наших компьютеров, если он использует порт 80 на своей стороне. Вот и дырка...
К счастью, проблема решаема. Команда ipfwadm имеет параметр, который позволяет формировать правила, которые будут соответствовать пакетам с битом SYN. Давайте изменим наш пример, чтобы включить такое правило:
# ipfwadm -F -a deny -P tcp -S 0/0 80 -D 172.16.10.0/24 -y # ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 -b
|
Опция -y заставляет правило соответствовать только, если в пакете установлен бит SYN. Так что наше новое правило предписывает отвергать любые внешние пакеты с порта 80 с установленным битом SYN.
Почему мы поместили это специальное правило перед
основным правилом? IP firewall функционируют так, что используется первое соответствие. Оба правила соответствуют пакетам, которые мы хотим остановить, так что мы должны убедиться, что поместили отвергающее (
deny) правило перед пропускающим (accept).
Разблокирование входящих новостей
Для разблокирования входящих новостей скомандуйте:
Разблокирование входящих новостей
Для разблокирования входящих новостей скомандуйте:
Аргументы имеют смысл:
reason
Задает любое текстовое сообщение. Если оно не нужно, задайте просто пустую строку.
Эта команда обратна команде reject.
Различные полосы разработки
Fred продолжил разработку после того, как Net-2Debugged был сделан официальной сетевой реализацией. Эта разработка привела к пакету Net-2e. Fred пытался стандартизовать интерфейс драйверов устройств (Device Driver Interface, DDI), но сейчас работа над Net-2e уже закончена.
Различные полосы разработки
Fred продолжил разработку после того, как Net-2Debugged был сделан официальной сетевой реализацией. Эта разработка привела к пакету Net-2e. Fred пытался стандартизовать интерфейс драйверов устройств (Device Driver Interface, DDI), но сейчас работа над Net-2e уже закончена.
Другая реализация работы с сетями TCP/IP исходила от Matthias Urlichs. Он написал драйвер ISDN для Linux и FreeBSD. Для этого драйвера он интегрировал часть BSD-кода работы с сетями в ядро Linux. Этот проект также уже свернут.
Было много изменений, они и сейчас вносятся, поскольку разработка Linux не закончена. Иногда это означает, что изменения также должны произойти в другом программном обеспечении типа сетевых инструментальных средств конфигурации.
Сетевая реализация Net-4 стала стандартом и используется на очень большом числе машин во всем мире. Много работы было выполнено по улучшении эффективности Net-4, и теперь она конкурирует с самыми лучшими реализациями, доступными для тех же самых аппаратных платформ. Linux распространяется в среде Internet Service Provider и часто используется, чтобы формировать дешевые и надежные серверы World Wide Web, е-mail и news для этих организаций.
Realtime Blackhole List Realtime
Real-time Blackhole List
Real-time Blackhole List представляет собой публичное средство, предназначенное уменьшить объем спама. Известные адреса e-mail и хосты перечисляются в базе данных, доступной через Internet. Они вводятся туда людьми, получившими спам с этих адресов. Домены иногда находятся в списке из-за ошибок при вычислении пути спама. Но эти ошибки система исправляет, ориентируясь на поступающие новые сообщения. Детальную информацию о сервисе можно получить на его сайте Mail Abuse Protection System http://maps.vix.com/rbl.
Если включить соответствующую поддержку в sendmail, он проверит исходный адрес каждого входящего сообщения почты по Real-time Blackhole List, чтобы определить, принимать ли сообщение. Если у Вас большой сервер и много пользователей, это свойство может сохранять значительный объем дискового пространства. Это свойство принимает параметр, задающий имя сервера для использования. По умолчанию это главный сервер rbl.maps.vix.com.
Для настройки поддержки Real-time Blackhole List добавьте в файл sendmail.mc следующее определение настроек:
Чтобы определить другой сервер RBL, используйте определение:
FEATURE(rbl,`rbl.host.net')
|
Resolver и переменные окружения
Resolver и переменные окружения
Установки из файла host.conf могут быть изменены, используя ряд переменных окружения:
RESOLV_HOST_CONF
Определяет файл, который будет считан вместо /etc/host.conf.
RESOLV_SERV_ORDER
Отменяет опцию order в host.conf. Сервисы, заданные как hosts, bind, и nis, разделяются пробелом, запятой, двоеточием или точкой с запятой.
RESOLV_SPOOF_CHECK
Определяет действия, принимаемые против спуфинга. Эта установка полностью отключается опцией off. Значения warn и warn off включают проверку спуфинга, но соответственно включают и выключают протоколирование (logging). Значение * включает проверку, но оставляет logging, как определено в файле host.conf.
RESOLV_MULTI
Эта переменная может быть использована для перекрытия опции multi из host.conf. Допустимы значения on или off.
RESOLV_OVERRIDE_TRIM_DOMAINS
Определяет список trim-доменов, который отключает те, что заданы в host.conf.
RESOLV_ADD_TRIM_DOMAINS
Определяет список trim-доменов, которые добавляются к заданным в host.conf.
Режимы доставки почты Как отмечено
Если Ваш компьютер постоянно не соединен с Internet, можно включить формирование очереди для удаленных адресов, но разрешить Exim выполнять локальные доставки немедленно. Вы можете сделать это, устанавливая в файле конфигурации:
Если Вы включаете любую форму формирования очереди, Вы должны удостовериться, что очереди проверяются регулярно, вероятно каждые 10 или 15 минут. Даже без явных параметров формирования очередей, все они должны быть проверены: в них могут быть сообщения, которые были отсрочены из-за временных сбоев доставки. Если Вы выполняете Exim в daemon-режиме, Вы должны добавить опцию -q15m в командной строке, чтобы обрабатывать очередь каждые 15 минут. Вы можете также вызывать exim -q из cron в этих интервалах.
Вы можете отображать текущую очередь почты, вызывая Exim с опцией -bp. Аналогично Вы можете сделать mailq связью с Exim и вызывать mailq:
$ mailq
2h 52K 12EwGE-0005jD-00 D bob@vbrew.com harry@example.net
|
Это показывает одно сообщение из sam@vbrew.com двум получателям. Оно было нормально доставлено bob@vbrew.com, но пока не доставлено harry@example.net, хотя ждет в очереди уже два часа. Размер сообщения 52K, идентификатор (ID), которым Exim идентифицирует это сообщение, 12EwGE-0005jD-00. Вы можете выяснить, почему доставка еще не завершена, с помощью индивидуального журнала сообщения, который сохраняется в подкаталоге
msglog каталога spool для Exim. Опция -Mvl дает простой путь выполнения этого:
$ exim –Mvl 12EwGE-0005jD-00
2000-01-30 17:28:13 example.net [192.168.8.2]: Connection timed out 2000-01-30 17:28:13 harry@example.net: remote_smtp transport deferred: Connection timed out
|
Индивидуальные журналы хранят копию записей файла регистрации для каждого сообщения, так что Вы можете легко смотрить их. Та же самая информация могла бы быть извлечена из основного журнал, используя утилиту
exigrep:
$ exigrep 12EwGE-0005jD-00 /var/log/exim/exim_mainlog
|
Это заняло бы больше времени, особенно на занятой системе, где журналы могут быть огромными. Утилита exigrep полезна при поиске нескольких сообщений. Первый параметр является регулярным выражением. Утилита выбирает все строки файла регистрации, связанные с любым сообщением, которое имеет по крайней мере одну строку файла регистрации, соответствующую заданному выражению. Таким образом, эта утилита может использоваться, чтобы выбрать все сообщения для одного адреса или все, которые пришли с определенного компьютера.
Вы можете сохранить немало времени, используя с Exim команду tail на основном журнале. Другой путь выполнения этого: используйте утилиту eximon, которая поставляется с Exim. Это X11-программа, которая показывает листающийся дисплей основного файла регистрации и показывает список сообщений, которые ожидают доставки вместе с краткой информацией относительно доставки.
Sage
Linux Network Administrators Guide
Назад |
|
|
Семантика наборов правил
Каждый из наборов sendmail выполняет свою задачу в обработке почты. Когда Вы пишете правила, важно понять, что каждый из наборов должен делать. Рассмотрим все наборы, которые можно менять через скрипты m4:
Семантика наборов правил
Каждый из наборов sendmail выполняет свою задачу в обработке почты. Когда Вы пишете правила, важно понять, что каждый из наборов должен делать. Рассмотрим все наборы, которые можно менять через скрипты m4:
LOCAL_RULE_3
Набор 3 ответственен за преобразование адреса в произвольном формате в общий формат, который sendmail будет обрабатывать. Ожидаемый выходной формат: local-part@
host-domain-spec.
Набор правил 3 должен поместить имя хоста преобразованного адреса в символы и >, чтобы сделать проще последующий синтаксический анализ. Набор 3 применяется перед тем, как sendmail сделает любую другую обработку адреса. Так что именно здесь нужно задавать преобразование адресов в случае использования sendmail как почтового шлюза для сети с нестандартными адресами почты. Используйте макрос LOCAL_RULE_3.
LOCAL_RULE_0 и LOCAL_NET_CONFIG
Набор 0 применяется к адресам получателя после набора 3. Макрос LOCAL_NET_CONFIG управляет правилами для вставки в нижнюю половину набора 0.
Набор 0 выполнит доставку сообщения получателю, он должен установить три параметра: транспорт, хост и получатель. Правила будут помещены перед любым определением интеллектуального хоста. Этим способом обрабатываются все smtp-соединения для пользователей LAN в нашем примере.
LOCAL_RULE_1 и LOCAL_RULE_2
Набор 1 применяется ко всем адресам отправителей, а набор 2 ко всем адресам получателей. Обычно они пустые.
Sendmail cf команды R и S
В файле sendmail.cf наборы определяются, используя команды Sn
, где n определяет текущий набор.
sendmail.cf: команды R и S
В файле sendmail.cf наборы определяются, используя команды Sn
, где n определяет текущий набор.
Правила непосредственно появляются в командах R. Поскольку каждая команда R читается, это правило будет добавлено к текущему набору.
Если вы имеете дело только с файлом sendmail.mc, Вы не должны заботиться о командах S, поскольку макрокоманды будут формировать их для Вас автоматом. Но нужно самому кодировать правила команд R.
Набор правил в sendmail выглядит так:
Сети и Linux Поскольку Linux результат
После выхода Ross из активной разработки в мае 1993, Fred van Kempen начал работать над новой реализацией, переписывая главные части кода. Этот проект был известен как Net-2. Первый публичный выпуск Net-2d был сделан летом 1993 (как часть ядра 0.99.10) и с тех пор поддерживался и расширялся несколькими людьми, особенно Alan Cox. Первоначальная работа Алана была известна как Net-2Debugged. После тяжелой отладки, многочисленных усовершенствований и выпуска Linux 1.0 он изменил название на Net-3. Net-3 был далее разработан для Linux 1.2 и Linux 2.0. Ядра 2.2 и более поздние используют поддержку сети Net-4, которая остается стандартным пакетом на текущий момент.
Net-4 Linux Network предлагает широкое разнообразие драйверов устройства и продвинутых свойств. Стандартные протоколы Net-4 включают SLIP и PPP (для работы с последовательными линиями), PLIP (для параллельных линий), IPX (для Novell-совместимых сетей, которые мы обсудим в главе 15 ), Appletalk (для сетей Apple), AX.25, NetRom и Rose (для любительских радиосетей). Другие стандартные свойства Net-4 включают IP firewalling, IP accounting (обсуждаются позже в главе 9 и главе 10) и IP Masquerade (обсуждается позже в главе 11). IP tunnelling поддержан в паре различных разновидностей и продвинутой стратегии маршрутизации. Поддерживается очень большое число устройств Ethernet. К тому же, есть поддержка многих плат FDDI, Token Ring, Frame Relay, ISDN и ATM.
Дополнительно, имеется ряд других свойств, которые значительно расширяют гибкость Linux. Эти свойства включают реализацию файловой системы SMB, что позволяет работать с lanmanager и Microsoft Windows. Пакет называется Samba, написан Andrew Tridgell. Есть поддержка Novell NCP (NetWare Core Protocol).
Сети TCP/IP Хотя UUCP может быть
Решение, которое приняли Unix-системы и большинство не-Unix сайтов, известно как TCP/IP. В этом разделе мы будем рассматривать его концепции.
Сети UUCP UUCP (UnixtoUnix copy)
UUCP впервые был предложен лабораториями Bell в 1977 году для связи между их Unix-сайтами. В середине 1978 эта сеть объединяла уже 80 машин. Она позволяла использовать электронную почту и удаленную печать. Сегодня UUCP не ограничивается только Unix-средами. Существует масса как коммерческих, так и бесплатных реализаций данного протокола на другие платформы, включая AmigoOS, DOS, Atari TOS и другие.
Один из главных недостатков UUCP-сетей их низкая пропускная способность. С одной стороны телефонное оборудование устанавливает жесткий предел на максимальную скорость передачи. С другой стороны UUCP-соединение редко постоянная связь: хосты соединяются друг с другом через определенный интервал. Следовательно, наибольшее количество времени при передаче почты через UUCP она просто лежит на диске некоторого хоста, обживающего установления следующего сеанса связи. Это вполне нормально для сервисов, подобных email, но не годится для интерактивных сервисов, например rlogin.
Несмотря на эти ограничения, имеется большое количество UUCP-сетей, работающих во всем мире главным образом под управлением энтузиастов, которые предлагают частный доступ к сети за разумные цены. Главная причина популярности UUCP в том, что это очень дешево по сравнению с наличием компьютера, связанного кабелем с Intеrnet, и может работать в условиях очень плохой связи (весьма актуально в России). Чтобы сделать Ваш компьютер UUCP-узлом, все, в чем Вы нуждаетесь, это модем, работающее программное обеспечение UUCP и другой UUCP-узел, который будет снабжать Вас почтой и новостями.
Мы рассмотрим настройку UUCP в отдельной главе, но в основном будем говорить о более распространенных сетях TCP/IP.
Схема 1.2. Пакеты и байты
Схема 1.2. Пакеты и байты
Если не вдаваться в детали и не придерживаться терминологии сетей TCP/IP, то при обмене информацией по сети TCP/IP при транспорте TCP, перед тем как начать отправку сообщения, устанавливается виртуальный TCP-канал. Это означает, что сначала выполняется процедура организации этого канала или, как ее еще называют, трехфазный "хэндшейк" (handshake). При этой процедуре стороной, которая устанавливает соединение отправляется запрос на организацию канала, затем получается подтверждение на получение этого запроса, после этого отправляется подтверждение на получение подтверждения и первый пакет данных (рисунок 1.3).
Схема 1.3. Процедура инициирования TCP-соединения
Схема 1.3. Процедура инициирования TCP-соединения
Аналогично началу TCP-обмена устроена и процедура разрыва виртуального TCP-канала. Также посылается уведомление об окончании соединения, получается подтверждение и только после этого канал разрывается.
Очевидно, что чем больше данных за один TCP-сеанс будет передано, тем более эффективней (с точки зрения соотношения переданной полезной и служебной информации) будет обмен. В этом смысле FTP работает эффективно. В начале сессии организуется канал, который потом будет использоваться для всего обмена. Если сравнить теперь FTP и HTTP (основной протокол World Wide Web), то станет ясно, что ориентированный на разрыв соединения после передачи порции данных HTTP гораздо менее эффективен, чем FTP.
Это небольшое отступление в область основ технологии межсетевого обмена должно было продемонстрировать, что при использовании той или иной технологии всегда следует помнить о том, как эта технология в конечном счете реализуется. Это важно, например, для выбора времени создания "зеркала" чужого FTP-архива. Если такое "зеркало" создавать в рабочее время в организации, где большое количество пользователей работает с информационными ресурсами Internet, то можно довольно сильно затормозить их работу. Особенно это актуально для организаций, которые работают по выделенным каналам связи с пропускной способностью 64Кб/с-128Кб/с и имеют в штате порядка сотни сотрудников, которые одновременно используют этот канал. Сервис FTP будет стремиться захватить канал целиком и это ему удастся сделать, т.к. HTTP будет использовать канал только в короткие промежутки времени.
При рассмотрении информационных технологий Internet следует также принимать во внимание тот факт, что они все взаимосвязаны и почти всегда можно получить доступ к одной из них через другую.
Так, например, к FTP-архиву можно обратиться через электронную почту или использовать Web-броузер для доступа к FTP-архиву. Все эти возможности предполагают использование программ-шлюзов. Если представить такое взаимодействие в виде схемы, то выглядеть это будет так, как представлено на рисунке 1.4.
Схема 1.4 Организация доступа к ресурсу через программы-посредники
Схема 1.4 Организация доступа к ресурсу через программы-посредники
На принципе использования посредников в настоящее время строится универсальная система доступа к ресурсам Internet из World Wide Web. Чем более широко внедряется Web на рабочие столы пользователей, тем меньше вероятность того, что им придется изучать технологии типа Telnet или FTP. Но это не означает, что эти технологии исчезли из сети. Администраторы узлов Web все равно обязаны знать, как все это спрятанное от пользователей "хозяйство" функционирует.
Схема 2.1. Структура взаимодействия участников почтового обмена
Схема 2.1. Структура взаимодействия участников почтового обмена
Основой любой почтовой службы является система адресов. Без точного адреса невозможно доставить почту адресату. В Internet принята система адресов, которая базируется на доменном адресе машины, подключенной к сети. Например, для пользователя paul
машины с адресом polyn.net.kiae.su
почтовый адрес будет выглядеть как:
paul@polyn.net.kiae.su.
Таким образом, адрес состоит из двух частей: идентификатора пользователя, который записывается перед знаком "коммерческого эй" - "@", и доменного адреса машины, который записывается после знака "@". Адрес UUCP был бы записан как строка вида:
net.kiae.su!polyn!paul
Программа рассылки почты Sendmail сама преобразует адреса формата Internet в адреса формата UUCP, если доставка сообщения осуществляется по этому протоколу.
Схема 2.2. Схема взаимодействия по протоколу SMTP
Схема 2.2. Схема взаимодействия по протоколу SMTP
Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.
Дисциплины работы и команды протокола. Обмен сообщениями и инструкциями в SMTP ведется в ASCII-кодах. В протоколе определено несколько видов взаимодействия между отправителем почтового сообщения и его получателем, которые здесь называются дисциплинами.
Наиболее распространенной дисциплиной является отправка почтового сообщения, которая начинается по команде MAIL, идентифицирующей отправителя:
MAIL FROM: paul@quest.polyn.kiae.su
Следующей командой определяется адрес получателя:
RCPT TO: paul@apollo.polyn.kiae.su
После того, как определен отправитель и получатель почтового сообщения, можно отправлять последнее:
DATA
Команда DATA вводится без параметров и идентифицирует начало ввода почтового сообщения. Сообщение вводится до тех пор, пока не будет введена строка с точкой в первой позиции. Согласно стандарту почтового сообщения RFC822 отправитель передает заголовок и тело сообщения, которые разделены пустой строкой. Сам протокол SMTP не накладывает каких-либо ограничений на информацию, которая заключена между командой DATA и "." в первой позиции последней строки. Приведем пример обмена сообщениями при дисциплине отправки почты:
S: MAIL FROM: <paul@quest.polyn.kiae.su> R: 250 Ok S: RCPT TO: <dobr@kiae.su> R: 250 Ok S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: Это текст почтового сообщения S: . R: 250
Другой дисциплиной, определенной в протоколе SMTP является перенаправление почтового сообщения (forwarding). Если получатель не найден, но известно его местоположение, то сервер может выдать сообщение:
R: 251 User not local; will forward to <user@domain.domain>
Если сервер может сделать только предположение о дальнейшей рассылке, то ответ будет несколько иным:
R: 551 User not local; please try <user@host.domain>
Верификация и расширение адресов составляют дисциплину верификации. В ней используются команды VRFY и EXPN. По команде VRFY сервер подтверждает наличие или отсутствие указанного пользователя:
S: VRFY paul R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>
Используя команду EXPN можно получить список местных пользователей:
S: EXPN Example-People R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su> R: 250-Vladimir Drach-Gorkunov<vovka@quest.polyn.kiae.su>
В список дисциплин, разрешенных протоколом SMTP входит кроме отправки почты еще и прямая рассылка сообщений. В этом случае сообщение будет отправляться не в почтовый ящик, а непосредственно на терминал пользователя, если пользователь в данный момент находится за своим терминалом. Прямая рассылка осуществляется по команде SEND, которая имеет такой же синтаксис, как и команда MAIL. Кроме SEND прямую рассылку осуществляют SOML (Send or Mail) и SAML (Send and Mail). Назначение этих команд легко понять из их названия.
Для инициализации канала обмена почтой и его закрытия используются команды HELO и QUIT соответственно. Первой командой сеанса должна быть команда HELO.
Протокол допускает рассылку почтовых сообщений в режиме оповещения. Для этой цели отправитель в адресе получателя может указать несколько пользователей или групповой адрес. Обычно, программное обеспечение SMTP выбирает эту информацию из заголовка почтового сообщения и на ее основе формирует параметры команд протокола.
Если сообщение по какой-либо причине не может быть разослано, то получатель формирует сообщение о неразосланном сообщении:
S: MAIL FROM:<> R: 250 Ok S: RCPT TO: <@host.domain:JOE@host.domain> R: 250 Ok S: DATA R: 354 send the mail data, end with . S: Date 23 Oct 95 11:23:30 S: From: SMTP@remote.domain S: To: <JOE@host.domain> S: S: Undelivered message. Your message lost. 550 No such user. S: .
При использовании доменных имен следует использовать канонические имена, т.к. некоторые системы не могут определить синоним по базе данных named.
Кроме выше перечисленных дисциплин протокол позволяет отправителю и получателю меняться ролями друг с другом. Происходит это по команде TURN.
Для отладки или проверки соединения по SMTP можно использовать telnet. Для этого вслед за адресом машины следует ввести номер порта:
/users/local>telnet apollo.polyn.kiae.su 25
25 порт используется в Internet для обмена сообщениями по протоколу SMTP. В интерактивном режиме пользователь сам изображает клиента SMTP и может посмотреть реакцию удаленной машины на его действия.
Схема 3.1. Схема почтового взаимодействия на базе программы Sendmail
Схема 3.1. Схема почтового взаимодействия на базе программы Sendmail
Вторая стадия рассылки почты - рассылка сообщений.
Как только одним из описанных выше способов sendmail получила сообщение, делается попытка его отправить по адресу. Для этого sendmail определяет три параметра: программу рассылки, узел сети и получателя. Эта процедура производится по правилам, которые содержатся в файле конфигурации. Sendmail сохраняет одну копию тела сообщения во временном файле, а заголовок загружает в оперативную память. Для каждого сообщения программа доставки (рассылки) сообщений вызывается отдельно. Если сообщение должно быть доставлено на разные машины, то для каждой из машин также вызывается своя программа доставки. Некоторые программы могут обслуживать сразу несколько абонентов одной машины, если это невозможно, то для каждого абонента вызывается также своя программа доставки. Рассматривают два типа рассылки: на удаленную машину и местную рассылку.
Рассылка на удаленную машину. Для вызова программы рассылки sendmail открывает pipe и запускает программу рассылки, командная строка которой находится в файле конфигурации. Sendmail записывает заголовок и тело сообщения в pipe. Если программа рассылки не использует протокол SMTP, то адрес получателя передается через pipe. Если используется SMTP, то открывается двунаправленный канал для интерактивного взаимодействия с удаленным сервером SMTP. Если в качестве транспортного протокола используется TCP, то sendmail не запускает внешнюю программу рассылки, а сама инициирует TCP-соединение с удаленным сервером SMTP.
Доставка местной почты. Если sendmail определяет, что адреса доставки местные, то происходит обращение к файлу адресных синонимов и производится преобразование адресов (расширение). Файл адресных синонимов можно использовать для перенаправления почты в файлы или для обработки местными программами. Пользователь может иметь и свой собственный файл адресных синонимов для управления рассылкой персональной почты. После преобразования адресов почта отправляется программе местной рассылки (например rmail).
Важным моментом при работе sendmail является алгоритм определения типа адресов. При использовании стандартного файла конфигурации применяются следующие правила: почта рассылается в соответствии с форматом адреса получателя, адреса при этом бывают местные, UUCP и SMTP.
Местные адреса имеют вид:
user user@localhost user@localhost.localdomain user@alias user@alias.localdomain user@[local.host.internet.address] localhost!user localhost!localhost!user user@localhost.uucp
Местный адрес - это адрес, который распознается как адрес машины, с которой осуществляется отправка почты.
Адреса UUCP имеют вид:
host!user host!host!user user@host.uucp
Если машина, с которой отправляется почта, имеет прямую линию связи по протоколу UUCP со следующей машиной (в адресе), то почта передается на эту машину, если такого соединения нет, то почта не рассылается и выдается сообщение об ошибке. Файл конфигурации должен содержать детальное описание маршрутов для пересылки сообщений на машины по протоколу UUCP.
Адреса SMTP - это адреса, описанные в стандарте RFC-822 или стандартные адреса Internet. Эти адреса имеют вид:
usr@host usr@host.domain <@host1,@host2,@host3:user@host4> user@[remote.host`s.internet.address]
Почта с адресами SMTP рассылается по протоколу SMTP.
Если в системе для адресации используется Berkeley Internet Name Domain (BIND) сервер, то sendmail может определять адреса получателей, используя сервис BIND. Если BIND не используется, то sendmail сама определяет адреса.
При рассылке почты можно использовать и смешанную адресацию:
user%hostA@hostB - почта отправляется с машины hostB на машину hostA user!hostA@hostB - почта отправляется с машины hostB на машину hostA hostA!user%hostB - почта отправляется с hostA на hostB
Подводя итог обсуждению принципов работы sendmail, следует специально подчеркнуть тот факт, что почта реально рассылается двумя принципиально разными способами. При использовании протокола UUCP почта рассылается по принципу "stop-go", т.е. сообщения передаются от машины к машине по указанному в адресе пути. Следует ясно представлять, если почта ушла с машины отправителя, то это не означает, что она поступит получателю. Промежуточная машина может вернуть почту назад, если не сможет разослать. Электронная почта действительно работает как система обычной почты, физически перемещая и храня сообщения на промежуточных почтовых станциях. При работе по протоколу SMTP почта реально отправляется только тогда, когда установлено интерактивное соединение с программой-сервером на машине-получателе почты. При этом происходит обмен командами между клиентом и сервером протокола SMTP в режиме on-line. При смешанной адресации доставка почты происходит по смешанному сценарию. Как шла доставка и как маршрутизировалось сообщение можно определить из заголовка сообщения, которое вы получили.
Анализ типа адресов в программе sendmail - это самый главный процесс, т.к. по типу адреса получателя sendmail определяет каким способом сообщение будет разослано. Вызов программы доставки вмонтирован в правила преобразования адресов отправителя и получателя. При этом как только система решит, что дальнейшее преобразование адреса нецелесообразно, так сразу вызывается программа доставки. Наибольшее число сообщений об ошибках при рассылке сообщений связано как раз с определением адреса получателя. В этом процессе принимают участие, по крайней мере, два сервиса Internet: система рассылки почтовых сообщений и служба доменных имен. Sendmail постоянно обращается к службе доменных имен на предмет канонизации имен электронной почты сверяет эти имена с теми, которые закреплены за компьютером, на котором данная система установлена. Если имена совпадают, то осуществляется местная рассылка по адресам местной почты.
Схема 3.2. Структура команды файла настроек sendmail
Схема 3.2. Структура команды файла настроек sendmail
Теперь разберем более подробно некоторые команды и секции файла настроек sendmail. Лучше всего это сделать на основе реального файла. Начнем с секции описания локальных параметров:
################## # local info # ################## Cwlocalhost CP. # UUCP relay host DYucbvax.Berkeley.EDU CPUUCP # BITNET relay host #DBmailhost.Berkeley.EDU DBrelay.kiae.su CPBITNET # "Smart" relay host (may be null) DSrelay.kiae.su # who I send unqualified names to (null means deliver locally) DR # who gets all local email traffic ($R has precedence for unqualified names) DH # who I masquerade as (null for no masquerading) DM # class L: names that should be delivered locally, even if we have a relay # class E: names that should be exposed as from this host, even if we masquerade #CLroot CEroot # operators that cannot be in local usernames (i.e., network indicators) CO @ % ! # a class with just dot (for identifying canonical names) C.. # dequoting map Kdequote dequote
Как видно из этого листинга, в данной секции описаны имя данной машины (Cwlocalhost), а также класс машин-шлюзов в другие почтовые системы (CP....). При этом наращивание класса происходит по мере описания шлюза для каждого из видов почтовых служб. В конце секции описаны символы, которые не могут использоваться в качестве имен пользователей или доменов.
Следующая секция - определение макросов sendmail:
###################### # Special macros # ###################### # SMTP initial login message De$j Sendmail $v/$Z ready at $b # UNIX initial From header format DlFrom $g $d # my name for error messages DnMAILER-DAEMON # delimiter (operator) characters Do.:%@!^/[] # format of a total name Dq$?x$x <$g>$|$g$. # Configuration version number DZ8.6.6
В данной секции описаны сообщения, которые выдает sendmail при взаимодействии с другими транспортными агентами. Как видно из этого описания, определение макроса это не только присваивание значения, но и выполнение определенных действий. Наиболее интересное предложение из всех - предложение, определяющее значение макроса q:
Dq$?x$x <$g>$|$g$.
Здесь описана условная подстановка значения. Все предложение можно описать следующей фразой:
Схема 3.4.
Схема 3.4.
Экран в bml делится на три части:
верхняя часть экрана занята падающими меню, позволяющими редактировать, просматривать и отправлять почту;
в средней части экрана расположено рабочее поле программы, в котором отображается список полученных сообщений и осуществляется редактирование посылаемых сообщений;
в нижней части экрана расположено вспомогательное меню функциональных клавиш.
При запуске программы в рабочем поле отображаются полученные сообщения, первое из которых выделено цветом. Выделенное цветом сообщение - это текущее сообщение. При этом рабочее поле разбито на четыре столбца. В первом столбце указывается адрес отправителя, во втором - дата и время получения, в третьем - число строк и символов в сообщении, четвертый столбец - тема сообщения. Для просмотра сообщения надо при помощи клавиш-стрелок сделать интересующее пользователя сообщение текущим и нажать Enter. В рабочем поле экрана появится текст сообщения (рисунок 3.5).
Схема 3.5.
Схема 3.5.
Для редактирования и подготовки сообщений следует воспользоваться режимами Create Mail и Edit mail из падающего меню Mail (рисунок 3.6).
Схема 3.6.
Схема 3.6.
Для перехода в падающее меню используется функциональная клавиша F9. Для отправки сообщения из режима редактирования следует нажать ALT+T или выйти в меню Post. При отправке почты следует заполнить специальную форму (рисунок 3.7).
Bml предоставляет еще ряд возможностей, облегчающих прием, просмотр и отправку почты (поддерживает список часто используемых адресов, посылку сообщений в телеконференции Usenet, автоматическую вставку двоичных файлов в формате uuencode и их автоматическое извлечение из полученных сообщений и ряд других). В целом, следует признать, что bml является достаточно удобным персональным средством работы с почтой.
Схема 3.7.
Схема 3.7.
Схема 3.8.
Схема 3.8.
Нажимая клавиши "j" и "k", можно перемещаться вверх и вниз по списку полученных сообщений, а при нажатии клавиши Enter пользователь переходит к просмотру полученного сообщения. Для реализации других возможностей elm пользователь вводит в командной строке после слова "Command:" соответствующую букву, например, для отправки сообщения следует ввести букву "М". Вслед за этим появится приглашение ввести адрес получателя, тему письма и возможных дополнительных адресатов. Затем elm вызовет внешний редактор (обычно vi). После того, как пользователь завершил редактирование письма и вышел из редактора, elm еще раз удостоверяется в том, что письмо следует отправить по указанному адресу и, если получает подтверждение, то отправляет его.
При работе c elm следует обратить внимание на тот факт, что при выполнении команды delete, письма реально не удаляются, а только помечаются как удаленные. Реальная очистка почтового ящика происходит только при выходе из программы и только по подтверждению пользователя.
Схема 3.9. Схема работы с почтовым сервером из-под MS-Windows и MS-DOS
Схема 3.9. Схема работы с почтовым сервером из-под MS-Windows и MS-DOS
Такая схема предполагает, что пользователь имеет почтовый ящик на машине-сервере, которая не выключается круглосуточно. Все почтовые сообщения складываются в этот почтовый ящик. По мере необходимости, пользователь из своего почтового клиента обращается к почтовому ящику и забирает из него пришедшую на его имя почту. При отправке программа-клиент обращается непосредственно к серверу рассылки почты и передает отправляемые сообщения на этот сервер для дальнейшей рассылки.
На рисунке 3.10 приведен экран Eudora, на котором представлено меню настройки и два почтовых ящика: принятых писем и отправленных писем.
На этом рисунке в меню настроек хорошо виден POP Account - адрес пользователя на машине-сервере, SMTP-сервер и POP (Ph) сервер. Как видно из настроек, Eudora каждые 30 минут проверяет почтовый ящик пользователя и сообщает о получении новых писем. Кроме того, что Eudora позволяет читать просто письма в обычном почтовом формате Internet (RFC822), о котором пойдет речь в следующем параграфе, она распознает и новый формат, ориентированный на отображение мультимедийных почтовых сообщений MIME, который последнее время становится все более популярен в Internet.
Схема 3.10. Интерфейс Eudora для MS-Windows
Схема 3.10. Интерфейс Eudora для MS-Windows
Для установки этого интерфейса требуются определенные знания и доступ к информации, которой располагает только системный администратор, поэтому предпочтительней обратиться именно к нему с просьбой об установке программы или за необходимой информацией (адреса машин серверов). Работа с Eudora чрезвычайно проста: надо выбирать при помощи мыши или клавиатуры интересующие вас сообщения и отправлять в "корзину" то, что бесполезно.
И последнее замечание относительно работы из под MS-Windows с почтой в Internet. Если пользователь пишет только по-английски, то у него нет проблем с кодировкой и набором текста, но если он пишет по-русски и получает такие же сообщения, то сразу же возникают проблемы. Дело в том, что большинство почтовых сетей для обмена данными между серверами используют кодировку KOI8. Эта кодировка отличается как от кодировки для MS-DOS, так и от кодировки MS-Windows. Поэтому, возвращаясь к иллюстрации с настройками интерфейса Eudora, хочется обратить внимание читателя на поля "Send Font" и "Printer Font". В этих полях указан шрифт "Arial-Relcom", который разложен по кодировке KOI8, и используется для отображения и печати почтовых сообщений. Для того, чтобы правильно набирать сообщения, следует к стандартным раскладкам клавиатуры в драйвере клавиатуры (cyrwin, например) добавить раскладку для KOI8.
При этом драйвер должен уметь менять раскладку по мере необходимости. В противном случае у пользователя будет возможность читать сообщения, но не набирать их.
Схема 4.1. Схема взаимодействия компонентов FTP-обмена
Схема 4.1. Схема взаимодействия компонентов FTP-обмена
При этом следует четко понимать, что Archie и FTP - это совершенно разные технологии. В большинстве случаев доступ к Archie-серверу пользователи осуществляют из Archie-клиента, который находится на той же машине, что и сервер, т.е. сначала пользователь по Telnet заходит как пользователь Archie, а потом использует программу-клиент (обычно она запускается в качестве оболочки) для доступа к Archie серверу.
Схема 4.2. Модель протокола
Схема 4.2. Модель протокола
В FTP соединение инициируется интерпретатором протокола пользователя. Управление обменом осуществляется по каналу управления в стандарте протокола TELNET. Команды FTP генерируются интерпретатором протокола пользователя и передаются на сервер. Ответы сервера отправляются пользователю также по каналу управления. В общем случае пользователь имеет возможность установить контакт с интерпретатором протокола сервера и отличными от интерпретатора пользователя средствами.
Команды FTP определяют параметры канала передачи данных и самого процесса передачи. Они также определяют и характер работы с удаленной и локальной файловыми системами.
Сессия управления инициализирует канал передачи данных. При организации канала передачи данных последовательность действий другая, отличная от организации канала управления. В этом случае сервер инициирует обмен данными в соответствии с параметрами, согласованными в сессии управления.
Канал данных устанавливается для того же host'а, что и канал управления, через который ведется настройка канала данных. Канал данных может быть использован как для приема, так и для передачи данных.
Возможна ситуация, когда данные могут передаваться на третью машину. В этом случае пользователь организует канал управления с двумя серверами и организует прямой канал данных между ними. Команды управления идут через пользователя, а данные напрямую между серверами (рисунок 4.3).
Канал управления должен быть открыт при передаче данных между машинами. В случае его закрытия передача данных прекращается.
Схема 4.3. Соединение с двумя разными серверами и передача данных между ними
Схема 4.3. Соединение с двумя разными серверами и передача данных между ними
Соединение с сервером новостей
Для связи с сервером нужно просто открыть TCP-соединение с портом для NNTP. После этого будет показано приветственное приглашение сервера. Одна из первых команд, которые Вы могли бы попробовать: help. Ответ, который Вы получите, зависит от того, чем считает Вас сервер: удаленным NNTP-сервером или программой чтения новостей (newsreader), так как имеются различные наборы команд. Вы можете изменять режим доступа, используя команду mode:
Соединение с сервером новостей
Для связи с сервером нужно просто открыть TCP-соединение с портом для NNTP. После этого будет показано приветственное приглашение сервера. Одна из первых команд, которые Вы могли бы попробовать: help. Ответ, который Вы получите, зависит от того, чем считает Вас сервер: удаленным NNTP-сервером или программой чтения новостей (newsreader), так как имеются различные наборы команд. Вы можете изменять режим доступа, используя команду mode:
$ telnet news.vbrew.com nntp
Trying 172.16.1.1... Connected to localhost. Escape character is '^]'. 200 news.vbrew.com InterNetNews server INN 1.7.2 08-Dec-1997 ready help
100 Legal commands authinfo help ihave check takethis list mode xmode quit head stat xbatch xpath xreplic For more information, contact "usenet" at this machine. .
|
Ответы NNTP всегда клнчаются точкой (.) в начале строки. Числа в выводе задают коды ответа (response codes) и означают результат запроса (норма или произошла какая-то ошибка). Они описаны в RFC-977; мы будем говорить о наиболее важных.
Соглашения принятые в книге Все
Ниже приведен перечень использованных в книге шрифтовых выделений:
Italic
Использован для имен файлов, программ, каталогов, опций командной строки, адресов e-mail, путевых имен, URL и для новых терминов.
Boldface
Использован для имен машин, хостов, сайтов, пользователей и ID.
Constant Width
Использован для показа содержимого файлов, примеров скриптов, вывода команд и для того, чтобы выделить системные переменные и ключевые слова, которые появляются в коде.
Constant Width Italic
Обозначает переменные параметры, ключевые слова или текст, который пользователь должен заменить на свое фактическое значение.
Constant Width Bold
Использован в примерах, чтобы показать команды или другой текст, который должен печататься пользователем буквально.
Предупреждение |
Текст, выделенный этим способом представляет собой предупреждение. Вы можете здесь сделать ошибку, которая причинит вред Вашей системе, причем немалый. |
Создание подсетей Чтобы оперировать
Например, менеджер сети Brewery обращается к NIC за сетевым адресом класса В. Чтобы разместить две сети Ethernet, он решает использовать восемь битов части хоста как дополнительные подсетевые биты. Это оставляет другие восемь битов для хоста, то есть по 254 хоста в каждой полсети. Он также назначает подсеть 1 brewery и 2 winery. Их сетевые адреса таким образом 172.16.1.0 и 172.16.2.0. Сетевая маска 255.255.255.0.
vlager, который является gateway между двумя сетями, получил адрес хоста, равный 1 в обоех из них, что дает ему IP-адреса 172.16.1.1 и 172.16.2.1 соответственно.
Обратите внимание, что в этом примере я использую сеть класса B для простоты: сеть класса C была бы более реалистичной. С новым сетевым кодом деление на подсети не ограничено границами байта, так что даже сеть класса C может быть разделена на несколько подсетей. Например, Вы могли бы использовать 2 бита части хоста для сетевой маски, что дает четыре возможные подсети с 64 хостами в каждой.
Списки рассылки по Linux
Есть огромное число специализированных списков рассылки.
Списки рассылки по Linux
Есть огромное число специализированных списков рассылки.
Очень много списков поддерживаются Rutgers University. Подписка письмом:
To: majordomo@vger.rutgers.edu Subject: Body: subscribe listname
|
Нам интересны списки:
linux-net
Дискуссии о сетях в Linux.
linux-ppp
Реализация Linux PPP.
linux-kernel
Обсуждение ядра Linux.