Введение

Milter (слияние слов mail и filter – почтовый фильтр) – расширение для широко используемых почтовых агентов передачи с открытым исходным кодом (MTA) Sendmail и Postfix. Оно позволяет администраторам добавлять почтовые фильтры для фильтрации спама или вирусов в процессе обработки почты. В профессиональной терминологии, "milter" обозначает протокол и API, реализующие данную службу, а "мильтер" – приложение-фильтр, использующее протокол milter для предоставления этой службы.

История

До появления Milter, почтовый фильтр обычно реализовывался как программа, которой MTA передавало сообщение после его полного получения, удалив при этом большую часть информации о конверте. Эта программа могла анализировать заголовок и тело сообщения и принимать решение о принятии сообщения (то есть возвращать статус "успех" в MTA) или отклонении его (то есть возвращать статус "ошибка" в MTA). MTA затем регистрировал успешную доставку или возвращал сообщение об ошибке отправителю, в зависимости от ситуации, а фильтр отвечал за влияние на доставку сообщения – в целевой почтовый ящик в исходном виде, либо с изменениями для удаления нежелательного контента, либо в определенные папки и т. д. MTA, поддерживающая Milter, вместо этого уведомляет подключенные к ней фильтры о каждом этапе доставки сообщения, начиная с первоначального подключения клиента и заканчивая завершением передачи. На каждом этапе SMTP-сессии фильтру предоставляются данные о входящем сообщении, и у него появляется возможность прервать прием сообщения на ранней стадии, если это необходимо. Для очень больших сообщений это может оказать значительное влияние, поскольку решение об отклонении можно принять как можно раньше. Более того, в отличие от предыдущей модели, MTA с поддержкой Milter может подключаться к нескольким фильтрам параллельно, выполняющим конкретные задачи, такие как антивирусная проверка, антиспам, аутентификация сообщений, регулирование трафика и т. д. Наконец, такие фильтры могут выполнять специальные действия с сообщением: добавлять или удалять получателей из конверта, изменять тело сообщения перед доставкой, добавлять, изменять или удалять поля заголовка и т. д. Консорциум Sendmail включает в дистрибутив Sendmail специальную библиотеку, основанную на потоках, которая предоставляет API Milter.

Отправка почты

Milter был впервые официально представлен в Sendmail 8.12.0, выпущенном 8 сентября 2001 года. Milter был доступен в версиях sendmail 8.11.x как код FFR (For Future Release/Beta-версия). С момента своего первого официального выпуска Milter значительно улучшился.

Постфикс

Поддержка Milter была добавлена в Postfix версии 2.3.0, выпущенной 12 июля 2006 года. Многие, но не все, фильтры Milter могут использоваться с Postfix сразу после установки.

Интерфейс

Консорциум Sendmail предоставляет документированный интерфейс прикладного программирования (API), который можно использовать для создания фильтров milter для особых задач. Библиотека, предоставляемая Консорциумом Sendmail, основана на pthread. Однако документация по протоколу, используемому для обмена данными между sendmail и процессами milter, отсутствует. Этот внутренний протокол может изменяться в новых версиях sendmail.