SMC Milter - Технология

From Tau Projects
Jump to: navigation,
SMC Milter Logo

Алгоритмы работы фильтра

По нашему мнению, почтовый сервер должен принимать почту только от тех пользователей, которые легально используют почтовые аккаунты своих почтовых серверов, но используемая на сегодняшний день реализация протокола SMTP не запрещает отправку почты с серверов, не имеющих отношение к указанному почтовому домену. В фильтре SMC неверифицированная почта может быть отвергнута или отправлена на обработку блокирующим алгоритмом фильтра. Как упомяналось выше, для блокирования нежелательной почты по умолчанию используется алгоритм, подобный алгоритму «серых списков», или Greylisting. Этот алгоритм основан на проверке исполнения сервером функции отложенной доставки почты при получении «временной ошибки» сервера. Если почтовый сервер получателя отказывается принять письмо и сообщает о «временной ошибке», сервер отправителя обязан позже повторить попытку. Программное обеспечение для массовой рассылки почты в таких случаях обычно не пытается этого делать. Успешный результат проверки сохраняется на время определяемое параметром lifetime конфигурационного файла. Все последующие письма от того же отправителя тому же получателю, посланные через тот же сервер, будут приняты без задержки в течение этого времени. Настройка работы алгоритма осуществляется двумя следующими параметрами конфигурационного файла maxdelay и maxcount. Параметр maxdelay определяет максимальное время, в течение которого фильтр будет ждать повторного обращения к серверу. Если в течение этого времени такое повторное обращение было зарегистрировано, то счетчик удачных попыток будет увеличен на единицу, если нет — счетчик будет обнулен. Параметр maxcount определяет общее количество таких попыток после которых почта будет принята. В идеальном случае этот алгоритм задерживает только нежелательную почту, но в реальности это не так. Могут ошибочно отсеиваться сообщения роботов регистрации, рассылки с новостных сайтов и пр. если они используют нестандартные методы отправки почты. Задержки в доставке сообщений могут быть неприемлемы в случае срочной корреспонденции. Фильтр содержит набор автоматических «белых списков», которые позволяют избежать такой задержки или ошибки. Алгоритм AutoSPF это основной из автоматических «белых списков» фильтра.

AutoSPF

В алгоритме AutoSPF политика определения «легальности» почты (верификации отправителя сообщения) строится на анализе вероятности существования связи почтового домена отправителя с IP адресом передающего почтового сервера. Технология автоматической верификации отправителя AutoSPF, во многом подобна популярной сегодня технологии SPF (Sender Policy Framework). В обеих случаях для целей верификации сообщений, исходящих из данного домена используются DNS записи. В случае использования технологии SPF администратор (владелец) домена, используя DNS публикует данные, описывающие возможные источники электронной почты с адресами отправителя из этого домена. В случае использования AutoSPF предполагается что записи DNS обычно изначально содержат достаточно информации для верификации отправителя. В простейшем случае для успешной верификации отправителя необходимо выполнение 3 основных условий:

  1. Должна присутствовать хотя бы одна MX запись в описании зоны почтового домена (хостовой части e-mail адреса отправителя);
  2. Должно выполняться обратное разрешение имени хоста отправителя;
  3. Хост отправителя должен иметь запись на одном из DNS серверов, обслуживающих зону почтового домена.

С помощью анализа DNS-записей проверяется соответствие домена отправителя на соответствие адресу сервера который осуществил соединение. Т.е. отправитель с адресом somebody@host.name может отправить почту только через почтовый сервер домена host.name, который разрешается через DNS и имеет MX запись, соответствующую IP адресу сервера осуществившему соединение.

Реальный алгоритм автоматической верификации отправителя выглядит немного сложнее. На первом этапе анализируется список MX записей в описании зоны почтового домена. С помощью прямого разрешения имени каждого из указанных MX серверов получается список IP адресов почтовых серверов домена. Сравнением IP адреса отправителя с адресами из полученного списка определяем принадлежность сервера почтовому домену отправителя.

На этом этапе поиск можно было бы завершить, но реальность такова, что почта зачастую отправляется вполне легально через родственные сети, например с использованием почтового сервиса провайдера. Для определения родственного окружения необходима дополнительная информация, и она также в большинстве случаев содержится в DNS-записях. В том случае, если используется почтовый (MX) сервер провайдера, родственные сети, как правило обслуживаются одними и теми же серверами имен. Исходя из этого предположения, для начала получаем список серверов имен (NS записи), указанных в описании зоны почтового домена. Для определения списка серверов имен, связанных с IP адресом отправителя, составляем соответствующую этому адресу обратную (PTR) запись. На следующем этапе получаем список серверов имен (NS записи) указанных в описании обратной зоны IP адреса отправителя. В том случае если хотя бы один из указанных серверов имен присутствует в обеих зонах — отправитель считается верифицированным. На последнем этапе с помощью обратного разрешения IP адреса отправителя определяем соответствующее ему имя домена. Получаем список серверов имен (NS записи), указанных в описании зоны этого домена. Сравниваем каждую из найденных записей с соответствующими записями в зоне почтового домена. В том случае если хотя бы один из указанных серверов имен присутствует в обеих зонах — отправитель считается верифицированным.

Все успешные DNS запросы кэшируются. Общее число DNS запросов на одно соединение как правило не превышает 20.

AutoSWL

Другой белый список реализован AutoSWL (Auto Sender White List) алгоритмом фильтра. Это очень простой алгоритм. Отправитель почтового контакта - пары «отправитель-получатель» считается аутентифицированным (занесенным в «белый список» конкретного получателя), если были зарегистрированы оба: исходящее сообщение (запрос), и входящее сообщение (ответ) этого контакта. Данные об «успешном» контакте сохраняется на время определяемое параметром lifetime конфигурационного файла. Сообщения от таких аутентифицированных отправителей больше не будут задерживаться предыдущим алгоритмом, даже если не произошло успешной верификации отправителя. Таким образом, в процессе работы фильтр обучается не реагировать на активные контакты, т.е. если вы часто обмениваетесь с кем-либо сообщениями, то такие входящие сообщения будут пропускаться фильтром без дополнительной проверки.

Фильтр по умолчанию пропускает почту с локальных и зарезервированных адресов (127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 и.т.п.). Другие адреса, почту с которых необходимо принимать без дополнительных проверок можно указать в конфигурационном файле smc-milter.hosts, представляющему собой статический «белый список» фильтра. Ниже приведен пример содержимого этого файла:

#
# SMC-milter hosts file
#
# Pass through the mail from the indicated IP addresses
# or networks without any checks.
#
# lines preceded by a '#' are comments
#----------------------------------------------------------------------
# Forefront Online Protection for Exchange Online IP Addresses
# http://technet.microsoft.com/en-us/library/hh510075.aspx
65.55.88.0/24      # Forefront Online Protection for Exchange
94.245.120.64/26   # Forefront Online Protection for Exchange
207.46.51.64/26    # Forefront Online Protection for Exchange
207.46.163.0/24    # Forefront Online Protection for Exchange
213.199.154.0/24   # Forefront Online Protection for Exchange
213.199.180.128/26 # Forefront Online Protection for Exchange
216.32.180.0/24    # Forefront Online Protection for Exchange
216.32.181.0/24    # Forefront Online Protection for Exchange

Дополнительная информация

Почтовые заголовки

SMC фильтр помечает входящие сообщения следующим набором привычных и широко-используемых заголовков:

Заголовок Описание
X-Spam-Flag: [YES/NO/WARN/PASS]
X-Spam-Report: Сообщение системы, описывающее причину присвоения того или иного значения заголовка Spam-Flag.
X-Spam-Checker-Version: SMC-milter [Версия программы]
X-Virus-Scanned: Наименование антивирусной программы (если используется)

Например:

X-Spam-Flag: NO
X-Spam-Report: Host 195.206.40.177 is related to lust.icc.ru.
X-Spam-Checker-Version: SMC-milter 2.0
X-Virus-Scanned: ClamAV using SMC-milter