Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
S=inet:порт@хост
S=inet6:порт@хост
Здесь путь – путь к UNIX-сокету в локальной файловой системе, остальные – IP-сокеты на некотором хосте.
Опции Т задают таймауты. C – таймаут соединения с фильтром; S – таймаут при передаче информации от Sendmail фильтру; R – таймаут при ожидании ответа фильтра; E – таймаут ожидания окончательного подтверждения от момента передачи конца сообщения фильтру.
В случае использования двух фильтров фрагмент исходного файла конфигурации Sendmail будет выглядеть так:
MAIL_FILTER(`mainfilter', `S=inet:2525@milter.host.ru, T=C:10m;S:30s;R:30s;E:10m')
MAIL_FILTER(`filter2', `S=inet:2626@milter.host.ru, T=C:10m;S:30s;R:30s;E:10m')
define(`confINPUT_MAIL_FILTERS', `mainfilter,filter2')
Информация на фильтры посылается в порядке их описания. Следующий алгоритм взаимодействия Sendmail и Milter приведен в документации к Sendmail:
Для каждого соединения:
Для каждого фильтра:
Вызвать connect()
Вызвать hello()
Для каждого сообщения (последовательно):
Для каждого фильтра:
Вызвать envfrom()
Для каждого получателя:
Для каждого фильтра:
Вызвать envrcpt()
Для каждого фильтра:
Для каждого поля заголовка:
Вызвать header()
Вызвать eoh()
Для каждого фрагмента тела:
Вызвать body()
Вызвать eom()
Для каждого фильтра:
Вызвать close()
Примечание: при обрыве соединения на любой стадии и по инициативе любого агента вызывается abort() и close().
В листинге 2 приведен вариант метода eom(), с помощью которого можно вызывать из Milter произвольные программы для проверки сообщения (например, на спам и вирусы).
Листинг 2
def eom(self):
"""Обработка сообщения: проверка на вирусы с помощью антивируса ClamAV"""
# Закрываем временный файл (если он есть)