
- •Почтовые агенты в различных ос
- •Структура email-сообщения
- •Заголовки почтового сообщения
- •Примеры почтовых сообщений с заголовками
- •Основные команды протокола smtp
- •Vrfy email_адрес
- •Пример smtp-сеанса
- •Основные команды протокола pop-3
- •Программа sendmail: ее функции и составные части
- •Псевдонимы, списки рассылки и форвардинг
- •Конфигурация sendmail (файл sendmail.Cf)
- •Правила
- •Правила выбора агентов доставки
- •Порядок применения наборов правил
- •Специальные наборы правил (check_...)
- •Обсуждение
- •Задание 6.
Порядок применения наборов правил
Существуют базовые наборы правил c преодпределенными номерами, которые sendmail вызывает в определенной последовательности для обработки сообщения. Они, в свою очередь, могут вызывать какие-либо вспомогательные наборы.
Сначала отдельно для адреса отправителя и отдельно для адреса получателя вызывается набор правил 3, который производит фокусировку. Фокусировка залючается в том, что любой почтовый адрес приводится к виду "пользователь < @ домен(хост) >". Для почтовых адресов Интернет эта процедру достаточно тривиальна: "m2@vvsu.ru" приводится к виду "m2 < @ vvsu . ru . >" (7 токенов) - обратите внимание, что доменное имя - полностью определенное, заканчивается на точку.
Фокусировка очень удобна при последующем разборе адресов с помощью правил.
После прохождения набора 3 сфокусированный адрес получателя подается одновременно на наборы 0 и 2. Набор 0 производит выбор агента доставки. Набор 2 предназначен для преобразования адреса получателя; в последних версиях это набор ничего не делает или отсутствует. После этого адрес получателя проходит через тот набор правил, который указан в параметре "R=" определения агента доставки (который уже выбран с помощью набора 0). Если в параметре "R=" указано два набора - один для конверта, другой для заголовка, - то адрес получателя подается одновременно в каждый из указанных наборов и на выходе получается два адреса получателя: один для конверта, другой для заголовка.
Обработка адреса отправителя производится в следующей последовательности: после набора 3 сфокусированный адрес отправителя подается в набор 1, который, аналогично набору 2, в последних версиях ничего не делает или отсутствует. После этого адрес отправителя проходит через тот набор правил, который указан в параметре "S=" определения уже выбранного агента доставки. Если в параметре "S=" указано два набора, то, аналогично случаю с адресом получателя, на выходе получается отдельный вариант адреса отправителя для конверта и отдельный - для заголовка.
Преобразования всех адресов завершаются набором 4, производящим дефокусировку (т.е. отменяющим изменения, сделанные набором 3).
После этого сообщение с надлежащим образом преобразованными адресами и сфомированными заголовками поступает для отправки к программе агента доставки.
Специальные наборы правил (check_...)
Специальные наборы правил check_mail, check_rcpt, check_relay и check_compat предназначены для проверки легитимности адресов сообщений, поступающих в sendmail, особенно через SMTP. Эти наборы формируют локальную политику приема и обработки сообщений. Каждый набор вызывается в определенный момент обработки сообщения. Если набор отсутствует или возвратил что угодно кроме агента доставки error, считается, что принято положительное решение. Иначе sendmail отказывает в обработке сообщения по причине, указанной в правиле, выбравшем агента error (пример правила см. выше).
Набор правил check_mail вызывается непосредственно после ввода подсоединившимся по SMTP агентом команды "MAIL FROM". В качестве рабочего пространства в набор подается аргумент команды "MAIL FROM" (т.е. адрес отправителя из конверта входящего письма). Этот набор правил решает, принимать ли вообще почту от данного отправителя.
Пример набора check_mail, который отказывает в приеме сообщений из почтового домена "spamming.org":
Scheck_mail
R$* $: $>3 $1 фокусировка
R$* <@ $+. > $* $1 <@ $2> $3 удаление завершающей точки
R$* <@ $+ > $* $: $2 выделение доменной части адреса
R$* . $+ . $+ $: $2 . $3 выделение двух последних частей доменного имени
Rspamming.org $#error $@ 5.7.1 $: "cannot accept mail from spamming.org"
Набор правил check_rcpt вызывается непосредственно после ввода подсоединившимся по SMTP агентом команды "RCPT TO". В качестве рабочего пространства в набор подается аргумент команды "RCPT TO" (т.е. адрес получателя из конверта входящего письма). Пример этого набора см. в литературе. Этот набор правил решает, отправлять ли вообще почту данному получателю.
Набор правил check_relay вызывается непосредственно перед началом SMTP-сеанса с подсоединяющимся агентом. В качестве рабочего пространства в набор подаются доменное имя и IP-адрес подсоединяющегося агента, разделенные символами "$|":
maria.vvsu.ru $| 212.16.195.98
Пример этого набора см. в литературе. Этот набор правил решает, открывать ли вообще SMTP-сеанс для данного агента.
Набор правил check_compat вызывается непосредственно перед передачей сообщения агенту доставки (все адреса уже преобразованы и дефокусированы; произведено раскрытие псевдонимов из /etc/mail/aliases и .forward). В качестве рабочего пространства в набор подаются адреса отправителя и получателя, разделенные символами "$|":
m2@vvsu.ru $| god@heavens.com
Пример этого набора см. в литературе. Этот набор правил решает, разрешена ли доставка сообщения, основываясь не на одном адресе, а на паре адресов отправитель-получатель. Набор вызывается не только при выборе агента SMTP, но и при выборе любого другого агента доставки.