Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Почтовый фильтр или Milter = Mail + Filter


Роман Сузи

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

Если для индивидуальной настройки доставки почты в UNIX-системах обычно применяется procmail, то для обработки всей проходящей через сервер почты Milter подходит как нельзя кстати. Для большей эффективности рекомендуется применять версию Sendmail 8.12.

Главными применениями Milter можно считать:

n  отклонение писем со спамом;

n  организация проверки на вирусы;

n  обезвреживание опасных вложений;

n  фильтрация по содержимому;

n  организация нестандартной обработки и сортировки почты.

Еще раз отметим, что Milter дает доступ не только ко входящим письмам, но и к исходящим. Это позволяет предотвращать злоупотребления почтовым сервером со стороны местных пользователей.

Одной из очень полезных особенностей Milter является его большая эффективность по сравнению с другими средствами обработки почты. Во-первых, Milter дает приложению-фильтру доступ к информации о сообщении на очень ранних стадиях его получения Sendmail: с помощью Milter приложение-фильтр получает атрибуты SMTP-команд вместе с Sendmail, что позволяет отклонять сообщения, еще не получив их в полном объеме. Во-вторых, Milter поддерживает многопоточность, что позволяет иметь всего один экземпляр приложения-фильтра, а не запускать приложение для каждого сообщения (как это делает procmail). В-третьих, подключение Milter-приложения к Sendmail можно сделать достаточно безопасным, определив требуемую реакцию Sendmail на тот случай, если приложение-фильтр не отвечает. Наконец, приложение-фильтр может находиться на другой машине, общаясь с почтовым сервером по TCP/IP. Кстати, фильтр может быть не один. Крючки (hooks) к Milter API имеются для многих известных антивирусных и антиспамовых программ.

Есть, конечно, у Milter и минусы. Во-первых, он работает только с Sendmail. Во-вторых, в нем не очень удобно (хотя и возможно) реализовать фильтрацию на основе индивидуальных настроек пользователей, как это имеет место с procmail.

Sendmail и приложение-фильтр общаются через сокет. Это может быть сокет в файловой системе, IP-сокет (или IPv6-сокет). Первый более эффективен, если обработка почты происходит на локальной машине, а второй позволяет вынести фильтрацию почты на другую машину (или машины). Например, один хост может быть целиком задействован для фильтрации спама, другой – проверять сообщения на вирусы, а третий – анализировать соответствие содержимого почтовых сообщений принятой политике (скажем, образовательное учреждение может фильтровать письма сомнительного содержания). На любом этапе Milter может пропустить (ACCEPT), отклонить (REJECT) или выбросить (DROP) обрабатываемое сообщение. Milter также может менять список получателей письма, изменять заголовочную часть и тело. При отклонении письма можно указать его детальную причину.

Sendmail написан на C, и поэтому Milter API ориентирован на C-приложения. Однако пример, который мы рассмотрим ниже, использует Python Milter – обертку Milter API для языка Python. Эта обертка – полноценный объектный интерфейс к обрабатываемому SMTP-соединению. Отметим, что использование интерпретатора скриптового языка существенно не влияет на производительность приложения, так как приложение работает в режиме демона. Зато мы получаем большой выигрыш в выражении логики приложения-фильтра и доступ к богатым стандартным библиотекам Python.

Чтобы использовать приложения-фильтры, нужно скомпилировать Sendmail с поддержкой Milter API. Как это сделать, описано в документации к Sendmail. В частности, необходимо указать в файле devtools/Site/site.config.m4 опцию:

APPENDDEF(“conf_sendmail_ENVDEF”, “-DMILTER”)

Для нашего примера понадобится Python 2.x и Python Milter. Первый можно взять на www.python.org, а второй – на http://www.bmsi.com/python/milter.html. Его необходимо скомпилировать, использовав библиотеки соответствующей версии Sendmail. Подробнее об этом написано в документации к Python Milter. Возможно, потребуется дополнительно установить заголовочные файлы и библиотеки libmilter и smutil – конкретнее об этом сказано на указанной выше www-странице. [Мне даже приходилось переименовывать libsmutil в libsm – прим. автора]. В результате компиляции Python Milter должен получиться файл milter.so, который вместе с mime.py и Milter.py нужно поместить в каталог с другими модулями Python.

Python Milter имеет в своем составе два законченных примера, однако подходящий именно вам фильтр лучше составить самому. Приведенный ниже пример (листинг 1) Milter поможет вам разобраться в Milter API. Конечно, это не законченный продукт, а скорее конструктор, который нужно доработать, добавив требуемую вам логику.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100