Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 10:

Программа sendmail

Подобно этому работают набор правил 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 >
Листинг 10.6. Пример сеанса работы sendmail с параметрами -bt

В строке 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 становится известна почтовая программа ( uucp-dom ), которая требуется для доставки сообщения, имя хоста ( ispmail ), которому нужно переслать сообщение, и имя пользователя, которому адресовано сообщение ( president@whitehouse.gov ). Таким образом, файл конфигурации, приведенный в примере, настроен для пересылки всех почтовых сообщений по UUCP на хост ispmail. Для выхода из режима тестирования sendmail нажмите клавиши Ctrl+D.

Пример набора правил

Наверняка, полезно рассмотреть пример набора правил, чтобы лучше разобраться в механизме работы строк конфигурации в программе sendmail. 26 марта 1999 года сеть Internet поразил вирус Melissa. Вирус Melissa представляет собой макровирус программы Microsoft Word, который рассылает свои копии по 50 адресам, взятым из адресной книги почтовой программы Microsoft Outlook. Всего через несколько часов после его обнаружения компания sendmail Inc., которая занимается распространением и поддержкой программы sendmail, выпустила новый набор правил, блокирующий распространение вируса через серверы электронной почты.

Напомним еще раз — программа 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}
Листинг 10.7. Обновление файла конфигурации sendmail для блокировки вируса Melissa

В строках 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 для работы на определенном почтовом сервере.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно