В этой лекции
Чтобы правильно посылать и принимать почту от других систем, на почтовом сервере под управлением ОС Linux должна быть установлена программа — почтовый транспортный агент (Mail Transport Agent — MTA). Работа МТА заключается в обработке почтовых сообщений, а не в доставке их локальному пользователю, как иногда думают. Если МТА принимает сообщение, направленное локальному пользователю, то он просто передает его другой программе, которая занимается его доставкой. Сообщения, адресованные пользователям удаленных хостов, будут направляться либо на эти хосты, либо передаваться узлу, который сможет далее переслать их по назначению. После того как сообщение передано, работа МТА завершена.
Для ОС Linux существует довольно много программ — почтовых транспортных агентов. Некоторые из них обладают более широкой функциональностью, в то время как другие легче в работе, с точки зрения администратора почтовой системы. Прабабушкой всех МТА-программ для платформы UNIX является программа sendmail. Довольно часто ее называют самой универсальной программой МТА, но в то же время она наиболее сложна в настройке. Компоненты программы sendmail описаны в этой лекции. Вопросы конфигурирования sendmail для работы на почтовом сервере под управлением ОС Linux рассмотрены в лекции 11, "Установка и конфигурирование sendmail".
sendmail и безопасность
Программа sendmail используется на
многих платформах уже на протяжении
нескольких десятков лет. В первые годы ее
применения были выявлены практически все
черные входы и дыры в программе, которые
позволяли хакерам проникать в систему.
Например, общеизвестна реакция sendmail на SMTP
команды debug и wiz.
Получив при анонимном SMTP-сеансе
посредством этих команд доступ в систему,
через другие программы хакер мог получить
права пользователя root.
Когда программа sendmail стала популярной, то
все черные ходы были закрыты и ошибки в
программе были исправлены.
К сожалению, многие администраторы почтовых систем отвергают возможность применения sendmail, ссылаясь на старые черные ходы в ней, которые уже давно закрыты. Конечно, время от времени обнаруживаются новые ошибки в программе, которые позволяют получить несанкционированный доступ к системе. Однако это случается не чаще, чем с другими пакетами для работы с почтой. Так как квалификация хакеров в сети Internet с каждым годом повышается, соответствующим образом должна расти сложность программного обеспечения. Единственное, что может противопоставить растущему числу хакеров программа sendmail, это наличие профессиональных программистов, которые работают над ее улучшением. Они достаточно квалифицированы, чтобы постоянно исправлять и улучшать программный код sendmail, сохраняя его стабильность и уровень безопасности. Не так много пакетов для работы с почтой могут похвастаться тем же.
Так что было бы неосмотрительно только из-за слухов о неблагонадежности sendmail отказываться от ее преимуществ.
Программа sendmail не работает в одиночку. Для обеспечения нормальной работы sendmail требуется наличие определенных файлов и каталогов. В этом разделе описаны файлы и каталоги, которые требуются для работы программы sendmail. Иногда, в зависимости от заданной конфигурации, могут понадобиться и другие файлы. В лекции 11 описаны некоторые дополнительные файлы, необходимые для работы sendmail.
Путь: /usr/sbin/sendmail
Программа sendmail является главным
двигателем при передаче почты. Обычно она
запускается в фоновом режиме в виде
процесса-демона, который ожидает появления
входящих почтовых сообщений и проверяет
очередь исходящих почтовых сообщений через
установленные интервалы времени. В
качестве альтернативы можно определенным
образом сконфигурировать sendmail для запуска
по запросу программы inetd,
управляющей всеми TCP-портами. Таким образом
можно сэкономить ресурсы памяти на сервере,
так как при этом программа sendmail не работает
в фоновом режиме, а следовательно, не
занимает память. Вместе с тем такая
организация работы sendmail приводит к
снижению производительности, так как в этом
случае sendmail при каждом запуске должна
перечитывать файлы конфигурации. Программа
sendmail может получать доступ к каталогам
пользователя root, так как
ей задан .
Другие пользователи также могут запускать
sendmail, но при этом они не смогут получить
доступ ко многим каталогам, которые
требуются для работы sendmail, например к
очереди почтовых сообщений.
Путь: /etc/sendmail.cf
Для правильной работы sendmail на
локальном почтовом сервере необходимо
сконфигурировать ее в соответствии со
своими специфическими требованиями. Все
определения, касающиеся обработки почты
программой sendmail, хранятся в файле
конфигурации /etc/sendmail.cf.
Все они называются наборами правил (rule set).
Наборы правил применяются в sendmail для
анализа адресов отправителя и получателя
сообщения, а также для определения способа
его доставки получателю. При запуске
программа sendmail читает содержимое файла
конфигурации, так что, если в него вносились
какие-либо изменения, нужно перезапустить
sendmail, чтобы они возымели действие.
Путь: /var/spool/mqueue
Каталог mqueue
создается для хранения всех почтовых
сообщений, которые ожидают обработки в
очереди. Владельцем этого каталога
является пользователь root.
Программа sendmail удостоверяется в том, что
все файлы очереди почтовых сообщений
хранятся в этом каталоге и имеют
соответствующие права доступа, которые не
позволяют обычным пользователям читать
сообщения, находящиеся в очереди.
Местоположение каталога очереди почтовых
сообщений можно изменять. Это делается либо
изменением соответствующего параметра в
файле sendmail.cf, либо
запуском sendmail из командной строки со
специальным параметром.
Путь: /usr/sbin/mailq
Программа mailq
является символической связью с программой
sendmail. При ее запуске программа sendmail
отображает содержимое очереди почтовых
сообщений.
Путь: /usr/sbin/newaliases
Программа newaliases
также является символической связью с
программой sendmail. При ее запуске считываются
текстовые псевдонимы из файла aliases и с помощью стандартного пакета по
поддержке баз данных в ОС Linux создается база
данных псевдонимов. В ОС Linux при этом обычно
создается хешированный файл базы данных.
Путь: /etc/aliases
В файле /etc/aliases
администратор почтовой системы может
указать почтовые псевдонимы для
пользователей. Файл /etc/aliases
является текстовой версией псевдонимов из
хешированной базы данных, которая
используется программой sendmail. Каждый
псевдоним должен указываться в отдельной
строке в виде:
alias: userid,
где alias —
имя псевдонима, а userid —
имя пользователя локальной системы.
После того как в файл псевдонимов
были внесены изменения, администратору
почтовой системы необходимо запустить
программу newaliases
для создания хешированной базы данных в /etc/aliases.db.
Программа sendmail при обработке сообщений
читает файл хешированной базы данных
псевдонимов. Если в поле получателя
содержится имя, которое совпадает с именем
в базе данных псевдонимов, то сообщение
передается получателю с указанным
псевдонимом.
Как правило, при установке ОС Linux автоматически
создается несколько пользователей системы,
которые обычно не используются в
дальнейшей работе. Все эти имена можно с
помощью псевдонимов присвоить одному
пользователю. Теперь легко отследить
некорректное поведение почты или даже
идентифицировать попытки
несанкционированного доступа в локальную
систему. В листинге 10.1 показан пример файла aliases,
где используется подобный механизм.
1 # 2 # @(#)aliases 8.2 (Berkeley) 3/5/94 3 # 4 # Aliases in this file will NOT be expanded in the header from 5 # Mail, but WILL be visible over networks or from /bin/mail. 6 # 7 # >>>>>>>>> The program "newaliases".must be run after 8 # >>>NOTE>>> this file is updated for any changes to 9 # >>>>>>>> show through to sendmail. 10 # 11 12 # Basic system aliases -- these MUST be present. 13 MAILER-DAEMON: postmaster 14 postmaster: root 15 16 #General redirections for pseudo accounts. 17 bin: root 1B daemon: root 19 games: root 20 ingres: root 31 nobody: root 32 system: root 23 toor: root 24 uucp: root 25 26 #Well-known aliases. 27 manager: root 29 dumper: root 29 operator:root 30 31 #trap decode to catch security attacks 33 decode: root 33 34 #Person who should get root's mail 35 root: rich
В строках 13 и 14 листинга 10.1
определены псевдонимы для имени
пользователя, которому посылаются
сообщения об ошибках (наверняка вы часто
сталкивались с сообщением "О всех ошибках
при работе с электронной почтой
обращайтесь к root.
В строках 17–24 задаются псевдонимы для
пользователей, которые при установке
системы обычно не получают прав
пользователя root. Далее в
строках 27–32 задаются псевдонимы для
некоторых стандартных пользователей
системы. И наконец, в строке 35 дается
указание всю почту, адресованную
пользователю root,
перенаправлять администратору почтовой
системы, так как ни один уважающий себя
администратор не регистрируется в системе c
правами root.
Учетная запись postmaster
С ростом популярности сети Internet,
и в частности WEB, стала активно
использоваться учетная запись
пользователя
Путь: /usr/sbin/hoststat
Программа hoststat
является еще одной символической связью с
программой sendmail. При ее выполнении
программа sendmail пытается прочесть файл
статистики по хосту и отобразить состояние
последнего действия, произведенного с
почтой, всем удаленным хостам, куда она
отправила почту.
Путь: /usr/sbin/purgeststat
Программа purgeststat
также является символической связью с
программой sendmail. При запуске purgeststat
программа sendmail удаляет всю статистическую
информацию из файла статистики по хосту.
Путь: /var/spool/mqueue/.hoststat
В каталоге /var/spool/mqueue/.hoststat
содержатся файлы, в которых хранится
статистическая информация по каждому
удаленному хосту. Эти файлы используются
программой для отображения текущего
состояния операций с удаленным хостом.
Путь: /etc/sendmail.st
Если ведется файл sendmail.st,
то это говорит о том, что администратор
почтовой системы желает вести сбор
статистики об исходящем почтовом трафике.
Изначально этот файл создается с нулевым
размером. Хотя по умолчанию он обычно
находится в каталоге /etc,
во многих версиях ОС Linux, таких как, Red Hat, Caldera
и Mandrake, желательно изменить местоположение
этого файла, заданное по умолчанию, на /var/log/sendmail.st.
Путь: $HOME/.forward
Каждому пользователю в системе
можно создать в рабочем каталоге файл .forward.
При попытке передать почту для локального
пользователя посредством локального
почтового процессора программа sendmail
проверяет наличие этого файла. Если он
существует и в нем указан адрес электронной
почты, то sendmail будет пересылать сообщение
на этот адрес. Адреса электронной почты
должны быть указаны в стандартном формате ( username@hostmname )
по одному в строке.
Предупреждение
Избегайте появления петель при работе почты. Например, если почта от пользователя katie пересылается пользователю jessica, а пользователь jessica пересылает ее обратно katie, то, естественно, sendmail будет бесконечно пересылать их от одного пользователя к другому и обратно. Довольно часто обнаружить такую ситуацию не представляется возможным, так как никаких сообщений при этом не генерируется.
Путь: /usr/lib/sendmail.hf
С помощью файла sendmail.hf и команды SMTP HELP
на экран выводится справка о командах. Файл
справки имеет специфический формат,
который анализирует sendmail, когда удаленные
хосты обращаются к ней с помощью команды HELP.
Как уже отмечалось в лекции 5, "Протокол SMTP",
клиенты могут выдавать команду HELP
либо в общем виде, либо сужать границы ее
действия до конкретной команды, на которую
требуется справка. Для облегчения работы
sendmail с файлом справки в каждой строке файла
ставятся специальные метки, обозначающие
начало строки. В листинге 10.2 представлен
фрагмент файла sendmail.hf.
1 cpyr 2 cpyr Copyright (c) 1998 sendmaili Inc. All rights reserved. 3 cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. 4 cpyr Copyright (c) 1988, 1993 5 cpyr The Regents of the University of California. All rights reserved. 6 cpyr 7 cpyr 8 cpyr By using this file, you agree to the terms and conditions set 9 cpyr forth in the LICENSE file which can be found at the top level of 10 cpyr the sendmail distribution. 11 cpyr 12 cpyr @(#)sendmail.hf 8,18 (BerKeley) 11/19/1998 13 cpyr 14 smtp Topics: 15 smtp HELO EHLO MAIL RCPT DATA 16 smtp RSET NOOP QUIT HELP VRFY 17 smtp EKPN VERB ETRN DSN 18 smtp For more info use "HELP <topic>". 19 smtp To report bugs in the implementation send email to 20 smtp sendmail-bugs@sendmail.org. 21 smtp For local information send email to Postmaster at your site. 22 help HELP [ <topic> ] 23 help The HELP command gives help info. 24 helo HELO <hostname> 25 helo Introduce yourself. 26 ehlo EHLO <hostname> 27 ehlo Introduce yourself, and request extended SMTP mode. 28 ehlo Possible replies include: 29 ehlo SEND Send as mail [RFC821] 30 ehlo SOML Send as mail or terminal [RFC821] 31 ehlo SAML Send as mail and terminal [RFC821] 32 ehlo EXPN Expand the mailing list [RFC821] 33 ehlo HELP Supply helpful information [RFC821] 34 ehlo TURN Turn the operation around [RFC821] 35 ehlo 8BITMIME Use 8-bit data [RFC1652] 36 ehlo SIZE Message size declaration [RFC1870] 37 ehlo VERB verbose [Allman] 33 ehlo ONEX One message transaction only [Allman] 39 ehlo CHUNKING Chunking [RFC1830] 40 ehlo BINARYMIME Binary MIME [RFC1830] 41 ehlo PIPELINING Command Pipelining [RFC1854] 42 ehlo OSN Delivery Status notification [RFC1891] 43 ehlo ETRM Remote Message Queue Starting [RFC1985] 44 ehlo XUSR Initial (user) submission [Allman] 45 mail MAIL FROM: <sender> [ <paranieters> ] 46 mail Specifies the sender. Parameters are ESMTP extensions. 47 mail See "HELP DSN" for dstails 48 rcpt RCPT TO: <recipient> [ <parameters>] 49 rcpt Specifies the recipient.Can be used any number of times. 50 rcpt Parameters are ESMTP extensions. See "HELP DSN" for details. 51 data DATA 52 data Following text is collected as the message. 53 data End with a single dot. 54 rset RSET 55 rset Resets the system. 56 quit QUIT 57 quit Exit sendmail (SMTP).
В строках 14–21 листинга 10.2
задаются стандартные справочные сообщения,
которые выводятся с помощью команды HELP.
После этого каждая отдельная команда
выводится слева, а справа выводится
справочное сообщение. Например, с помощью
команды 'HELP MAIL'
клиенту будут выданы строки 45, 46 и 47. Для
проверки самостоятельно войдите на TCP-порт
25 и задайте команды SMTP, описанные в лекции 5 (см.
листинг 10.3).
1 [kevin@shadrach kevin]$ telnet localhost 25 2 Trying 127.0.0.1... 3 Connected to localnost. 4 Escape character is '^]'. 5 220 shadracn.smallorg.org ESMTP sendmaill 8.9.3/8.9.3; Tue, 5 Oct 1999 19:39 -0500 6 HELP MAIL 7 214-MAIL FROM: <sender> [ <parameters> ] 8 214- Specifies the sender. Parameters are ESMTP extensions. 9 214- See "HELP DSN" for details. 10 214 End Of HELP info 11 QUIT 12 221 shadrach.smallorg.org closing connection 13 Connection closed by foreign host. 14 [kevin@shadrsch kevin]$
Синтаксис команд программы sendmail часто может вызывать такие же трудности, как и файл конфигурации sendmail. В этом разделе описаны параметры, которые влияют на работу программы sendmail.
Формат команд sendmail:
sendmail [flags] [address ...]
При запуске sendmail по умолчанию без
флагов начинает считываться стандартный
ввод пока программа не достигнет метки
конца файла или строки с одной точкой ( .).
Затем делается вывод о том, что sendmail имеет
дело с текстовым сообщением и она пытается
передать его по адресу, указанному в
командной строке. Такой алгоритм работы
sendmail полностью повторяет поведение
программы mail в ОС
Linux. Однако это нестандартный путь
применения sendmail. Хотя это лишний раз
подтверждает универсальность sendmail. Однако
для поддержки работы почтового сервера на
базе ОС Linux мы в основном будем
рассматривать работу sendmail в фоновом режиме
в качестве процесса-демона.
Управление поведением sendmail
можно осуществлять с помощью флагов,
задаваемых при запуске из командной строки.
Флаги sendmail делятся на две группы. К первой
группе относятся параметры, которые
оказывают влияние непосредственно на
действия, выполняемые sendmail. В то же время
вторая группа позволяет изменять значения
параметров в файле конфигурации. Значения
параметров в конфигурационном файле
никогда не меняются.
Итак, поведением программы sendmail можно управлять с помощью параметров командной строки. Функционирование sendmail довольно сильно зависит от параметров, заданных при запуске в командной строке. По умолчанию при запуске программа sendmail считывает свой файл конфигурации и получает из него значения важных параметров. Параметры командной строки могут применяться для изменения этих значений "на лету". Таким образом отпадает необходимость в создании нового файла конфигурации. В этом разделе описаны параметры и их влияние на работу sendmail.
Параметр: -B
Параметр -B
описывает для sendmail формат тела сообщения.
Значения этого параметра варьируют между 7BIT
и 8BITMIME.
Параметр: -b
Режим работы sendmail
устанавливается параметром -b.
В табл. 10.1 представлены возможные
значения этого параметра.
| Режим | Описание |
|---|---|
a |
Режим ARPANET |
d |
Запуск в фоновом режиме в качестве процесса-демона |
D |
Запуск в активном режиме |
h |
Отображение базы данных хостов (то же, что и hoststat) |
H |
Очистка базы данных хостов (то же, что и purgestat) |
i |
Инициализация базы данных псевдонимов |
m |
Доставить почту (по умолчанию) |
p |
Отобразить содержимое очереди почтовых сообщений (то же, что и mailq) |
s |
Использовать для ввода-вывода протокол SMTP |
t |
Запустить в тестовом режиме |
v |
Только проверять имена. Сообщения не доставляются |
Большинство параметров
запускаются только с правами пользователя root.
Таким образом, в sendmail осуществляется
ограничение доступа для других
пользователей. Обычно sendmail запускается в
фоновом режиме в виде процесса-демона с
параметром -bd. При
тестировании нового файла конфигурации
применяется параметр -bt.
В этом режиме sendmail обрабатывает набор
правил и генерирует результаты своей
работы без обработки реального почтового
трафика на сервере. Это дает возможность
любому пользователю запускать sendmail с
параметром -bt, не
вызывая конфликтов, даже когда в фоновом
режиме запущен еще один процесс-демон sendmail.
Параметр: -С
С помощью параметра -С
программе sendmail указывается обращаться к
другому файлу конфигурации, отличному от
файла конфигурации по умолчанию ( /etc/sendmail.cf ).
Когда задан этот параметр, sendmail запускается
с правами того пользователя, который
инициировал запуск sendmail, а не с правами root.
Как правило, этот параметр используется при
тестировании новых файлов конфигурации,
хотя его можно задавать и для ссылки на
альтернативный файл конфигурации. При
тестировании нового файла конфигурации с
параметром -bt
можно задавать и параметр -С.
То есть не нужно изменять оригинальный файл
конфигурации — тестирование проводится
с альтернативным файлом.
Параметр: -d
При задании в командной строке
параметра -d
активируются флаги для отладки sendmail.
Различным флагам отладки соответствуют
различные уровни отладки. С параметром -d
можно указывать несколько флагов.
Флаги отладки позволяют детализировать информацию, выводимую в стандартных файлах отчета. Каждый флаг отладки позволяет детализировать уровень вывода информации в файлах отчетов для определенной почтовой функции. В табл. 10.2 представлены примеры задания параметров отладки.
| Параметр | Описание |
|---|---|
-d1 |
Устанавливает флаг отладки 1 для уровня 1 |
-d1.4 |
Устанавливает флаг отладки 1 для уровня 4 |
-d2-5.2 |
Устанавливает флаги отладки 2–5 для уровня 2 |
-d12.9,15.9 |
Устанавливает флаги отладки 12 и 15 для уровня 2 |
Будьте осторожны при использовании дополнительных режимов отладки. При установлении более высокого уровня отладки в файлах отчетов формируется больше строк, что может привести к переполнению диска.
Параметр: -F
С помощью параметра -F
устанавливается полное имя отправителя
сообщения. При доставке сообщения на
удаленный узел sendmail
устанавливает это значение в сообщении в
поле From: (От:).
Параметр: -f
С помощью этого параметра
пользователь может изменить имя
отправителя сообщения в поле From: (От:) на имя, под
которым он зарегистрировался в системе.
Этот механизм может использоваться только
для пользователей с высоким уровнем
доверия типа root или daemon.
Параметр: -h
Параметром -h
определяется максимальное количество
переприемов, разрешенное для сообщения.
Когда почтовый сервер выбирает маршрут для
сообщения, счетчик переприемов
увеличивается на единицу. При прохождении
каждого узла этот счетчик также
увеличивает свое значение. Если число
переприемов превысило установленное этим
параметром значение, то sendmail бракует
сообщение и прекращает его доставку. Этот
параметр помогает бороться с петлями при
маршрутизации почты.
Параметр: -i
Параметр -i
заставляет sendmail игнорировать строки с
одиночными точками. По умолчанию принято,
что строка с одной точкой указывает на
конец сообщения. Этот параметр часто
используется при чтении данных из файла,
где возможны одиночные точки в строках,
которые не обозначают конец сообщения. В
случае применения этого параметра в
качестве символа, обозначающего конец
сообщения, используется символ Ctrl+D (ASCII 0x04 ).
Параметр: -N
Параметр -N
определяет выдачу уведомления о текущем
состоянии сообщения. Этот параметр может
принимать значения NEVER, FAILURE, DELAY
и SUCCESS. Значение NEVER
говорит о том, что выдавать уведомление не
нужно. Значение FAILURE
означает, что сообщение не доставлено. Если
sendmail задано получать уведомление, то
значение DELAY
означает задержку сообщения, а SUCCESS
говорит об успешной отправке сообщения.
Параметр: -n
Параметром -n
в sendmail запрещается пересылка и
использование почтовых псевдонимов.
Параметр: -p
Параметр -p
определяет протокол, который будет
использоваться для доставки сообщения.
Значения этого параметра могут определять
либо просто тип используемого протокола,
как, например, SMTP
или , либо тип
протокола и транзитный хост, разделенные
двоеточием ( smtp:mail.isp.net
или ).
Если задан этот параметр, то sendmail пытается
при доставке сообщения использовать
заданные протокол и хост, в противном
случае будут использоваться установки,
взятые из файла конфигурации. Этот параметр
нужно использовать для временного
перенаправления почты на другой узел, если
основной узел неисправен.
Параметр: -q
Параметр -q
определяет способы обработки почты в
очереди. Когда он задан без других
параметров, то sendmail один раз обрабатывает
очередь почтовых сообщений и выключается.
С параметром -q
можно задавать интервалы времени, через
которые sendmail будет повторять обработку
очереди. Интервалы времени можно задавать в
секундах ( s ),
минутах ( m ), часах ( h ),
днях ( d ) и неделях ( w ).
Так, например, -q30m
задает sendmail обрабатывать очередь почтовых
сообщений с интервалом 30 минут и отсылать
сообщения, ждущие отправки. Довольно часто
этот параметр задается совместно с
параметрами -bd,
что позволяет запускать sendmail в фоновом
режиме и регулярно обрабатывать сообщения
в очереди.
Существует и другой формат
использования параметра -q —
с применением специальных строк для
обработки почтовых сообщений в очереди.
Согласно этому формату, sendmail ищет заголовки
почтовых сообщений, содержащие строку string,
и обрабатывает все сообщения, которые
найдены по этому критерию. Эти типы
форматов включают в себя:
-qIstring —
поиск строки в очереди со специфическим
идентификатором;-qRstring —
поиск строки с определенным получателем
сообщения;-qSstring —
поиск строки с заданным отправителем
сообщения.В командной строке разрешено
использовать несколько параметров -q
этого типа. Этот формат позволяет
администратору почтовой системы
обрабатывать определенные сообщения из
очереди без их пересылки. Этот механизм
часто используется при аварийном останове
почтовой системы, когда в очереди имеются
сохраненные сообщения. Часто в таком случае
требуется обработать определенные
сообщения в первую очередь.
Параметр: -R
Параметр -R
определяет какое сообщение будет
выдаваться при невозможности доставки
сообщения получателю. Этот параметр может
принимать значения " full "
для вывода полного текста исходного
сообщения и " "
для вывода заголовка сообщения в формате
RFC822.
Параметр: -t
По параметру -t
из заголовка сообщения формата RFC822
извлекаются адреса получателей сообщения.
При этом сканируются все строки To:, CC: и :.
Затем сообщение посылается по указанным
адресам.
"Невидимые" копии
Назначение поля : заключается в рассылке
сообщений определенным получателям, о
которых основные получатели сообщения не
ставятся в известность. Поэтому перед
передачей сообщения строки :
из него удаляются.
Параметр: -U
Параметр -U
сигнализирует о том, что сообщение было
послано почтовым пользовательским агентом
(MUA), а не получено от другого почтового
транспортного агента (МТА). Это позволяет
sendmail обрабатывать сообщения в зависимости
от того, откуда получено сообщение. Однако в
настоящее время функции по обработке
сообщений, обеспечиваемые этим параметром,
не поддерживаются.
Параметр: -V
Параметр -V
задает идентификатор конверта.
Идентификатор конверта используется в
заголовке формата RFC822 для уникальной
идентификации сообщения. Устанавливая
идентификатор конверта в sendmail, почтовая
программа сможет идентифицировать
сообщения, исходящие от -N
для идентификации сообщений, которые не
были доставлены удаленным МТА.
Параметр: -v
Использование sendmail в режиме
детализации задается параметром -v.
Все задачи, выполняемые sendmail, при этом будут
выдаваться на стандартный вывод. Этот
параметр используется при отладке работы
sendmail и не используется, когда она работает в
нормальном режиме.
Параметр: -X
Параметр -X
определяет файлы отчета, где sendmail
протоколирует все входящие и исходящие
соединения. Использование этого параметра
приводит к стремительному росту объемов
файлов отчетов, поэтому его желательно
использовать только для отладки.
Параметр: --
Параметр -- указывает на окончание списка
параметров и говорит о том, что все
остальные параметры за ним будут
интерпретироваться как адрес.
Параметр: -O
-o
Параметры -O
и -o используются
для замены значений параметров в файле
конфигурации. Параметры в файле
конфигурации определяют поведение sendmail на
локальном компьютере и то, каким образом
она взаимодействует с удаленными узлами.
Ранее в sendmail применялись односимвольные
параметры, однако вскоре обнаружилась
нехватка символов для описания новых
параметров. Тогда были разработаны
параметры с более длинными именами, и для их
описания уже использовались целые строки
текста.
С помощью параметра -o
задаются значения любым коротким (односимвольным)
параметрам. Формат этого параметра
следующий:
-ox value,
где x — имя
односимвольного параметра, а value —
его требуемое значение.
По параметру -O
заменяются длинные параметры файла
конфигурации. Этот параметр имеет
следующий формат:
-O option=value,
где option —
имя параметра, а value —
его значение. В следующем разделе "Файл
конфигурации sendmail" описываются параметры
sendmail и их применение при управлении sendmail.
Программе sendmail, как и любой
другой, нужно указать, что делать с
почтовыми сообщениями по мере их
поступления на сервер. Как и любая
программа — почтовый транспортный агент,
sendmail обрабатывает входящую почту и
передает управление другой программе для
работы с почтой либо отсылает ее
получателям на других узлах или на
локальном сервере. Файл конфигурации
регламентирует работу sendmail по пересылке
почты адресатам. По умолчанию все настройки
sendmail производятся в файле конфигурации /etc/sendmail.cf.
В этом файле также определяются
наборы правил для обработки почты. Смысл
наборов правил состоит в анализе входящих
почтовых сообщений и принятии решения о
дальнейших действиях с ними. В каждом
наборе правил идентифицируется формат
сообщений и то, какие действия производить
над такого рода сообщениями. При приеме
сообщения его заголовок анализируется и
проверяется на соответствие одному из
наборов правил, так как при отсутствии
набора правил sendmail просто не знает, как
поступать с сообщением дальше. Наборы
правил позволяют sendmail обрабатывать
практически все форматы сообщений. Однако
следует отметить, что почта, пришедшая от
SMTP-узла, имеет поля заголовка, отличные от
полей заголовка сообщения, полученного от
хоста
В правилах работы с почтой имеются свои справочные функции, которые также можно определить в файле конфигурации. Так, классы (classes) определяют общие фразы, которые помогают задавать наборы правил для сообщений определенного типа. Макросы (macros) представляют собой наборы значений для упрощения набора длинных строк текста в файле конфигурации. Под параметрами (options) понимают набор параметров для обеспечения работы программы sendmail (см. предыдущий раздел про команды sendmail ).
Файл конфигурации представляет собой блоки строк текста. Каждая строка начинается с одиночного символа, который определяет действие, выполняемое данной строкой. Строки, которые начинаются символами пробела или табуляции, являются продолжением предыдущей строки. Строки со знаком (#) используются для комментариев и программой sendmail игнорируются. В табл. 10.3 представлены стандартные обозначения строк из конфигурационного файла sendmail и их смысл.
| Строка конфигурации | Описание |
|---|---|
C |
Определяет классы текста |
D |
Определяет макрос |
F |
Определяет файлы, содержащие классы текста |
H |
Определяет поля заголовка и действия над ними |
K |
Определяет базы данных, содержащие текстовые данные для поиска |
M |
Определяет почтовые узлы |
O |
Определяет параметры sendmail |
P |
Определяет значения старшинства |
R |
Определяет наборы правил для работы с адресами |
S |
Определяет группы наборов правил |
Предупреждение
Файл конфигурации sendmail чувствителен к регистру букв. Все строки конфигурации должны начинаться с заглавных букв, иначе sendmail не сможет их распознать.
Основное назначение файла конфигурации — поддержка наборов правил для обработки почтовых сообщений. Макросы, классы, файлы и базы данных используются в нем для упрощения процесса описания наборов правил. После того как макрос, класс, файл или база данных определены, они применяются для представления данных набора правил. Благодаря этому значительно сокращается код, необходимый для создания правил. В этом разделе описывается формат строки конфигурационного файла и действие, которое она оказывает на работу программы sendmail.
Строки конфигурации, которые
начинаются с " D ",
определяют макрос, применяемый в наборах
правил. Макрос представляет собой слово или
фразу, которая передает смысл переменной
окружения. Имя макроса определяется как
одиночный символ или слово, заключенное в
фигурные скобки ( {} ).
Для указания специфических параметров
почтового узла администратор почтовой
системы может использовать заглавные буквы.
Ниже представлен формат D -строки:
Dx value,
где x
является именем макроса, а value
его значением. После того как макрос
определен, его можно дополнить командой $x,
где x — имя
макроса.
Можно создать условный макрос, чтобы проверить, был ли ранее определен данный макрос. Формат условного макроса следующий:
$?x value1 $| value2 $,
где x
представляет собой имя макроса, а value1 —
значение, которое должен принять макрос,
если он уже был ранее определен. В противном
случае макрос с заданным именем должен
принять значение value2.
Символы " $| " не
должны включаться в команду.
Как уже упоминалось ранее, в sendmail используются предварительно определенные макросы для фраз общего пользования. В табл. 10.4 представлены некоторые предварительно определенные макросы.
| Макрос | Описание |
|---|---|
$a |
Дата отправки
сообщения из поля Date: (Дата: ) |
$b |
Текущая дата в формате RFC822 |
$c |
Число переприемов сообщения |
$d |
Текущая дата в UNIX-формате |
$f |
Адрес отправителя |
$g |
Относительный адрес отправителя (включая имя хоста) |
$h |
Идентификатор сообщения в очереди |
$i |
Полное доменное имя узла |
$j |
|
$k |
Доменная часть в gethostbyname |
$m |
Имя процесса-демона sendmail |
$n |
Идентификатор процесса sendmail |
$p |
Формат адреса отправителя по умолчанию |
$r |
Протокол, используемый для приема сообщения |
$s |
Имя хоста отправителя |
$t |
Числовое выражение текущего времени |
$u |
Получатель сообщения |
$v |
Номер версии sendmail |
$w |
Имя хоста узла |
$x |
Полное имя отправителя |
$z |
Рабочий каталог получателя |
$_ |
Проверенный адрес отправителя |
${bodytype} |
Тип тела сообщения |
${client_addr} |
IP-адрес SMTP-клиента |
${client_name} |
Имя хоста SMTP-клиента |
${client_port} |
Номер TCP-порта SMTP-клиента |
${envid} |
Идентификатор конверта, переданный sendmail |
${opMode} |
Текущий режим
работы (c параметром -b ) |
${deliveryMode} |
Текущий режим
доставки (по параметру DeliveryMode ) |
Строки конфигурации, которые
начинаются с " С ",
определяют классы фраз, используемых в
наборах правил. Классы группируют фразы, в
которых имеется что-то общее, чтобы наборы
правил могли затем сканировать класс на
соответствие определенным критериям.
Формат С -строки
выглядит так:
Ccphrase1 phrase2 ... ,
где c
является именем класса, а phrase1, phrase2 и т.д.
представляют собой фразы, которые
группируются в класс. Подобно D -командам,
имена классов должны быть либо
односимвольными, либо представлять собой
слово, заключенное в фигурные скобки ( {} ).
Имена классов с прописными буквами или со
специальными символами зарезервированы в
программе sendmail для внутреннего
использования. При определении классов,
специфических для конкретного узла,
администраторы почтовых систем могут
использовать в именах классов лишь
заглавные буквы. В табл. 10.5 представлен
список некоторых предварительно описанных
имен классов, которые используются внутри
sendmail.
| Класс | Описание |
|---|---|
e |
Кодировка содержания сообщения (может быть 7 бит, 8 бит и двоичная) |
k |
|
m |
Доменное имя |
n |
Определяет типы тела MIME, которые не могут быть закодированы 7 битами |
q |
Определяет типы тела сообщения, которые не могут быть закодированы base64 |
s |
Определяет подклассы сообщений, которые могут быть обработаны рекурсивно |
t |
Определяет набор пользователей с высокой степенью доверия |
w |
Определяет все имена, под которыми известен данный хост |
Строки конфигурации, которые
начинаются с буквы " F "
также определяют классы, которые могут
использоваться наборами правил, но немного
иначе, чем С -строки. F -строки
указывают на имена файлов, в которых
содержатся списки фраз, используемых
наборами правил. Формат F -строки
следующий:
Fc filename,
где c —
одиночный символ имени класса, а filename —
полный путь к файлу, в котором содержатся
фразы. Следует помнить, что каждая фраза
помещается в отдельной строке.
Как и в случае с С -строками,
для описания внутренних классов в sendmail
используются прописные буквы и специальные
символы в имени класса. Для определения
параметров, специфических для конкретных
узлов, администраторам почтовых систем
следует использовать в именах классов
заглавные буквы.
Подобно F -строкам, K -строки
используются для определения файла, в
котором содержатся фразы, используемые
отдельным правилом. Однако при этом в К -строках
определяется специальный тип файла. Строки
конфигурации, которые начинаются с " К ",
определяют специальные базы данных,
которые используются sendmail при поиске
определенной информации. Посредством базы
данных sendmail может более оперативно
обращаться к нужной информации, чем при
использовании файлов с F -строками.
Формат K -строки
следующий:
Kmapname mapclass arguments,
где mapname —
имя базы данных, в том виде, как оно заявлено
в файле конфигурации; mapclass —
тип сгенерированной базы данных, а arguments —
аргументы, которые передаются sendmail для
оказания помощи в создании базы данных.
Часто в роли аргументов выступают
местоположение базы данных и флаги для
работы с ней.
Отображения в базе данных производятся набором правил, который имеет следующий синтаксис:
$(map key $@ arguments $: default $),
где map
выступает в роли имени отображения, а key
и arguments
передаются функции отображения для
получения соответствующей записи из базы
данных. Значение default
используется, если запись из базы не
извлекается.
Аргумент mapclass —
это, по сути, тип базы данных, к которой
обращается sendmail для получения тех или иных
данных. Каждый тип базы данных имеет свой
специфический метод индексации и
организации доступа к данным. Существует
большое количество типов mapclass,
с которыми может работать sendmail. Наиболее
общие классы представлены в табл. 10.6.
| Тип | Описание |
|---|---|
dbm |
Использовать
библиотеку |
btree |
Использовать
интерфейс btree
для доступа к библиотекам баз данных
Berkeley |
hash |
Использовать
интерфейс hash
для доступа к библиотекам баз данных
Berkeley |
nis |
Использовать средства для просмотра NIS |
ldapx |
Использовать средства для просмотра каталогов LDAP x.500 |
text |
Использовать средства для просмотра текстовых файлов |
implicit |
Производить просмотр файлов псевдонимов по умолчанию |
user |
При поиске имен
пользователей использовать функцию getpwnam() |
host |
При поиске имен использовать DNS |
bestmx |
При поиске
оптимальной МХ -записи
для хоста использовать DNS |
sequence |
Использовать список отображений при просмотре |
program |
Использовать внешнюю программу при просмотре |
В настоящее время в ОС Linux
поддерживаются только типы btree и hash.
Причем для отображения баз данных в sendmail
чаще применяется тип hash.
Отображенные базы данных могут
быть получены из текстовых файлов с помощью
команды makemap.
Формат этой команды следующий:
makemap mapclass outputfile < textfile,
где mapclass —
тип отображения базы данных, который
используется, textfile
является текстовой версией базы данных,
используемой в качестве исходных данных
для отображения, а outputfile
представляет собой уже преобразованную
базу данных.
Строки конфигурации, которые
начинаются с " Н ",
определяют формат строк заголовка, которые
помещаются программой sendmail в сообщение. В
строках заголовка употребляются макросы и
флаги макросов, которые определяют
соответствующий синтаксис заголовка
почтового сообщения, в зависимости от
протокола, используемого для доставки
сообщения. Узлы SMTP и хосты Н -строки
следующий:
H[?mflags?]hname:htemplate,
где mflags —
флаги макроса, которые должны быть указаны
вместе с самим макросом, hname —
имя строки заголовка, а htemplate —
формат строки заголовка с макросом в ней.
Перед помещением в исходящее сообщение
макросы преобразуются в свои нормальные
имена.
Для передачи сообщения
определенному набору правил, если имеется
специальный заголовок, используется еще
один формат Н -строки:
Hheader:$>Ruleset,
где header —
поле заголовка, а Ruleset —
номер набора правил (см. раздел "Наборы
правил" далее в этой лекции). Пример
применения Н-строк представлен в листинге
10.4.
1 H?P?Return-Path: <$g> 2 HReceived: $?sfrom $s $.$?_($?sS|from $.$_) 3 $.by $j ($v/$Z)$?r with $r$, id $i$?u 4 for $u; $|; 5 $.$b 6 H?D?Resent-Date: $a 7 H?D?Date: $a 8 H?F?Resen-From: $?x$x <$g>$|$g$. 9 H?F?From: $?x$x <Sg>$|$g$. 10 H?x?Full-Name: $x 11 # HPosted-Date: $a 12 # H?l?Received-Date: $b 13 H?M?Resernt-Message-Id: <$t.$i@$j> 14 H?M?Message-Id: <$t.$i@$j>
В листинге 10.4 строка 1
представляет собой простую Н -строку
с условием, которое определяется макросом.
Если в ней задан макрос P,
который описан ранее в файле sendmail.cf
как одиночная точка ( .),
то sendmail добавляет поле заголовка Return-Path
с макросом $g в
качестве данных для этого поля. Как указано
в табл. 10.4 макрос $g
отображает относительный адрес
отправителя. А относительным этот адрес
называется потому, что он ставится в
соответствие с определенным получателем.
Таким образом, Н -строки
указывают sendmail добавлять полное имя
пользователя и имя хоста в поле заголовка Return-Path,
если задан флаг макроса Р.
Строки конфигурации, которые
начинаются с буквы " М ",
определяют программу, используемую sendmail
для пересылки почты. Различные почтовые
программы должны быть описаны для sendmail с
помощью М -строк.
Тогда ей будет понятно, как работать с ними.
Формат М -строки
следующий:
Mprog, [field=value]... ,
где prog —
имя почтовой программы, а все пары field=value
описывают атрибуты, необходимые для работы
sendmail с этой программой. В именах полей могут
использоваться полные названия полей, хотя
в sendmail используются лишь первые символы из
названия поля. В табл. 10.7 приведены М -строки
полей, которые могут применяться в sendmail.
| Поле | Описание |
|---|---|
Path |
Путь к почтовой программе |
Flags |
Флаги для почтовой программы |
| Sender | Набор правил для адреса отправителя |
Recipient |
Набор правил для адреса получателя |
Argv |
Аргументы, которые передаются с почтовой программой |
|
Метка конца строки, используемая в почтовой программе |
Maxsize |
Максимальная длина сообщения, обрабатываемого почтовой программой |
Linelimit |
Максимальная длина строки, обрабатываемой почтовой программой |
Directory |
Рабочий каталог почтовой программы |
Userid |
Идентификаторы пользователя и группы, используемые по умолчанию при запуске почтовой программы |
Nice |
Значение
переменной nice()
для почтовой программы |
Charset |
Кодировка, принятая в сообщениях (по умолчанию 8 бит) |
Type |
Тип |
Поле Flags
используется для определения порядка
применения почтовой программы программой
sendmail. Флаги определяют действия, которые
sendmail может предпринимать при вызове
почтовой программы. В поле Flags
может использоваться сразу несколько
флагов. Тогда все они задаются в одной
строке без пробелов. В табл. 10.8 дается
описание некоторых флагов.
| Флаг | Описание |
|---|---|
a |
Использовать ЕSMTP |
A |
Использовать базу данных псевдонимов |
b |
Принудительно вводить пустую строку в конце сообщения |
c |
Не включать в адреса комментарии |
C |
Добавлять имя
локального домена к принятым адресам
без символа @ |
d |
Не включать квадратные скобки при выводе маршрутной информации |
D |
Включать поле
заголовка " Date: " |
F |
Включать поле
заголовка " From:" |
h |
Сохранять прописные буквы в именах хостов |
l |
Локальная почтовая программа |
m |
За одну транзакцию почтовая программа может выполнять доставку нескольким пользователям |
M |
Включать поле
заголовка Message-ID: |
n |
Не вставлять UNIX-строки
типа From: |
S |
Не сбрасывать идентификатор пользователя перед вызовом почтовой программы |
u |
Сохранять прописные буквы в именах пользователей |
U |
Строки From: |
5 |
Если псевдонимы не определены, для принятия решения использовать набор правил с номером 5 |
9 |
Преобразование расширений MIME из 7-битового вида в 8-битовый |
В листинге 10.5 в качестве примера
приведены некоторые М -строки
из файла sendmail.cf.
1 ### SMTP Mailer specification ### 2 Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21,E=\r\n L=990, T=DNS/RFC822/SMTP, 3 Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 4 Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 5 Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, T=DNS/RFC822/SMTP, 6 ### UUCP Mailer specification ### 7 Muucp, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 8 Muucp-old, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 9 Msuucp, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 10 Muucp-new, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 11 Muucp-dom, P=/usr/bin/uux, F=mDFMhud, S=52/31, R=21, M=100000, 12 Muucp-uudom, P=/usr/bin/uux, F=mDFMhud, S=72/31, R=21, M=100000, 13 ### PROCMAIL Mailer specification ### 14 Mprocmail, P=/usr/local/bin/procmail, F=DFMSPhnu9, S=11/31, R=21/31, T=DNS/RFC822/X-Unix, 15 ### Local and Program Mailer specification ### 16 Hlocal, P=/usr/local/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40, 17 Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
В строках 2–5 листинга 10.5
описываются почтовые программы для работы
по протоколу SMTP, а в строках 7–12 почтовые
программы для работы с procmail,
а в строках 16 и 17 определяются почтовые
программы, которые используются локальной
программой для обработки почты. Для того
чтобы sendmail смогла производить запуск
соответствующих программ, указываются
полные пути к выполняемым файлам почтовых
программ. Работая с SMTP-соединениями,
программа sendmail может использовать для
пересылки почты свои внутренние IP-соединения.
В строке 11 описывается почтовая
программа, которая часто применяется для
подключения офисов компаний к сети Internet.
Программа
специально разработана для передачи
почтовых сообщений с использованием
протокола М -строк:
P ) /usr/sbin/uux;F ):m —
sendmail за одну транзакцию может посылать
сообщения нескольким пользователям;D —
sendmail пересылает поле Date:
формата RFC 822;F —
sendmail пересылает поле From:
формата RFC 822;M —
sendmail пересылает поле Message ID: формата RFC 822;h —
sendmail сохраняет прописные и заглавные
буквы в именах хостов;u —
sendmail сохраняет прописные буквы в именах
пользователей;d —
sendmail не включает квадратные скобки при
выводе маршрутной информации;Интереснее выяснить, какой из
флагов не представлен в строке 11. Обратите
внимание, что в строках 7–10 задан флаг U.
Этот флаг sendmail означает, что сообщения
должны пересылаться с применением From:. Так
как протокол в
Строки конфигурации, которые
начинаются буквой " Р ",
определяют значения приоритетов. В каждом
сообщении формата RFC822 может использоваться
заголовок :,
в котором обозначаются признаки срочности
сообщения. Назначение поля : заключается в особой обработке
важных сообщений. Конфигурация с помощью Р -строк
позволяет sendmail назначать числовые значения
приоритетов на основании содержания поля :.
Тогда пересылка почты осуществляется на
основании значения в поле :.
Формат Р -строки
следующий:
Ptext=value,
где text —
содержимое поля :,
а value —
числовое значение, которое используется
sendmail для определения степени важности
сообщения. Более высокие значения value
говорят о более высоком приоритете
сообщения. В некоторых случаях в
конфигурации sendmail можно задавать
отрицательные значения приоритетов для
классов " bulk " и " "
в поле :,
чтобы быть уверенным в том, что сообщения
этих классов имеют самый низкий приоритет
при доставке сообщений. Задание
Pfirst-class=0 Pspecial-delivery=100 Plist=-30 Pbulk=-60 Pjunk=-100
При такой конфигурации почте
присваивается первый класс, который имеет
наивысший приоритет, а спаму (помечаемому
как ) задается
самый низкий приоритет при передаче.
Строки конфигурации, которые
начинаются с буквы " О ",
определяют параметры, управляющие работой
программы sendmail. Существует довольно много
параметров, с помощью которых можно
управлять поведением sendmail. Кроме задания
параметров в конфигурационном файле, их
также можно задавать в командной строке с
помощью параметров -о
и -О.
В ранних версиях sendmail
применялись односимвольные названия
параметров. Формат О -строки
с использованием таких параметров
следующий:
Oo value,
где o —
односимвольное имя параметра, а value
представляет собой значение этого
параметра. В настоящее время sendmail
распознает и параметры длиной в несколько
символов. Формат О -строки
для параметров с длинными именами
следующий:
О option=value,
где option —
длинное имя параметра, а value
представляет собой его значение. В
зависимости от параметра значение value
может быть текстовым, целочисленным,
логическим (булевым) или интервалом времени.
Для управления работой sendmail имеется большое количество параметров. Их настолько много, что нам не хватит этой лекции, чтобы описать их все. В табл. 10.9 представлены некоторые наиболее часто используемые параметры конфигурирования sendmail для работы на стандартном почтовом сервере.
| Параметр | Описание |
|---|---|
AliasFile |
Определяет файл почтовых псевдонимов |
DefaultUser |
Устанавливает идентификаторы пользователя и группы, с которыми будет запускаться sendmail |
DontBlamesendmail |
Разрешает всем внешним пользователям выполнять чтение-запись из каталогов и файлов (очень опасно!) |
HoldExpensive |
Позволяет sendmail собирать почту в специальную очередь для дальнейшей обработки другими почтовыми программами |
CheckpointInterval |
Устанавливает интервал времени, через который проверяется очередь |
DeliveryMode |
Устанавливает режим доставки (интерактивный, фоновый, с помещением в очередь или с отложенной доставкой) |
ErrorMode |
Устанавливает метод уведомления об ошибках (выводить на печать, уведомлять по электронной почте или не уведомлять об ошибках) |
SaveFromLine |
Сохраняет все UNIX-заголовки From:,
даже если они являются избыточными |
MaxHopCount |
Устанавливает, сколько раз сообщение может обрабатываться другими МТА (количество переприемов). Сообщение аннулируется, если это значение превышено |
IgnoreDots |
Игнорировать точки во входящих сообщениях. В SMTP всегда запрещено |
SendMimeErrors |
Сообщения об ошибках выдаются в формате MIME |
ConnectionCacheTimeout |
Устанавливает максимальный интервал времени ожидания для соединения с кэшем |
LogLevel |
Устанавливает уровень детализации отчетов. По умолчанию это значение равно 9 |
MeToo |
Пересылает сообщение на указанное имя пользователя, даже если это псевдоним |
CheckAliases |
Проверка псевдонимов при реконструкции базы данных псевдонимов |
OldStyleHeaders |
Разрешает применение заголовков старого формата с использованием пробелов в качестве разделителей |
QueueDirectory |
Определяет каталог, где находится очередь почтовых сообщений |
StatusFile |
Собирает статистические данные о текущем состоянии в файл |
Timeout.queuereturn |
Устанавливает интервал ожидания сообщения |
UserDatabaseSpec |
Устанавливает спецификацию базу данных пользователей |
ForkEachJob |
Для доставки каждого задания в очередь использовать отдельный процесс |
SevenBitInput |
Урезает ввод до 7 бит |
EightBitMode |
Определяет метод обработки 8-битовых данных |
MinQueueAge |
Обрабатывать только те задания, которые находятся в очереди уже определенное время |
DefaultCharSet |
Устанавливает кодировку при преобразовании данных в MIME-формат |
DialDelay |
Определяет время задержки для сетей с установлением соединения по запросу |
NoRecipientAction |
Определяет обработку сообщений, у которых нет корректных получателей |
MaxDaemonChildren |
Определяет количество дочерних процессов sendmail, которые позволяют производить одновременную обработку входящей почты |
ConnectionRateThrottle |
Определяет максимальное количество входящих соединений, которые процесс-демон может обработать параллельно |
Некоторые примеры параметров, применяемых в стандартной конфигурации:
O AliasFile=/etc/aliases O DefaultUser=8:12 O DeliveryMode=background O HelpFile=/usr/lib/sendmail.hf
В этой группе в О -строках
задаются значения для некоторых общих
параметров sendmail.
Ядро файла конфигурации
составляют наборы правил. Наборы правил являются для sendmail инструкцией,
определяющей действия, которые должны
выполняться над входящими сообщениями, а
также способы доставки сообщения
получателям. В наборах правил обычно
используются R -строки
и S -строки
конфигурации. С помощью R -строк
определяется алгоритм действий,
выполняемых с сообщением, в то время как S -строки
используются для определения групп наборов
правил. В последующих разделах дается
описание R - и S -строк
конфигурации.
В R -строках
применяются специальные маркеры для
анализа и обработки входящего сообщения. С
их помощью определяются получатели
сообщения и способы его доставки. В каждой R -строке
задается одно правило. Правило состоит из
двух частей — левой части ( LHS )
и правой части ( RHS ).
Часть LHS
определяет, какие маркеры необходимо
искать во входящем сообщении. В то же время
в RHS определяется,
каким образом переписывать адрес с учетом
маркеров из LHS.
Формат R -строки
следующий:
Rlhs rhs comments
Каждое поле должно разделяться
по крайней мере одним символом табуляции.
Все макросы и классы, используемые в наборе
правил, расширяются в соответствии с
информацией, полученной о сообщении. Для
анализа сообщений в LHS определяются новые метасимволы. В
табл. 10.10 представлены метасимволы,
используемые в макросах LHS.
| Символ | Описание |
|---|---|
$* |
Соответствуют ноль или более маркеров |
$+ |
Соответствуют один или более маркеров |
$- |
Соответствует только один маркер |
$@ |
Не соответствует ни одного маркера |
$=x |
Соответствует
любой элемент класса x |
$-x |
Не соответствуют
элементы класса x |
Когда обнаружены маркеры,
соответствующие метасимволу в LHS,
то они назначаются в качестве величины
макроса в RHS.
Каждое новое имя макроса задается в форме $nv,
где n — числовой
индекс маркера в сообщении. Например, если в LHS в качестве
входных данных для
задано " $-:$+ ", то RHS
передаются значения $1,
что соответствует " "
и $2, обозначающее
" ispmail ".
Если в сообщении не найдено
соответствий метасимволам LHS,
то никакие действия набором правил не
выполняются. Если же во входящем сообщении
найдены соответствия метасимволам LHS,
то входные данные переписываются в формат RHS. При перезаписи сообщения в RHS
также применяются метасимволы. В табл. 10.11
представлены метасимволы, которые
применяются в RHS.
| Символ | Описание |
|---|---|
$n |
Подстановка
маркера n
из LHS |
$[name$] |
Канонизация имени |
$(map key $@ arguments $:Default $) |
Универсальный ключ для функции преобразования |
$>n |
Вызов набора правил n |
$# |
Передача управления почтовой программе |
$@host |
Определение хоста |
$:user |
Определение пользователя |
Как показано в табл. 10.11, любые
имена хостов, которые передаются в RHS, заключаются в скобки с символом $[$],
а затем расширяются до своего нормального
вида, включая доменное имя. Также из табл. 10.11
видно, что один набор правил может напрямую
вызывать другой набор правил посредством
метасимвола $>n,
где n
представляет собой идентификатор S -строки
следующего набора правил.
Предупреждение
Наборы правил не для
слабонервных. В большинстве случаев для
обработки почты в соответствии со
стандартными требованиями бывает
достаточно наборов правил, установленных
по умолчанию. Иногда новые наборы правил
реализуются для
Строки конфигурации, которые
начинаются с буквы " S ",
идентифицируют набор правил. Наборы правил
в sendmail обычно идентифицируются числовым
значением. В программе sendmail наборы правил
используются для анализа почтовых
сообщений с целью выявления получателя и
дальнейшей их доставки. В sendmail используются
шесть стандартных наборов правил, которые
представлены в табл. 10.12.
| Набор правил | Описание |
|---|---|
0 |
Передача управления почтовой программе, хосту и пользователю |
1 |
Применяется ко всем адресам отправителей |
2 |
Применяется ко всем адресам получателей |
3 |
Преобразует адреса в каноническую форму |
4 |
Преобразует внутренние адреса во внешние |
kj |
Применяется к локальным адресам, у которых нет псевдонимов |
Как уже отмечалось в разделе,
описывавшем работу R -строки,
может организовываться специальный набор
правил, который начинается строкой check.
Такими наборами правил идентифицируются те
сообщения, которые будут либо отвергаться,
либо пересылаться почтовым программам как
ошибочные для уничтожения. На рис. 10.1
представлен типичный маршрут, по которому
проходит сообщение при стандартной
конфигурации наборов правил.
(рис 10.1) Схема взаимодействия наборов правил sendmailКак видно из рис. 10.1, все сообщения сначала проходят через набор правил номер 3. В этом наборе правил происходит "очистка" адресов посредством их преобразования в канонические. После обработки набором правил 3 производится обработка сообщения набором правил 0. Здесь из адреса извлекаются имя почтовой программы, имя хоста и имя пользователя. Затем сообщение передается соответствующей почтовой программе.
Подобно этому работают набор правил 1, в котором производится перезапись адресов отправителей, и набор правил 2, где перезаписываются адреса получателей. Затем вся информация передается набору правил 4 для преобразования адресов в формат, удобный для передачи сообщения во внешний мир.
Можно наблюдать за работой
отдельных наборов правил, запустив
программу sendmail с параметрами -bt.
С помощью этих параметров можно
протестировать определенный адрес, задав
его в качестве исходного и наблюдая за
реакцией наборов правил в имеющемся файле
конфигурации. Часто эти параметры задаются
с параметром -С
для тестирования нового файла конфигурации.
В листинге 10.6 представлен пример сеанса
работы sendmail с параметрами -bt
и -С.
1 [rich@shadrach rich]$ /usr/sbin/sendmail -bt -C test.cf 2 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 3 Enter <ruleset> <address> 4 > 3,0 rich 5 rewrite ruleset 3 input: rich 6 rewrite ruleset 96 input: rich 7 rewrite ruleset 96 returns: rich 8 rewrite ruleset 3 returns: rich 9 rewrite ruleset 0 input: rich 10 rewrite ruleset 199 input: rich 11 rewrite ruleset 199 returns: rich 12 rewrite ruleset 98 input: rich 13 rewrite ruleset 98 returns: rich 14 rewrite ruleset 198 input: rich 15 rewrite ruleset 198 returns: $# local $: rich 16 rewrite ruleset 0 returns: $# local $: rich 17 > 3,0 president@whitehouse.gov 18 rewrite ruleset 3 input: president @ whitehouse . gov 19 rewrite ruleset 96 input: president < @ whitehouse . gov > 20 rewrite ruleset 96 returns: president < @ whitehouse . gov > 21 rewrite ruleset 3 returns: president < @ whitehouse . gov > 22 rewrite ruleset 0 input: president < @ whitehouse . gov > 23 rewrite ruleset 199 input: president < @ whitehouse . gov > 24 rewrite ruleset 199 returns: president < @ whitehouse . gov > 25 rewrite ruleset 98 input: president < @ whitehouse . gov > 26 rewrite ruleset 98 returns: president < @ whitehouse . gov > 27 rewrite ruleset 198 input: president < @ whitehouse . gov > 28 rewrite ruleset 95 input: < uucp-dom : ispmail > president < @ whitehouse . gov > 29 rewrite ruleset 95 returns: $# uucp-dom $@ ispmail $: president < @ whitehouse . gov > 30 rewrite ruleset 198 returns: $# uucp-dom $@ ispmail $: president < @ whitehouse . gov > 31 rewrite ruleset 0 returns: $# uucp-dom $@ ispmail S: president < @ whitehouse . gov > 32 >
В строке 1 листинга 10.6 с
параметрами -bt
запускается программа sendmail для
тестирования файла конфигурации, заданного
параметром -С. В
строке 4 адрес " rich "
тестируется сначала набором правил 3, а
затем набором правил 0. В строках 5–8 в
наборе правил 3 в качестве входных данных
используется адрес " rich ".
Набор правил 3 вызывает другой набор правил
96 для обработки входных данных и затем в
качестве вывода возвращает также адрес " rich ".
Работу набора правил 0 можно проследить в
строках 9–16. Итак, исходными данными для
набора правил 0 снова является адрес " rich ".
Затем набор правил 0 вызывает наборы 199, 98 и
198, которые используются в дальнейшем при
анализе сообщений. Результатами работы
набора правил 0 являются локальная почтовая
программа local и
адрес rich. Не так
уж сложно, не правда ли?
В строках 17–31 происходят более
интересные вещи. Здесь снова выполняется
тестирование наборов правил 3 и 0, но уже на
примере внешнего адреса president@whitehouse.gov.
В строках 18–21 отображаются действия набора
правил 3 при обработке исходных данных. На
этот раз на выходе после работы набора
правил 3 получаем адрес, отличный от
поступившего на вход. Как видите, этот набор
правил отделил именную часть адреса ( president )
от имени хоста ( whitehouse.gov ),
чтобы затем по отдельности передать их для
дальнейшей обработки набору правил 0. Далее,
в строках 22–31 показана обработка исходных
данных набором правил 0. Как видите, этим
набором правил вызывается несколько
промежуточных правил. Как уже упоминалось
ранее, в результате работы набора правил 0
становится известна почтовая программа ( ),
которая требуется для доставки сообщения,
имя хоста ( ispmail ),
которому нужно переслать сообщение, и имя
пользователя, которому адресовано
сообщение ( president@whitehouse.gov ). Таким образом, файл
конфигурации, приведенный в примере,
настроен для пересылки всех почтовых
сообщений по ispmail.
Для выхода из режима тестирования sendmail
нажмите клавиши Ctrl+D.
Наверняка, полезно рассмотреть
пример набора правил, чтобы лучше
разобраться в механизме работы строк
конфигурации в программе sendmail. 26 марта 1999
года сеть Internet поразил вирус Melissa. Вирус Melissa
представляет собой
Напомним еще раз — программа sendmail является почтовым транспортным агентом, и ее работа состоит в электронной пересылке почты. С помощью набора правил, разработанного для блокировки вируса Melissa, почтовые серверы, на которых использовался пакет sendmail, смогли сдержать распространение этого вируса. Набор правил, блокирующий вирус Melissa, работает следующим образом: все сообщения, содержащие вирус, просто не пересылаются получателю и аннулируются. В листинге 10.7 представлено обновление для файла конфигурации, которое призвано блокировать распространение вируса Melissa.
1 HSubject: $>Check_Subject
2 D{MPat}Important Message From
3 D{MMsg}This message may contain the Melissa virus.
4
5 SCheck_Subject
6 R${MPat} $* $#error $: 553 ${MMsg}
7 RRe: ${MPat} $* $#error $: 553 ${MMsq}
В строках 1–3 листинга 10.7 заданы
макросы, которые уже должны быть вам
знакомы. Строка 1 представляет собой Н -строку,
согласно которой, все сообщения с
заголовком Subject:
пересылаются набору правил Check_Subject.
В строке 2 определяется макрос с текстом,
который обычно встречается в сообщениях,
пораженных вирусом Melissa. С появлением новых
версий вируса можно легко расширить
диапазон анализа, сменив эту строку на F -строку,
где задается отдельный файл содержащий
строки, которые должны подвергаться
проверке. В строке 3 определяется еще один
макрос, используемый в качестве сообщения,
которое отправляется для сигнализации о
заражении.
В строке 5 определяется начало
нового набора правил с названием Check_Subject.
Согласно Н -строке,
все сообщения с заголовком Subject:
формата RFC 822 будут передаваться этому
набору правил для проверки на наличие
вируса. В строках 6 и 7 определены новые
правила в наборе, которые и блокируют вирус
Melissa.
Вирус Melissa известен тем, что он
создает поддельные сообщения с текстом
"Important Message From" и адресом жертвы в качестве
темы письма в поле Subject: (Тема:). Набор правил в строке 6 проверяет
содержимое строк в поле темы письма и, если
они содержат ключевую фразу, снабжает их
нулевым или несколькими маркерами (метасимволами $* ). Затем он
пересылает сообщение почтовой программе,
которая обрабатывает ошибки, для выдачи
соответствующего уведомления об ошибке
отправителю. При этом само зараженное
сообщение аннулируется.
В строке 7 эти же действия
производятся с сообщениями, в поле темы
которых содержится префикс " Re:".
В этом случае сообщение также пересылается
почтовой программе, которая обрабатывает
ошибки, для выдачи соответствующего
уведомления об ошибке отправителю.
Хотя вирус Melissa и не поражает саму программу sendmail, она, наоборот, может эффективно блокировать его воздействие на пользователей почтового сервера, использующих программу Microsoft Outlook. Этот пример еще раз демонстрирует высокую гибкость программы sendmail.
Итак, для доставки почты получателям на
сервере электронной почты под управлением
ОС Linux нужна специальная программа —
почтовый транспортный агент Mail Transfer Agent (MTA).
Одним из старейших и наиболее мощных МТА
для платформы Linux является программа sendmail.
Настройка программы sendmail для обработки
почты на конкретном узле выполняется с
помощью файла конфигурации /etc/sendmail.cf.
Файл конфигурации представляет собой набор
правил, которые указывают, каким образом
sendmail должна обрабатывать входящие
сообщения и определять получателей. Также с
помощью наборов правил принимается решение,
каким почтовым программам далее передавать
сообщения. Они же используются для
организации фильтров для отсеивания
нежелательных сообщений. Все проблемы,
связанные с настройкой файла конфигурации,
после прочтения этой лекции, где каждое
действие подробно разъяснялось, должны
быть устранены. В следующей лекции, "Установка
и конфигурирование sendmail", рассматриваются
вопросы конфигурирования sendmail для работы
на определенном почтовом сервере.
В этой лекции
Чтобы правильно посылать и принимать почту от других систем, на почтовом сервере под управлением ОС Linux должна быть установлена программа — почтовый транспортный агент (Mail Transport Agent — MTA). Работа МТА заключается в обработке почтовых сообщений, а не в доставке их локальному пользователю, как иногда думают. Если МТА принимает сообщение, направленное локальному пользователю, то он просто передает его другой программе, которая занимается его доставкой. Сообщения, адресованные пользователям удаленных хостов, будут направляться либо на эти хосты, либо передаваться узлу, который сможет далее переслать их по назначению. После того как сообщение передано, работа МТА завершена.
Для ОС Linux существует довольно много программ — почтовых транспортных агентов. Некоторые из них обладают более широкой функциональностью, в то время как другие легче в работе, с точки зрения администратора почтовой системы. Прабабушкой всех МТА-программ для платформы UNIX является программа sendmail. Довольно часто ее называют самой универсальной программой МТА, но в то же время она наиболее сложна в настройке. Компоненты программы sendmail описаны в этой лекции. Вопросы конфигурирования sendmail для работы на почтовом сервере под управлением ОС Linux рассмотрены в лекции 11, "Установка и конфигурирование sendmail".
sendmail и безопасность
Программа sendmail используется на
многих платформах уже на протяжении
нескольких десятков лет. В первые годы ее
применения были выявлены практически все
черные входы и дыры в программе, которые
позволяли хакерам проникать в систему.
Например, общеизвестна реакция sendmail на SMTP
команды debug и wiz.
Получив при анонимном SMTP-сеансе
посредством этих команд доступ в систему,
через другие программы хакер мог получить
права пользователя root.
Когда программа sendmail стала популярной, то
все черные ходы были закрыты и ошибки в
программе были исправлены.
К сожалению, многие администраторы почтовых систем отвергают возможность применения sendmail, ссылаясь на старые черные ходы в ней, которые уже давно закрыты. Конечно, время от времени обнаруживаются новые ошибки в программе, которые позволяют получить несанкционированный доступ к системе. Однако это случается не чаще, чем с другими пакетами для работы с почтой. Так как квалификация хакеров в сети Internet с каждым годом повышается, соответствующим образом должна расти сложность программного обеспечения. Единственное, что может противопоставить растущему числу хакеров программа sendmail, это наличие профессиональных программистов, которые работают над ее улучшением. Они достаточно квалифицированы, чтобы постоянно исправлять и улучшать программный код sendmail, сохраняя его стабильность и уровень безопасности. Не так много пакетов для работы с почтой могут похвастаться тем же.
Так что было бы неосмотрительно только из-за слухов о неблагонадежности sendmail отказываться от ее преимуществ.
Программа sendmail не работает в одиночку. Для обеспечения нормальной работы sendmail требуется наличие определенных файлов и каталогов. В этом разделе описаны файлы и каталоги, которые требуются для работы программы sendmail. Иногда, в зависимости от заданной конфигурации, могут понадобиться и другие файлы. В лекции 11 описаны некоторые дополнительные файлы, необходимые для работы sendmail.
Путь: /usr/sbin/sendmail
Программа sendmail является главным
двигателем при передаче почты. Обычно она
запускается в фоновом режиме в виде
процесса-демона, который ожидает появления
входящих почтовых сообщений и проверяет
очередь исходящих почтовых сообщений через
установленные интервалы времени. В
качестве альтернативы можно определенным
образом сконфигурировать sendmail для запуска
по запросу программы inetd,
управляющей всеми TCP-портами. Таким образом
можно сэкономить ресурсы памяти на сервере,
так как при этом программа sendmail не работает
в фоновом режиме, а следовательно, не
занимает память. Вместе с тем такая
организация работы sendmail приводит к
снижению производительности, так как в этом
случае sendmail при каждом запуске должна
перечитывать файлы конфигурации. Программа
sendmail может получать доступ к каталогам
пользователя root, так как
ей задан .
Другие пользователи также могут запускать
sendmail, но при этом они не смогут получить
доступ ко многим каталогам, которые
требуются для работы sendmail, например к
очереди почтовых сообщений.
Путь: /etc/sendmail.cf
Для правильной работы sendmail на
локальном почтовом сервере необходимо
сконфигурировать ее в соответствии со
своими специфическими требованиями. Все
определения, касающиеся обработки почты
программой sendmail, хранятся в файле
конфигурации /etc/sendmail.cf.
Все они называются наборами правил (rule set).
Наборы правил применяются в sendmail для
анализа адресов отправителя и получателя
сообщения, а также для определения способа
его доставки получателю. При запуске
программа sendmail читает содержимое файла
конфигурации, так что, если в него вносились
какие-либо изменения, нужно перезапустить
sendmail, чтобы они возымели действие.
Путь: /var/spool/mqueue
Каталог mqueue
создается для хранения всех почтовых
сообщений, которые ожидают обработки в
очереди. Владельцем этого каталога
является пользователь root.
Программа sendmail удостоверяется в том, что
все файлы очереди почтовых сообщений
хранятся в этом каталоге и имеют
соответствующие права доступа, которые не
позволяют обычным пользователям читать
сообщения, находящиеся в очереди.
Местоположение каталога очереди почтовых
сообщений можно изменять. Это делается либо
изменением соответствующего параметра в
файле sendmail.cf, либо
запуском sendmail из командной строки со
специальным параметром.
Путь: /usr/sbin/mailq
Программа mailq
является символической связью с программой
sendmail. При ее запуске программа sendmail
отображает содержимое очереди почтовых
сообщений.
Путь: /usr/sbin/newaliases
Программа newaliases
также является символической связью с
программой sendmail. При ее запуске считываются
текстовые псевдонимы из файла aliases и с помощью стандартного пакета по
поддержке баз данных в ОС Linux создается база
данных псевдонимов. В ОС Linux при этом обычно
создается хешированный файл базы данных.
Путь: /etc/aliases
В файле /etc/aliases
администратор почтовой системы может
указать почтовые псевдонимы для
пользователей. Файл /etc/aliases
является текстовой версией псевдонимов из
хешированной базы данных, которая
используется программой sendmail. Каждый
псевдоним должен указываться в отдельной
строке в виде:
alias: userid,
где alias —
имя псевдонима, а userid —
имя пользователя локальной системы.
После того как в файл псевдонимов
были внесены изменения, администратору
почтовой системы необходимо запустить
программу newaliases
для создания хешированной базы данных в /etc/aliases.db.
Программа sendmail при обработке сообщений
читает файл хешированной базы данных
псевдонимов. Если в поле получателя
содержится имя, которое совпадает с именем
в базе данных псевдонимов, то сообщение
передается получателю с указанным
псевдонимом.
Как правило, при установке ОС Linux автоматически
создается несколько пользователей системы,
которые обычно не используются в
дальнейшей работе. Все эти имена можно с
помощью псевдонимов присвоить одному
пользователю. Теперь легко отследить
некорректное поведение почты или даже
идентифицировать попытки
несанкционированного доступа в локальную
систему. В листинге 10.1 показан пример файла aliases,
где используется подобный механизм.
1 # 2 # @(#)aliases 8.2 (Berkeley) 3/5/94 3 # 4 # Aliases in this file will NOT be expanded in the header from 5 # Mail, but WILL be visible over networks or from /bin/mail. 6 # 7 # >>>>>>>>> The program "newaliases".must be run after 8 # >>>NOTE>>> this file is updated for any changes to 9 # >>>>>>>> show through to sendmail. 10 # 11 12 # Basic system aliases -- these MUST be present. 13 MAILER-DAEMON: postmaster 14 postmaster: root 15 16 #General redirections for pseudo accounts. 17 bin: root 1B daemon: root 19 games: root 20 ingres: root 31 nobody: root 32 system: root 23 toor: root 24 uucp: root 25 26 #Well-known aliases. 27 manager: root 29 dumper: root 29 operator:root 30 31 #trap decode to catch security attacks 33 decode: root 33 34 #Person who should get root's mail 35 root: rich
В строках 13 и 14 листинга 10.1
определены псевдонимы для имени
пользователя, которому посылаются
сообщения об ошибках (наверняка вы часто
сталкивались с сообщением "О всех ошибках
при работе с электронной почтой
обращайтесь к root.
В строках 17–24 задаются псевдонимы для
пользователей, которые при установке
системы обычно не получают прав
пользователя root. Далее в
строках 27–32 задаются псевдонимы для
некоторых стандартных пользователей
системы. И наконец, в строке 35 дается
указание всю почту, адресованную
пользователю root,
перенаправлять администратору почтовой
системы, так как ни один уважающий себя
администратор не регистрируется в системе c
правами root.
Учетная запись postmaster
С ростом популярности сети Internet,
и в частности WEB, стала активно
использоваться учетная запись
пользователя
Путь: /usr/sbin/hoststat
Программа hoststat
является еще одной символической связью с
программой sendmail. При ее выполнении
программа sendmail пытается прочесть файл
статистики по хосту и отобразить состояние
последнего действия, произведенного с
почтой, всем удаленным хостам, куда она
отправила почту.
Путь: /usr/sbin/purgeststat
Программа purgeststat
также является символической связью с
программой sendmail. При запуске purgeststat
программа sendmail удаляет всю статистическую
информацию из файла статистики по хосту.
Путь: /var/spool/mqueue/.hoststat
В каталоге /var/spool/mqueue/.hoststat
содержатся файлы, в которых хранится
статистическая информация по каждому
удаленному хосту. Эти файлы используются
программой для отображения текущего
состояния операций с удаленным хостом.
Путь: /etc/sendmail.st
Если ведется файл sendmail.st,
то это говорит о том, что администратор
почтовой системы желает вести сбор
статистики об исходящем почтовом трафике.
Изначально этот файл создается с нулевым
размером. Хотя по умолчанию он обычно
находится в каталоге /etc,
во многих версиях ОС Linux, таких как, Red Hat, Caldera
и Mandrake, желательно изменить местоположение
этого файла, заданное по умолчанию, на /var/log/sendmail.st.
Путь: $HOME/.forward
Каждому пользователю в системе
можно создать в рабочем каталоге файл .forward.
При попытке передать почту для локального
пользователя посредством локального
почтового процессора программа sendmail
проверяет наличие этого файла. Если он
существует и в нем указан адрес электронной
почты, то sendmail будет пересылать сообщение
на этот адрес. Адреса электронной почты
должны быть указаны в стандартном формате ( username@hostmname )
по одному в строке.
Предупреждение
Избегайте появления петель при работе почты. Например, если почта от пользователя katie пересылается пользователю jessica, а пользователь jessica пересылает ее обратно katie, то, естественно, sendmail будет бесконечно пересылать их от одного пользователя к другому и обратно. Довольно часто обнаружить такую ситуацию не представляется возможным, так как никаких сообщений при этом не генерируется.
Путь: /usr/lib/sendmail.hf
С помощью файла sendmail.hf и команды SMTP HELP
на экран выводится справка о командах. Файл
справки имеет специфический формат,
который анализирует sendmail, когда удаленные
хосты обращаются к ней с помощью команды HELP.
Как уже отмечалось в лекции 5, "Протокол SMTP",
клиенты могут выдавать команду HELP
либо в общем виде, либо сужать границы ее
действия до конкретной команды, на которую
требуется справка. Для облегчения работы
sendmail с файлом справки в каждой строке файла
ставятся специальные метки, обозначающие
начало строки. В листинге 10.2 представлен
фрагмент файла sendmail.hf.
1 cpyr 2 cpyr Copyright (c) 1998 sendmaili Inc. All rights reserved. 3 cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. 4 cpyr Copyright (c) 1988, 1993 5 cpyr The Regents of the University of California. All rights reserved. 6 cpyr 7 cpyr 8 cpyr By using this file, you agree to the terms and conditions set 9 cpyr forth in the LICENSE file which can be found at the top level of 10 cpyr the sendmail distribution. 11 cpyr 12 cpyr @(#)sendmail.hf 8,18 (BerKeley) 11/19/1998 13 cpyr 14 smtp Topics: 15 smtp HELO EHLO MAIL RCPT DATA 16 smtp RSET NOOP QUIT HELP VRFY 17 smtp EKPN VERB ETRN DSN 18 smtp For more info use "HELP <topic>". 19 smtp To report bugs in the implementation send email to 20 smtp sendmail-bugs@sendmail.org. 21 smtp For local information send email to Postmaster at your site. 22 help HELP [ <topic> ] 23 help The HELP command gives help info. 24 helo HELO <hostname> 25 helo Introduce yourself. 26 ehlo EHLO <hostname> 27 ehlo Introduce yourself, and request extended SMTP mode. 28 ehlo Possible replies include: 29 ehlo SEND Send as mail [RFC821] 30 ehlo SOML Send as mail or terminal [RFC821] 31 ehlo SAML Send as mail and terminal [RFC821] 32 ehlo EXPN Expand the mailing list [RFC821] 33 ehlo HELP Supply helpful information [RFC821] 34 ehlo TURN Turn the operation around [RFC821] 35 ehlo 8BITMIME Use 8-bit data [RFC1652] 36 ehlo SIZE Message size declaration [RFC1870] 37 ehlo VERB verbose [Allman] 33 ehlo ONEX One message transaction only [Allman] 39 ehlo CHUNKING Chunking [RFC1830] 40 ehlo BINARYMIME Binary MIME [RFC1830] 41 ehlo PIPELINING Command Pipelining [RFC1854] 42 ehlo OSN Delivery Status notification [RFC1891] 43 ehlo ETRM Remote Message Queue Starting [RFC1985] 44 ehlo XUSR Initial (user) submission [Allman] 45 mail MAIL FROM: <sender> [ <paranieters> ] 46 mail Specifies the sender. Parameters are ESMTP extensions. 47 mail See "HELP DSN" for dstails 48 rcpt RCPT TO: <recipient> [ <parameters>] 49 rcpt Specifies the recipient.Can be used any number of times. 50 rcpt Parameters are ESMTP extensions. See "HELP DSN" for details. 51 data DATA 52 data Following text is collected as the message. 53 data End with a single dot. 54 rset RSET 55 rset Resets the system. 56 quit QUIT 57 quit Exit sendmail (SMTP).
В строках 14–21 листинга 10.2
задаются стандартные справочные сообщения,
которые выводятся с помощью команды HELP.
После этого каждая отдельная команда
выводится слева, а справа выводится
справочное сообщение. Например, с помощью
команды 'HELP MAIL'
клиенту будут выданы строки 45, 46 и 47. Для
проверки самостоятельно войдите на TCP-порт
25 и задайте команды SMTP, описанные в лекции 5 (см.
листинг 10.3).
1 [kevin@shadrach kevin]$ telnet localhost 25 2 Trying 127.0.0.1... 3 Connected to localnost. 4 Escape character is '^]'. 5 220 shadracn.smallorg.org ESMTP sendmaill 8.9.3/8.9.3; Tue, 5 Oct 1999 19:39 -0500 6 HELP MAIL 7 214-MAIL FROM: <sender> [ <parameters> ] 8 214- Specifies the sender. Parameters are ESMTP extensions. 9 214- See "HELP DSN" for details. 10 214 End Of HELP info 11 QUIT 12 221 shadrach.smallorg.org closing connection 13 Connection closed by foreign host. 14 [kevin@shadrsch kevin]$
Синтаксис команд программы sendmail часто может вызывать такие же трудности, как и файл конфигурации sendmail. В этом разделе описаны параметры, которые влияют на работу программы sendmail.
Формат команд sendmail:
sendmail [flags] [address ...]
При запуске sendmail по умолчанию без
флагов начинает считываться стандартный
ввод пока программа не достигнет метки
конца файла или строки с одной точкой ( .).
Затем делается вывод о том, что sendmail имеет
дело с текстовым сообщением и она пытается
передать его по адресу, указанному в
командной строке. Такой алгоритм работы
sendmail полностью повторяет поведение
программы mail в ОС
Linux. Однако это нестандартный путь
применения sendmail. Хотя это лишний раз
подтверждает универсальность sendmail. Однако
для поддержки работы почтового сервера на
базе ОС Linux мы в основном будем
рассматривать работу sendmail в фоновом режиме
в качестве процесса-демона.
Управление поведением sendmail
можно осуществлять с помощью флагов,
задаваемых при запуске из командной строки.
Флаги sendmail делятся на две группы. К первой
группе относятся параметры, которые
оказывают влияние непосредственно на
действия, выполняемые sendmail. В то же время
вторая группа позволяет изменять значения
параметров в файле конфигурации. Значения
параметров в конфигурационном файле
никогда не меняются.
Итак, поведением программы sendmail можно управлять с помощью параметров командной строки. Функционирование sendmail довольно сильно зависит от параметров, заданных при запуске в командной строке. По умолчанию при запуске программа sendmail считывает свой файл конфигурации и получает из него значения важных параметров. Параметры командной строки могут применяться для изменения этих значений "на лету". Таким образом отпадает необходимость в создании нового файла конфигурации. В этом разделе описаны параметры и их влияние на работу sendmail.
Параметр: -B
Параметр -B
описывает для sendmail формат тела сообщения.
Значения этого параметра варьируют между 7BIT
и 8BITMIME.
Параметр: -b
Режим работы sendmail
устанавливается параметром -b.
В табл. 10.1 представлены возможные
значения этого параметра.
| Режим | Описание |
|---|---|
a |
Режим ARPANET |
d |
Запуск в фоновом режиме в качестве процесса-демона |
D |
Запуск в активном режиме |
h |
Отображение базы данных хостов (то же, что и hoststat) |
H |
Очистка базы данных хостов (то же, что и purgestat) |
i |
Инициализация базы данных псевдонимов |
m |
Доставить почту (по умолчанию) |
p |
Отобразить содержимое очереди почтовых сообщений (то же, что и mailq) |
s |
Использовать для ввода-вывода протокол SMTP |
t |
Запустить в тестовом режиме |
v |
Только проверять имена. Сообщения не доставляются |
Большинство параметров
запускаются только с правами пользователя root.
Таким образом, в sendmail осуществляется
ограничение доступа для других
пользователей. Обычно sendmail запускается в
фоновом режиме в виде процесса-демона с
параметром -bd. При
тестировании нового файла конфигурации
применяется параметр -bt.
В этом режиме sendmail обрабатывает набор
правил и генерирует результаты своей
работы без обработки реального почтового
трафика на сервере. Это дает возможность
любому пользователю запускать sendmail с
параметром -bt, не
вызывая конфликтов, даже когда в фоновом
режиме запущен еще один процесс-демон sendmail.
Параметр: -С
С помощью параметра -С
программе sendmail указывается обращаться к
другому файлу конфигурации, отличному от
файла конфигурации по умолчанию ( /etc/sendmail.cf ).
Когда задан этот параметр, sendmail запускается
с правами того пользователя, который
инициировал запуск sendmail, а не с правами root.
Как правило, этот параметр используется при
тестировании новых файлов конфигурации,
хотя его можно задавать и для ссылки на
альтернативный файл конфигурации. При
тестировании нового файла конфигурации с
параметром -bt
можно задавать и параметр -С.
То есть не нужно изменять оригинальный файл
конфигурации — тестирование проводится
с альтернативным файлом.
Параметр: -d
При задании в командной строке
параметра -d
активируются флаги для отладки sendmail.
Различным флагам отладки соответствуют
различные уровни отладки. С параметром -d
можно указывать несколько флагов.
Флаги отладки позволяют детализировать информацию, выводимую в стандартных файлах отчета. Каждый флаг отладки позволяет детализировать уровень вывода информации в файлах отчетов для определенной почтовой функции. В табл. 10.2 представлены примеры задания параметров отладки.
| Параметр | Описание |
|---|---|
-d1 |
Устанавливает флаг отладки 1 для уровня 1 |
-d1.4 |
Устанавливает флаг отладки 1 для уровня 4 |
-d2-5.2 |
Устанавливает флаги отладки 2–5 для уровня 2 |
-d12.9,15.9 |
Устанавливает флаги отладки 12 и 15 для уровня 2 |
Будьте осторожны при использовании дополнительных режимов отладки. При установлении более высокого уровня отладки в файлах отчетов формируется больше строк, что может привести к переполнению диска.
Параметр: -F
С помощью параметра -F
устанавливается полное имя отправителя
сообщения. При доставке сообщения на
удаленный узел sendmail
устанавливает это значение в сообщении в
поле From: (От:).
Параметр: -f
С помощью этого параметра
пользователь может изменить имя
отправителя сообщения в поле From: (От:) на имя, под
которым он зарегистрировался в системе.
Этот механизм может использоваться только
для пользователей с высоким уровнем
доверия типа root или daemon.
Параметр: -h
Параметром -h
определяется максимальное количество
переприемов, разрешенное для сообщения.
Когда почтовый сервер выбирает маршрут для
сообщения, счетчик переприемов
увеличивается на единицу. При прохождении
каждого узла этот счетчик также
увеличивает свое значение. Если число
переприемов превысило установленное этим
параметром значение, то sendmail бракует
сообщение и прекращает его доставку. Этот
параметр помогает бороться с петлями при
маршрутизации почты.
Параметр: -i
Параметр -i
заставляет sendmail игнорировать строки с
одиночными точками. По умолчанию принято,
что строка с одной точкой указывает на
конец сообщения. Этот параметр часто
используется при чтении данных из файла,
где возможны одиночные точки в строках,
которые не обозначают конец сообщения. В
случае применения этого параметра в
качестве символа, обозначающего конец
сообщения, используется символ Ctrl+D (ASCII 0x04 ).
Параметр: -N
Параметр -N
определяет выдачу уведомления о текущем
состоянии сообщения. Этот параметр может
принимать значения NEVER, FAILURE, DELAY
и SUCCESS. Значение NEVER
говорит о том, что выдавать уведомление не
нужно. Значение FAILURE
означает, что сообщение не доставлено. Если
sendmail задано получать уведомление, то
значение DELAY
означает задержку сообщения, а SUCCESS
говорит об успешной отправке сообщения.
Параметр: -n
Параметром -n
в sendmail запрещается пересылка и
использование почтовых псевдонимов.
Параметр: -p
Параметр -p
определяет протокол, который будет
использоваться для доставки сообщения.
Значения этого параметра могут определять
либо просто тип используемого протокола,
как, например, SMTP
или , либо тип
протокола и транзитный хост, разделенные
двоеточием ( smtp:mail.isp.net
или ).
Если задан этот параметр, то sendmail пытается
при доставке сообщения использовать
заданные протокол и хост, в противном
случае будут использоваться установки,
взятые из файла конфигурации. Этот параметр
нужно использовать для временного
перенаправления почты на другой узел, если
основной узел неисправен.
Параметр: -q
Параметр -q
определяет способы обработки почты в
очереди. Когда он задан без других
параметров, то sendmail один раз обрабатывает
очередь почтовых сообщений и выключается.
С параметром -q
можно задавать интервалы времени, через
которые sendmail будет повторять обработку
очереди. Интервалы времени можно задавать в
секундах ( s ),
минутах ( m ), часах ( h ),
днях ( d ) и неделях ( w ).
Так, например, -q30m
задает sendmail обрабатывать очередь почтовых
сообщений с интервалом 30 минут и отсылать
сообщения, ждущие отправки. Довольно часто
этот параметр задается совместно с
параметрами -bd,
что позволяет запускать sendmail в фоновом
режиме и регулярно обрабатывать сообщения
в очереди.
Существует и другой формат
использования параметра -q —
с применением специальных строк для
обработки почтовых сообщений в очереди.
Согласно этому формату, sendmail ищет заголовки
почтовых сообщений, содержащие строку string,
и обрабатывает все сообщения, которые
найдены по этому критерию. Эти типы
форматов включают в себя:
-qIstring —
поиск строки в очереди со специфическим
идентификатором;-qRstring —
поиск строки с определенным получателем
сообщения;-qSstring —
поиск строки с заданным отправителем
сообщения.В командной строке разрешено
использовать несколько параметров -q
этого типа. Этот формат позволяет
администратору почтовой системы
обрабатывать определенные сообщения из
очереди без их пересылки. Этот механизм
часто используется при аварийном останове
почтовой системы, когда в очереди имеются
сохраненные сообщения. Часто в таком случае
требуется обработать определенные
сообщения в первую очередь.
Параметр: -R
Параметр -R
определяет какое сообщение будет
выдаваться при невозможности доставки
сообщения получателю. Этот параметр может
принимать значения " full "
для вывода полного текста исходного
сообщения и " "
для вывода заголовка сообщения в формате
RFC822.
Параметр: -t
По параметру -t
из заголовка сообщения формата RFC822
извлекаются адреса получателей сообщения.
При этом сканируются все строки To:, CC: и :.
Затем сообщение посылается по указанным
адресам.
"Невидимые" копии
Назначение поля : заключается в рассылке
сообщений определенным получателям, о
которых основные получатели сообщения не
ставятся в известность. Поэтому перед
передачей сообщения строки :
из него удаляются.
Параметр: -U
Параметр -U
сигнализирует о том, что сообщение было
послано почтовым пользовательским агентом
(MUA), а не получено от другого почтового
транспортного агента (МТА). Это позволяет
sendmail обрабатывать сообщения в зависимости
от того, откуда получено сообщение. Однако в
настоящее время функции по обработке
сообщений, обеспечиваемые этим параметром,
не поддерживаются.
Параметр: -V
Параметр -V
задает идентификатор конверта.
Идентификатор конверта используется в
заголовке формата RFC822 для уникальной
идентификации сообщения. Устанавливая
идентификатор конверта в sendmail, почтовая
программа сможет идентифицировать
сообщения, исходящие от -N
для идентификации сообщений, которые не
были доставлены удаленным МТА.
Параметр: -v
Использование sendmail в режиме
детализации задается параметром -v.
Все задачи, выполняемые sendmail, при этом будут
выдаваться на стандартный вывод. Этот
параметр используется при отладке работы
sendmail и не используется, когда она работает в
нормальном режиме.
Параметр: -X
Параметр -X
определяет файлы отчета, где sendmail
протоколирует все входящие и исходящие
соединения. Использование этого параметра
приводит к стремительному росту объемов
файлов отчетов, поэтому его желательно
использовать только для отладки.
Параметр: --
Параметр -- указывает на окончание списка
параметров и говорит о том, что все
остальные параметры за ним будут
интерпретироваться как адрес.
Параметр: -O
-o
Параметры -O
и -o используются
для замены значений параметров в файле
конфигурации. Параметры в файле
конфигурации определяют поведение sendmail на
локальном компьютере и то, каким образом
она взаимодействует с удаленными узлами.
Ранее в sendmail применялись односимвольные
параметры, однако вскоре обнаружилась
нехватка символов для описания новых
параметров. Тогда были разработаны
параметры с более длинными именами, и для их
описания уже использовались целые строки
текста.
С помощью параметра -o
задаются значения любым коротким (односимвольным)
параметрам. Формат этого параметра
следующий:
-ox value,
где x — имя
односимвольного параметра, а value —
его требуемое значение.
По параметру -O
заменяются длинные параметры файла
конфигурации. Этот параметр имеет
следующий формат:
-O option=value,
где option —
имя параметра, а value —
его значение. В следующем разделе "Файл
конфигурации sendmail" описываются параметры
sendmail и их применение при управлении sendmail.
Программе sendmail, как и любой
другой, нужно указать, что делать с
почтовыми сообщениями по мере их
поступления на сервер. Как и любая
программа — почтовый транспортный агент,
sendmail обрабатывает входящую почту и
передает управление другой программе для
работы с почтой либо отсылает ее
получателям на других узлах или на
локальном сервере. Файл конфигурации
регламентирует работу sendmail по пересылке
почты адресатам. По умолчанию все настройки
sendmail производятся в файле конфигурации /etc/sendmail.cf.
В этом файле также определяются
наборы правил для обработки почты. Смысл
наборов правил состоит в анализе входящих
почтовых сообщений и принятии решения о
дальнейших действиях с ними. В каждом
наборе правил идентифицируется формат
сообщений и то, какие действия производить
над такого рода сообщениями. При приеме
сообщения его заголовок анализируется и
проверяется на соответствие одному из
наборов правил, так как при отсутствии
набора правил sendmail просто не знает, как
поступать с сообщением дальше. Наборы
правил позволяют sendmail обрабатывать
практически все форматы сообщений. Однако
следует отметить, что почта, пришедшая от
SMTP-узла, имеет поля заголовка, отличные от
полей заголовка сообщения, полученного от
хоста
В правилах работы с почтой имеются свои справочные функции, которые также можно определить в файле конфигурации. Так, классы (classes) определяют общие фразы, которые помогают задавать наборы правил для сообщений определенного типа. Макросы (macros) представляют собой наборы значений для упрощения набора длинных строк текста в файле конфигурации. Под параметрами (options) понимают набор параметров для обеспечения работы программы sendmail (см. предыдущий раздел про команды sendmail ).
Файл конфигурации представляет собой блоки строк текста. Каждая строка начинается с одиночного символа, который определяет действие, выполняемое данной строкой. Строки, которые начинаются символами пробела или табуляции, являются продолжением предыдущей строки. Строки со знаком (#) используются для комментариев и программой sendmail игнорируются. В табл. 10.3 представлены стандартные обозначения строк из конфигурационного файла sendmail и их смысл.
| Строка конфигурации | Описание |
|---|---|
C |
Определяет классы текста |
D |
Определяет макрос |
F |
Определяет файлы, содержащие классы текста |
H |
Определяет поля заголовка и действия над ними |
K |
Определяет базы данных, содержащие текстовые данные для поиска |
M |
Определяет почтовые узлы |
O |
Определяет параметры sendmail |
P |
Определяет значения старшинства |
R |
Определяет наборы правил для работы с адресами |
S |
Определяет группы наборов правил |
Предупреждение
Файл конфигурации sendmail чувствителен к регистру букв. Все строки конфигурации должны начинаться с заглавных букв, иначе sendmail не сможет их распознать.
Основное назначение файла конфигурации — поддержка наборов правил для обработки почтовых сообщений. Макросы, классы, файлы и базы данных используются в нем для упрощения процесса описания наборов правил. После того как макрос, класс, файл или база данных определены, они применяются для представления данных набора правил. Благодаря этому значительно сокращается код, необходимый для создания правил. В этом разделе описывается формат строки конфигурационного файла и действие, которое она оказывает на работу программы sendmail.
Строки конфигурации, которые
начинаются с " D ",
определяют макрос, применяемый в наборах
правил. Макрос представляет собой слово или
фразу, которая передает смысл переменной
окружения. Имя макроса определяется как
одиночный символ или слово, заключенное в
фигурные скобки ( {} ).
Для указания специфических параметров
почтового узла администратор почтовой
системы может использовать заглавные буквы.
Ниже представлен формат D -строки:
Dx value,
где x
является именем макроса, а value
его значением. После того как макрос
определен, его можно дополнить командой $x,
где x — имя
макроса.
Можно создать условный макрос, чтобы проверить, был ли ранее определен данный макрос. Формат условного макроса следующий:
$?x value1 $| value2 $,
где x
представляет собой имя макроса, а value1 —
значение, которое должен принять макрос,
если он уже был ранее определен. В противном
случае макрос с заданным именем должен
принять значение value2.
Символы " $| " не
должны включаться в команду.
Как уже упоминалось ранее, в sendmail используются предварительно определенные макросы для фраз общего пользования. В табл. 10.4 представлены некоторые предварительно определенные макросы.
| Макрос | Описание |
|---|---|
$a |
Дата отправки
сообщения из поля Date: (Дата: ) |
$b |
Текущая дата в формате RFC822 |
$c |
Число переприемов сообщения |
$d |
Текущая дата в UNIX-формате |
$f |
Адрес отправителя |
$g |
Относительный адрес отправителя (включая имя хоста) |
$h |
Идентификатор сообщения в очереди |
$i |
Полное доменное имя узла |
$j |
|
$k |
Доменная часть в gethostbyname |
$m |
Имя процесса-демона sendmail |
$n |
Идентификатор процесса sendmail |
$p |
Формат адреса отправителя по умолчанию |
$r |
Протокол, используемый для приема сообщения |
$s |
Имя хоста отправителя |
$t |
Числовое выражение текущего времени |
$u |
Получатель сообщения |
$v |
Номер версии sendmail |
$w |
Имя хоста узла |
$x |
Полное имя отправителя |
$z |
Рабочий каталог получателя |
$_ |
Проверенный адрес отправителя |
${bodytype} |
Тип тела сообщения |
${client_addr} |
IP-адрес SMTP-клиента |
${client_name} |
Имя хоста SMTP-клиента |
${client_port} |
Номер TCP-порта SMTP-клиента |
${envid} |
Идентификатор конверта, переданный sendmail |
${opMode} |
Текущий режим
работы (c параметром -b ) |
${deliveryMode} |
Текущий режим
доставки (по параметру DeliveryMode ) |
Строки конфигурации, которые
начинаются с " С ",
определяют классы фраз, используемых в
наборах правил. Классы группируют фразы, в
которых имеется что-то общее, чтобы наборы
правил могли затем сканировать класс на
соответствие определенным критериям.
Формат С -строки
выглядит так:
Ccphrase1 phrase2 ... ,
где c
является именем класса, а phrase1, phrase2 и т.д.
представляют собой фразы, которые
группируются в класс. Подобно D -командам,
имена классов должны быть либо
односимвольными, либо представлять собой
слово, заключенное в фигурные скобки ( {} ).
Имена классов с прописными буквами или со
специальными символами зарезервированы в
программе sendmail для внутреннего
использования. При определении классов,
специфических для конкретного узла,
администраторы почтовых систем могут
использовать в именах классов лишь
заглавные буквы. В табл. 10.5 представлен
список некоторых предварительно описанных
имен классов, которые используются внутри
sendmail.
| Класс | Описание |
|---|---|
e |
Кодировка содержания сообщения (может быть 7 бит, 8 бит и двоичная) |
k |
|
m |
Доменное имя |
n |
Определяет типы тела MIME, которые не могут быть закодированы 7 битами |
q |
Определяет типы тела сообщения, которые не могут быть закодированы base64 |
s |
Определяет подклассы сообщений, которые могут быть обработаны рекурсивно |
t |
Определяет набор пользователей с высокой степенью доверия |
w |
Определяет все имена, под которыми известен данный хост |
Строки конфигурации, которые
начинаются с буквы " F "
также определяют классы, которые могут
использоваться наборами правил, но немного
иначе, чем С -строки. F -строки
указывают на имена файлов, в которых
содержатся списки фраз, используемых
наборами правил. Формат F -строки
следующий:
Fc filename,
где c —
одиночный символ имени класса, а filename —
полный путь к файлу, в котором содержатся
фразы. Следует помнить, что каждая фраза
помещается в отдельной строке.
Как и в случае с С -строками,
для описания внутренних классов в sendmail
используются прописные буквы и специальные
символы в имени класса. Для определения
параметров, специфических для конкретных
узлов, администраторам почтовых систем
следует использовать в именах классов
заглавные буквы.
Подобно F -строкам, K -строки
используются для определения файла, в
котором содержатся фразы, используемые
отдельным правилом. Однако при этом в К -строках
определяется специальный тип файла. Строки
конфигурации, которые начинаются с " К ",
определяют специальные базы данных,
которые используются sendmail при поиске
определенной информации. Посредством базы
данных sendmail может более оперативно
обращаться к нужной информации, чем при
использовании файлов с F -строками.
Формат K -строки
следующий:
Kmapname mapclass arguments,
где mapname —
имя базы данных, в том виде, как оно заявлено
в файле конфигурации; mapclass —
тип сгенерированной базы данных, а arguments —
аргументы, которые передаются sendmail для
оказания помощи в создании базы данных.
Часто в роли аргументов выступают
местоположение базы данных и флаги для
работы с ней.
Отображения в базе данных производятся набором правил, который имеет следующий синтаксис:
$(map key $@ arguments $: default $),
где map
выступает в роли имени отображения, а key
и arguments
передаются функции отображения для
получения соответствующей записи из базы
данных. Значение default
используется, если запись из базы не
извлекается.
Аргумент mapclass —
это, по сути, тип базы данных, к которой
обращается sendmail для получения тех или иных
данных. Каждый тип базы данных имеет свой
специфический метод индексации и
организации доступа к данным. Существует
большое количество типов mapclass,
с которыми может работать sendmail. Наиболее
общие классы представлены в табл. 10.6.
| Тип | Описание |
|---|---|
dbm |
Использовать
библиотеку |
btree |
Использовать
интерфейс btree
для доступа к библиотекам баз данных
Berkeley |
hash |
Использовать
интерфейс hash
для доступа к библиотекам баз данных
Berkeley |
nis |
Использовать средства для просмотра NIS |
ldapx |
Использовать средства для просмотра каталогов LDAP x.500 |
text |
Использовать средства для просмотра текстовых файлов |
implicit |
Производить просмотр файлов псевдонимов по умолчанию |
user |
При поиске имен
пользователей использовать функцию getpwnam() |
host |
При поиске имен использовать DNS |
bestmx |
При поиске
оптимальной МХ -записи
для хоста использовать DNS |
sequence |
Использовать список отображений при просмотре |
program |
Использовать внешнюю программу при просмотре |
В настоящее время в ОС Linux
поддерживаются только типы btree и hash.
Причем для отображения баз данных в sendmail
чаще применяется тип hash.
Отображенные базы данных могут
быть получены из текстовых файлов с помощью
команды makemap.
Формат этой команды следующий:
makemap mapclass outputfile < textfile,
где mapclass —
тип отображения базы данных, который
используется, textfile
является текстовой версией базы данных,
используемой в качестве исходных данных
для отображения, а outputfile
представляет собой уже преобразованную
базу данных.
Строки конфигурации, которые
начинаются с " Н ",
определяют формат строк заголовка, которые
помещаются программой sendmail в сообщение. В
строках заголовка употребляются макросы и
флаги макросов, которые определяют
соответствующий синтаксис заголовка
почтового сообщения, в зависимости от
протокола, используемого для доставки
сообщения. Узлы SMTP и хосты Н -строки
следующий:
H[?mflags?]hname:htemplate,
где mflags —
флаги макроса, которые должны быть указаны
вместе с самим макросом, hname —
имя строки заголовка, а htemplate —
формат строки заголовка с макросом в ней.
Перед помещением в исходящее сообщение
макросы преобразуются в свои нормальные
имена.
Для передачи сообщения
определенному набору правил, если имеется
специальный заголовок, используется еще
один формат Н -строки:
Hheader:$>Ruleset,
где header —
поле заголовка, а Ruleset —
номер набора правил (см. раздел "Наборы
правил" далее в этой лекции). Пример
применения Н-строк представлен в листинге
10.4.
1 H?P?Return-Path: <$g> 2 HReceived: $?sfrom $s $.$?_($?sS|from $.$_) 3 $.by $j ($v/$Z)$?r with $r$, id $i$?u 4 for $u; $|; 5 $.$b 6 H?D?Resent-Date: $a 7 H?D?Date: $a 8 H?F?Resen-From: $?x$x <$g>$|$g$. 9 H?F?From: $?x$x <Sg>$|$g$. 10 H?x?Full-Name: $x 11 # HPosted-Date: $a 12 # H?l?Received-Date: $b 13 H?M?Resernt-Message-Id: <$t.$i@$j> 14 H?M?Message-Id: <$t.$i@$j>
В листинге 10.4 строка 1
представляет собой простую Н -строку
с условием, которое определяется макросом.
Если в ней задан макрос P,
который описан ранее в файле sendmail.cf
как одиночная точка ( .),
то sendmail добавляет поле заголовка Return-Path
с макросом $g в
качестве данных для этого поля. Как указано
в табл. 10.4 макрос $g
отображает относительный адрес
отправителя. А относительным этот адрес
называется потому, что он ставится в
соответствие с определенным получателем.
Таким образом, Н -строки
указывают sendmail добавлять полное имя
пользователя и имя хоста в поле заголовка Return-Path,
если задан флаг макроса Р.
Строки конфигурации, которые
начинаются с буквы " М ",
определяют программу, используемую sendmail
для пересылки почты. Различные почтовые
программы должны быть описаны для sendmail с
помощью М -строк.
Тогда ей будет понятно, как работать с ними.
Формат М -строки
следующий:
Mprog, [field=value]... ,
где prog —
имя почтовой программы, а все пары field=value
описывают атрибуты, необходимые для работы
sendmail с этой программой. В именах полей могут
использоваться полные названия полей, хотя
в sendmail используются лишь первые символы из
названия поля. В табл. 10.7 приведены М -строки
полей, которые могут применяться в sendmail.
| Поле | Описание |
|---|---|
Path |
Путь к почтовой программе |
Flags |
Флаги для почтовой программы |
| Sender | Набор правил для адреса отправителя |
Recipient |
Набор правил для адреса получателя |
Argv |
Аргументы, которые передаются с почтовой программой |
|
Метка конца строки, используемая в почтовой программе |
Maxsize |
Максимальная длина сообщения, обрабатываемого почтовой программой |
Linelimit |
Максимальная длина строки, обрабатываемой почтовой программой |
Directory |
Рабочий каталог почтовой программы |
Userid |
Идентификаторы пользователя и группы, используемые по умолчанию при запуске почтовой программы |
Nice |
Значение
переменной nice()
для почтовой программы |
Charset |
Кодировка, принятая в сообщениях (по умолчанию 8 бит) |
Type |
Тип |
Поле Flags
используется для определения порядка
применения почтовой программы программой
sendmail. Флаги определяют действия, которые
sendmail может предпринимать при вызове
почтовой программы. В поле Flags
может использоваться сразу несколько
флагов. Тогда все они задаются в одной
строке без пробелов. В табл. 10.8 дается
описание некоторых флагов.
| Флаг | Описание |
|---|---|
a |
Использовать ЕSMTP |
A |
Использовать базу данных псевдонимов |
b |
Принудительно вводить пустую строку в конце сообщения |
c |
Не включать в адреса комментарии |
C |
Добавлять имя
локального домена к принятым адресам
без символа @ |
d |
Не включать квадратные скобки при выводе маршрутной информации |
D |
Включать поле
заголовка " Date: " |
F |
Включать поле
заголовка " From:" |
h |
Сохранять прописные буквы в именах хостов |
l |
Локальная почтовая программа |
m |
За одну транзакцию почтовая программа может выполнять доставку нескольким пользователям |
M |
Включать поле
заголовка Message-ID: |
n |
Не вставлять UNIX-строки
типа From: |
S |
Не сбрасывать идентификатор пользователя перед вызовом почтовой программы |
u |
Сохранять прописные буквы в именах пользователей |
U |
Строки From: |
5 |
Если псевдонимы не определены, для принятия решения использовать набор правил с номером 5 |
9 |
Преобразование расширений MIME из 7-битового вида в 8-битовый |
В листинге 10.5 в качестве примера
приведены некоторые М -строки
из файла sendmail.cf.
1 ### SMTP Mailer specification ### 2 Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21,E=\r\n L=990, T=DNS/RFC822/SMTP, 3 Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 4 Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 5 Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, T=DNS/RFC822/SMTP, 6 ### UUCP Mailer specification ### 7 Muucp, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 8 Muucp-old, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 9 Msuucp, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 10 Muucp-new, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 11 Muucp-dom, P=/usr/bin/uux, F=mDFMhud, S=52/31, R=21, M=100000, 12 Muucp-uudom, P=/usr/bin/uux, F=mDFMhud, S=72/31, R=21, M=100000, 13 ### PROCMAIL Mailer specification ### 14 Mprocmail, P=/usr/local/bin/procmail, F=DFMSPhnu9, S=11/31, R=21/31, T=DNS/RFC822/X-Unix, 15 ### Local and Program Mailer specification ### 16 Hlocal, P=/usr/local/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40, 17 Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
В строках 2–5 листинга 10.5
описываются почтовые программы для работы
по протоколу SMTP, а в строках 7–12 почтовые
программы для работы с procmail,
а в строках 16 и 17 определяются почтовые
программы, которые используются локальной
программой для обработки почты. Для того
чтобы sendmail смогла производить запуск
соответствующих программ, указываются
полные пути к выполняемым файлам почтовых
программ. Работая с SMTP-соединениями,
программа sendmail может использовать для
пересылки почты свои внутренние IP-соединения.
В строке 11 описывается почтовая
программа, которая часто применяется для
подключения офисов компаний к сети Internet.
Программа
специально разработана для передачи
почтовых сообщений с использованием
протокола М -строк:
P ) /usr/sbin/uux;F ):m —
sendmail за одну транзакцию может посылать
сообщения нескольким пользователям;D —
sendmail пересылает поле Date:
формата RFC 822;F —
sendmail пересылает поле From:
формата RFC 822;M —
sendmail пересылает поле Message ID: формата RFC 822;h —
sendmail сохраняет прописные и заглавные
буквы в именах хостов;u —
sendmail сохраняет прописные буквы в именах
пользователей;d —
sendmail не включает квадратные скобки при
выводе маршрутной информации;Интереснее выяснить, какой из
флагов не представлен в строке 11. Обратите
внимание, что в строках 7–10 задан флаг U.
Этот флаг sendmail означает, что сообщения
должны пересылаться с применением From:. Так
как протокол в
Строки конфигурации, которые
начинаются буквой " Р ",
определяют значения приоритетов. В каждом
сообщении формата RFC822 может использоваться
заголовок :,
в котором обозначаются признаки срочности
сообщения. Назначение поля : заключается в особой обработке
важных сообщений. Конфигурация с помощью Р -строк
позволяет sendmail назначать числовые значения
приоритетов на основании содержания поля :.
Тогда пересылка почты осуществляется на
основании значения в поле :.
Формат Р -строки
следующий:
Ptext=value,
где text —
содержимое поля :,
а value —
числовое значение, которое используется
sendmail для определения степени важности
сообщения. Более высокие значения value
говорят о более высоком приоритете
сообщения. В некоторых случаях в
конфигурации sendmail можно задавать
отрицательные значения приоритетов для
классов " bulk " и " "
в поле :,
чтобы быть уверенным в том, что сообщения
этих классов имеют самый низкий приоритет
при доставке сообщений. Задание
Pfirst-class=0 Pspecial-delivery=100 Plist=-30 Pbulk=-60 Pjunk=-100
При такой конфигурации почте
присваивается первый класс, который имеет
наивысший приоритет, а спаму (помечаемому
как ) задается
самый низкий приоритет при передаче.
Строки конфигурации, которые
начинаются с буквы " О ",
определяют параметры, управляющие работой
программы sendmail. Существует довольно много
параметров, с помощью которых можно
управлять поведением sendmail. Кроме задания
параметров в конфигурационном файле, их
также можно задавать в командной строке с
помощью параметров -о
и -О.
В ранних версиях sendmail
применялись односимвольные названия
параметров. Формат О -строки
с использованием таких параметров
следующий:
Oo value,
где o —
односимвольное имя параметра, а value
представляет собой значение этого
параметра. В настоящее время sendmail
распознает и параметры длиной в несколько
символов. Формат О -строки
для параметров с длинными именами
следующий:
О option=value,
где option —
длинное имя параметра, а value
представляет собой его значение. В
зависимости от параметра значение value
может быть текстовым, целочисленным,
логическим (булевым) или интервалом времени.
Для управления работой sendmail имеется большое количество параметров. Их настолько много, что нам не хватит этой лекции, чтобы описать их все. В табл. 10.9 представлены некоторые наиболее часто используемые параметры конфигурирования sendmail для работы на стандартном почтовом сервере.
| Параметр | Описание |
|---|---|
AliasFile |
Определяет файл почтовых псевдонимов |
DefaultUser |
Устанавливает идентификаторы пользователя и группы, с которыми будет запускаться sendmail |
DontBlamesendmail |
Разрешает всем внешним пользователям выполнять чтение-запись из каталогов и файлов (очень опасно!) |
HoldExpensive |
Позволяет sendmail собирать почту в специальную очередь для дальнейшей обработки другими почтовыми программами |
CheckpointInterval |
Устанавливает интервал времени, через который проверяется очередь |
DeliveryMode |
Устанавливает режим доставки (интерактивный, фоновый, с помещением в очередь или с отложенной доставкой) |
ErrorMode |
Устанавливает метод уведомления об ошибках (выводить на печать, уведомлять по электронной почте или не уведомлять об ошибках) |
SaveFromLine |
Сохраняет все UNIX-заголовки From:,
даже если они являются избыточными |
MaxHopCount |
Устанавливает, сколько раз сообщение может обрабатываться другими МТА (количество переприемов). Сообщение аннулируется, если это значение превышено |
IgnoreDots |
Игнорировать точки во входящих сообщениях. В SMTP всегда запрещено |
SendMimeErrors |
Сообщения об ошибках выдаются в формате MIME |
ConnectionCacheTimeout |
Устанавливает максимальный интервал времени ожидания для соединения с кэшем |
LogLevel |
Устанавливает уровень детализации отчетов. По умолчанию это значение равно 9 |
MeToo |
Пересылает сообщение на указанное имя пользователя, даже если это псевдоним |
CheckAliases |
Проверка псевдонимов при реконструкции базы данных псевдонимов |
OldStyleHeaders |
Разрешает применение заголовков старого формата с использованием пробелов в качестве разделителей |
QueueDirectory |
Определяет каталог, где находится очередь почтовых сообщений |
StatusFile |
Собирает статистические данные о текущем состоянии в файл |
Timeout.queuereturn |
Устанавливает интервал ожидания сообщения |
UserDatabaseSpec |
Устанавливает спецификацию базу данных пользователей |
ForkEachJob |
Для доставки каждого задания в очередь использовать отдельный процесс |
SevenBitInput |
Урезает ввод до 7 бит |
EightBitMode |
Определяет метод обработки 8-битовых данных |
MinQueueAge |
Обрабатывать только те задания, которые находятся в очереди уже определенное время |
DefaultCharSet |
Устанавливает кодировку при преобразовании данных в MIME-формат |
DialDelay |
Определяет время задержки для сетей с установлением соединения по запросу |
NoRecipientAction |
Определяет обработку сообщений, у которых нет корректных получателей |
MaxDaemonChildren |
Определяет количество дочерних процессов sendmail, которые позволяют производить одновременную обработку входящей почты |
ConnectionRateThrottle |
Определяет максимальное количество входящих соединений, которые процесс-демон может обработать параллельно |
Некоторые примеры параметров, применяемых в стандартной конфигурации:
O AliasFile=/etc/aliases O DefaultUser=8:12 O DeliveryMode=background O HelpFile=/usr/lib/sendmail.hf
В этой группе в О -строках
задаются значения для некоторых общих
параметров sendmail.
Ядро файла конфигурации
составляют наборы правил. Наборы правил являются для sendmail инструкцией,
определяющей действия, которые должны
выполняться над входящими сообщениями, а
также способы доставки сообщения
получателям. В наборах правил обычно
используются R -строки
и S -строки
конфигурации. С помощью R -строк
определяется алгоритм действий,
выполняемых с сообщением, в то время как S -строки
используются для определения групп наборов
правил. В последующих разделах дается
описание R - и S -строк
конфигурации.
В R -строках
применяются специальные маркеры для
анализа и обработки входящего сообщения. С
их помощью определяются получатели
сообщения и способы его доставки. В каждой R -строке
задается одно правило. Правило состоит из
двух частей — левой части ( LHS )
и правой части ( RHS ).
Часть LHS
определяет, какие маркеры необходимо
искать во входящем сообщении. В то же время
в RHS определяется,
каким образом переписывать адрес с учетом
маркеров из LHS.
Формат R -строки
следующий:
Rlhs rhs comments
Каждое поле должно разделяться
по крайней мере одним символом табуляции.
Все макросы и классы, используемые в наборе
правил, расширяются в соответствии с
информацией, полученной о сообщении. Для
анализа сообщений в LHS определяются новые метасимволы. В
табл. 10.10 представлены метасимволы,
используемые в макросах LHS.
| Символ | Описание |
|---|---|
$* |
Соответствуют ноль или более маркеров |
$+ |
Соответствуют один или более маркеров |
$- |
Соответствует только один маркер |
$@ |
Не соответствует ни одного маркера |
$=x |
Соответствует
любой элемент класса x |
$-x |
Не соответствуют
элементы класса x |
Когда обнаружены маркеры,
соответствующие метасимволу в LHS,
то они назначаются в качестве величины
макроса в RHS.
Каждое новое имя макроса задается в форме $nv,
где n — числовой
индекс маркера в сообщении. Например, если в LHS в качестве
входных данных для
задано " $-:$+ ", то RHS
передаются значения $1,
что соответствует " "
и $2, обозначающее
" ispmail ".
Если в сообщении не найдено
соответствий метасимволам LHS,
то никакие действия набором правил не
выполняются. Если же во входящем сообщении
найдены соответствия метасимволам LHS,
то входные данные переписываются в формат RHS. При перезаписи сообщения в RHS
также применяются метасимволы. В табл. 10.11
представлены метасимволы, которые
применяются в RHS.
| Символ | Описание |
|---|---|
$n |
Подстановка
маркера n
из LHS |
$[name$] |
Канонизация имени |
$(map key $@ arguments $:Default $) |
Универсальный ключ для функции преобразования |
$>n |
Вызов набора правил n |
$# |
Передача управления почтовой программе |
$@host |
Определение хоста |
$:user |
Определение пользователя |
Как показано в табл. 10.11, любые
имена хостов, которые передаются в RHS, заключаются в скобки с символом $[$],
а затем расширяются до своего нормального
вида, включая доменное имя. Также из табл. 10.11
видно, что один набор правил может напрямую
вызывать другой набор правил посредством
метасимвола $>n,
где n
представляет собой идентификатор S -строки
следующего набора правил.
Предупреждение
Наборы правил не для
слабонервных. В большинстве случаев для
обработки почты в соответствии со
стандартными требованиями бывает
достаточно наборов правил, установленных
по умолчанию. Иногда новые наборы правил
реализуются для
Строки конфигурации, которые
начинаются с буквы " S ",
идентифицируют набор правил. Наборы правил
в sendmail обычно идентифицируются числовым
значением. В программе sendmail наборы правил
используются для анализа почтовых
сообщений с целью выявления получателя и
дальнейшей их доставки. В sendmail используются
шесть стандартных наборов правил, которые
представлены в табл. 10.12.
| Набор правил | Описание |
|---|---|
0 |
Передача управления почтовой программе, хосту и пользователю |
1 |
Применяется ко всем адресам отправителей |
2 |
Применяется ко всем адресам получателей |
3 |
Преобразует адреса в каноническую форму |
4 |
Преобразует внутренние адреса во внешние |
kj |
Применяется к локальным адресам, у которых нет псевдонимов |
Как уже отмечалось в разделе,
описывавшем работу R -строки,
может организовываться специальный набор
правил, который начинается строкой check.
Такими наборами правил идентифицируются те
сообщения, которые будут либо отвергаться,
либо пересылаться почтовым программам как
ошибочные для уничтожения. На рис. 10.1
представлен типичный маршрут, по которому
проходит сообщение при стандартной
конфигурации наборов правил.
(рис 10.1) Схема взаимодействия наборов правил sendmailКак видно из рис. 10.1, все сообщения сначала проходят через набор правил номер 3. В этом наборе правил происходит "очистка" адресов посредством их преобразования в канонические. После обработки набором правил 3 производится обработка сообщения набором правил 0. Здесь из адреса извлекаются имя почтовой программы, имя хоста и имя пользователя. Затем сообщение передается соответствующей почтовой программе.
Подобно этому работают набор правил 1, в котором производится перезапись адресов отправителей, и набор правил 2, где перезаписываются адреса получателей. Затем вся информация передается набору правил 4 для преобразования адресов в формат, удобный для передачи сообщения во внешний мир.
Можно наблюдать за работой
отдельных наборов правил, запустив
программу sendmail с параметрами -bt.
С помощью этих параметров можно
протестировать определенный адрес, задав
его в качестве исходного и наблюдая за
реакцией наборов правил в имеющемся файле
конфигурации. Часто эти параметры задаются
с параметром -С
для тестирования нового файла конфигурации.
В листинге 10.6 представлен пример сеанса
работы sendmail с параметрами -bt
и -С.
1 [rich@shadrach rich]$ /usr/sbin/sendmail -bt -C test.cf 2 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 3 Enter <ruleset> <address> 4 > 3,0 rich 5 rewrite ruleset 3 input: rich 6 rewrite ruleset 96 input: rich 7 rewrite ruleset 96 returns: rich 8 rewrite ruleset 3 returns: rich 9 rewrite ruleset 0 input: rich 10 rewrite ruleset 199 input: rich 11 rewrite ruleset 199 returns: rich 12 rewrite ruleset 98 input: rich 13 rewrite ruleset 98 returns: rich 14 rewrite ruleset 198 input: rich 15 rewrite ruleset 198 returns: $# local $: rich 16 rewrite ruleset 0 returns: $# local $: rich 17 > 3,0 president@whitehouse.gov 18 rewrite ruleset 3 input: president @ whitehouse . gov 19 rewrite ruleset 96 input: president < @ whitehouse . gov > 20 rewrite ruleset 96 returns: president < @ whitehouse . gov > 21 rewrite ruleset 3 returns: president < @ whitehouse . gov > 22 rewrite ruleset 0 input: president < @ whitehouse . gov > 23 rewrite ruleset 199 input: president < @ whitehouse . gov > 24 rewrite ruleset 199 returns: president < @ whitehouse . gov > 25 rewrite ruleset 98 input: president < @ whitehouse . gov > 26 rewrite ruleset 98 returns: president < @ whitehouse . gov > 27 rewrite ruleset 198 input: president < @ whitehouse . gov > 28 rewrite ruleset 95 input: < uucp-dom : ispmail > president < @ whitehouse . gov > 29 rewrite ruleset 95 returns: $# uucp-dom $@ ispmail $: president < @ whitehouse . gov > 30 rewrite ruleset 198 returns: $# uucp-dom $@ ispmail $: president < @ whitehouse . gov > 31 rewrite ruleset 0 returns: $# uucp-dom $@ ispmail S: president < @ whitehouse . gov > 32 >
В строке 1 листинга 10.6 с
параметрами -bt
запускается программа sendmail для
тестирования файла конфигурации, заданного
параметром -С. В
строке 4 адрес " rich "
тестируется сначала набором правил 3, а
затем набором правил 0. В строках 5–8 в
наборе правил 3 в качестве входных данных
используется адрес " rich ".
Набор правил 3 вызывает другой набор правил
96 для обработки входных данных и затем в
качестве вывода возвращает также адрес " rich ".
Работу набора правил 0 можно проследить в
строках 9–16. Итак, исходными данными для
набора правил 0 снова является адрес " rich ".
Затем набор правил 0 вызывает наборы 199, 98 и
198, которые используются в дальнейшем при
анализе сообщений. Результатами работы
набора правил 0 являются локальная почтовая
программа local и
адрес rich. Не так
уж сложно, не правда ли?
В строках 17–31 происходят более
интересные вещи. Здесь снова выполняется
тестирование наборов правил 3 и 0, но уже на
примере внешнего адреса president@whitehouse.gov.
В строках 18–21 отображаются действия набора
правил 3 при обработке исходных данных. На
этот раз на выходе после работы набора
правил 3 получаем адрес, отличный от
поступившего на вход. Как видите, этот набор
правил отделил именную часть адреса ( president )
от имени хоста ( whitehouse.gov ),
чтобы затем по отдельности передать их для
дальнейшей обработки набору правил 0. Далее,
в строках 22–31 показана обработка исходных
данных набором правил 0. Как видите, этим
набором правил вызывается несколько
промежуточных правил. Как уже упоминалось
ранее, в результате работы набора правил 0
становится известна почтовая программа ( ),
которая требуется для доставки сообщения,
имя хоста ( ispmail ),
которому нужно переслать сообщение, и имя
пользователя, которому адресовано
сообщение ( president@whitehouse.gov ). Таким образом, файл
конфигурации, приведенный в примере,
настроен для пересылки всех почтовых
сообщений по ispmail.
Для выхода из режима тестирования sendmail
нажмите клавиши Ctrl+D.
Наверняка, полезно рассмотреть
пример набора правил, чтобы лучше
разобраться в механизме работы строк
конфигурации в программе sendmail. 26 марта 1999
года сеть Internet поразил вирус Melissa. Вирус Melissa
представляет собой
Напомним еще раз — программа sendmail является почтовым транспортным агентом, и ее работа состоит в электронной пересылке почты. С помощью набора правил, разработанного для блокировки вируса Melissa, почтовые серверы, на которых использовался пакет sendmail, смогли сдержать распространение этого вируса. Набор правил, блокирующий вирус Melissa, работает следующим образом: все сообщения, содержащие вирус, просто не пересылаются получателю и аннулируются. В листинге 10.7 представлено обновление для файла конфигурации, которое призвано блокировать распространение вируса Melissa.
1 HSubject: $>Check_Subject
2 D{MPat}Important Message From
3 D{MMsg}This message may contain the Melissa virus.
4
5 SCheck_Subject
6 R${MPat} $* $#error $: 553 ${MMsg}
7 RRe: ${MPat} $* $#error $: 553 ${MMsq}
В строках 1–3 листинга 10.7 заданы
макросы, которые уже должны быть вам
знакомы. Строка 1 представляет собой Н -строку,
согласно которой, все сообщения с
заголовком Subject:
пересылаются набору правил Check_Subject.
В строке 2 определяется макрос с текстом,
который обычно встречается в сообщениях,
пораженных вирусом Melissa. С появлением новых
версий вируса можно легко расширить
диапазон анализа, сменив эту строку на F -строку,
где задается отдельный файл содержащий
строки, которые должны подвергаться
проверке. В строке 3 определяется еще один
макрос, используемый в качестве сообщения,
которое отправляется для сигнализации о
заражении.
В строке 5 определяется начало
нового набора правил с названием Check_Subject.
Согласно Н -строке,
все сообщения с заголовком Subject:
формата RFC 822 будут передаваться этому
набору правил для проверки на наличие
вируса. В строках 6 и 7 определены новые
правила в наборе, которые и блокируют вирус
Melissa.
Вирус Melissa известен тем, что он
создает поддельные сообщения с текстом
"Important Message From" и адресом жертвы в качестве
темы письма в поле Subject: (Тема:). Набор правил в строке 6 проверяет
содержимое строк в поле темы письма и, если
они содержат ключевую фразу, снабжает их
нулевым или несколькими маркерами (метасимволами $* ). Затем он
пересылает сообщение почтовой программе,
которая обрабатывает ошибки, для выдачи
соответствующего уведомления об ошибке
отправителю. При этом само зараженное
сообщение аннулируется.
В строке 7 эти же действия
производятся с сообщениями, в поле темы
которых содержится префикс " Re:".
В этом случае сообщение также пересылается
почтовой программе, которая обрабатывает
ошибки, для выдачи соответствующего
уведомления об ошибке отправителю.
Хотя вирус Melissa и не поражает саму программу sendmail, она, наоборот, может эффективно блокировать его воздействие на пользователей почтового сервера, использующих программу Microsoft Outlook. Этот пример еще раз демонстрирует высокую гибкость программы sendmail.
Итак, для доставки почты получателям на
сервере электронной почты под управлением
ОС Linux нужна специальная программа —
почтовый транспортный агент Mail Transfer Agent (MTA).
Одним из старейших и наиболее мощных МТА
для платформы Linux является программа sendmail.
Настройка программы sendmail для обработки
почты на конкретном узле выполняется с
помощью файла конфигурации /etc/sendmail.cf.
Файл конфигурации представляет собой набор
правил, которые указывают, каким образом
sendmail должна обрабатывать входящие
сообщения и определять получателей. Также с
помощью наборов правил принимается решение,
каким почтовым программам далее передавать
сообщения. Они же используются для
организации фильтров для отсеивания
нежелательных сообщений. Все проблемы,
связанные с настройкой файла конфигурации,
после прочтения этой лекции, где каждое
действие подробно разъяснялось, должны
быть устранены. В следующей лекции, "Установка
и конфигурирование sendmail", рассматриваются
вопросы конфигурирования sendmail для работы
на определенном почтовом сервере.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.