Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Milter (слияние слов mail и filter – почтовый фильтр) – расширение для широко используемых почтовых агентов передачи с открытым исходным кодом (MTA) Sendmail и Postfix. Оно позволяет администраторам добавлять почтовые фильтры для фильтрации спама или вирусов в процессе обработки почты. В профессиональной терминологии, "milter" обозначает протокол и API, реализующие данную службу, а "мильтер" – приложение-фильтр, использующее протокол milter для предоставления этой службы.
Milter (portmanteau for mail filter) is an extension to the widely used open source mail transfer agents (MTA) Sendmail and Postfix. It allows administrators to add mail filters for filtering spam or viruses in the mail processing chain. In the language of the art, "milter" refers to the protocol and API implementing the service, while "a milter" has come to refer to a filter application that uses milter to provide service.
История
До появления Milter, почтовый фильтр обычно реализовывался как программа, которой MTA передавало сообщение после его полного получения, удалив при этом большую часть информации о конверте. Эта программа могла анализировать заголовок и тело сообщения и принимать решение о принятии сообщения (то есть возвращать статус "успех" в MTA) или отклонении его (то есть возвращать статус "ошибка" в MTA). MTA затем регистрировал успешную доставку или возвращал сообщение об ошибке отправителю, в зависимости от ситуации, а фильтр отвечал за влияние на доставку сообщения – в целевой почтовый ящик в исходном виде, либо с изменениями для удаления нежелательного контента, либо в определенные папки и т. д. MTA, поддерживающая Milter, вместо этого уведомляет подключенные к ней фильтры о каждом этапе доставки сообщения, начиная с первоначального подключения клиента и заканчивая завершением передачи. На каждом этапе SMTP-сессии фильтру предоставляются данные о входящем сообщении, и у него появляется возможность прервать прием сообщения на ранней стадии, если это необходимо. Для очень больших сообщений это может оказать значительное влияние, поскольку решение об отклонении можно принять как можно раньше. Более того, в отличие от предыдущей модели, MTA с поддержкой Milter может подключаться к нескольким фильтрам параллельно, выполняющим конкретные задачи, такие как антивирусная проверка, антиспам, аутентификация сообщений, регулирование трафика и т. д. Наконец, такие фильтры могут выполнять специальные действия с сообщением: добавлять или удалять получателей из конверта, изменять тело сообщения перед доставкой, добавлять, изменять или удалять поля заголовка и т. д. Консорциум Sendmail включает в дистрибутив Sendmail специальную библиотеку, основанную на потоках, которая предоставляет API Milter.
Prior to the advent of milter, an email filter was generally implemented as a program to which an MTA would hand the message once it has completely arrived, with most of the message's envelope information removed. That program could then analyze the header and body of the message and make a decision to accept the message (i. e. return a "success" status to the MTA) or reject it (i. e. return a "failed" status to the MTA). The MTA would then log a successful delivery or return a failure message to the sender as appropriate, and the filter would be responsible for affecting the delivery of the message (to the intended inbox(es) as is, or modified to remove unwanted content, or to specific folder(s), etc.). An MTA that is milter capable instead notifies filters to which it is connected about each phase of the delivery of a message, from initial client connection through completion of transmission. At each phase of the SMTP session, the filter is given data about the arriving message and then has an opportunity to terminate acceptance of the message early when appropriate. For very large messages, this can have an enormous impact when a decision to reject can be made as early as possible. Moreover, unlike the former model, a milter capable MTA can connect to multiple filters in parallel that serve specific purposes such as anti virus, anti spam, message authentication, flow regulation, etc. Finally, such filters can take special action on the message: add or remove recipients in the envelope; alter the body prior to delivery; add, change or remove header fields in the message, etc. The Sendmail Consortium includes a special thread based library in the sendmail distribution that provides the milter API.
Отправка почты
Milter был впервые официально представлен в Sendmail 8.12.0, выпущенном 8 сентября 2001 года. Milter был доступен в версиях sendmail 8.11.x как код FFR (For Future Release/Beta-версия). С момента своего первого официального выпуска Milter значительно улучшился.
Milter was first officially introduced to Sendmail 8.12.0 released on September 8, 2001. Milter was available in sendmail 8.11. x versions as an FFR (For Future Release/Beta code). Milter has undergone substantial improvements since its first official release.
Постфикс
Поддержка Milter была добавлена в Postfix версии 2.3.0, выпущенной 12 июля 2006 года. Многие, но не все, фильтры Milter могут использоваться с Postfix сразу после установки.
Milter support was added to Postfix 2.3.0 released July 12, 2006. Many, but not all, milters can be used with Postfix "out of the box".
Интерфейс
Консорциум Sendmail предоставляет документированный интерфейс прикладного программирования (API), который можно использовать для создания фильтров milter для особых задач. Библиотека, предоставляемая Консорциумом Sendmail, основана на pthread. Однако документация по протоколу, используемому для обмена данными между sendmail и процессами milter, отсутствует. Этот внутренний протокол может изменяться в новых версиях sendmail.
The Sendmail Consortium provides a documented Application Programming Interface that can be used to create milters for special needs. The library provided by The Sendmail Consortium is pthread based. However, documentation of the protocol used for communication between sendmail and milter processes is not provided. This internal protocol is subject to changes in new sendmail versions.