WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Перевод выполнен Алексеем Паутовым в рамках
некоммерческого проекта RussianLDP
(http://www.rldp.ru/). Именно на этом сайте
и надлежит искать новые версии, если таковые будут.
Механизм событий в Exim может использоваться, чтобы прервать обработку в
ряде ситуаций. Это было первоначально изобретено как способ сделать
настроенные действия журналирования (например, обращения к базе данных), но
может также использоваться, чтобы изменить некоторые действия обработки. Большинство установок никогда не должно будет использовать события.
Поддержку можно выключить при компиляции пакета, определив DISABLE_EVENT=yes
в Local/Makefile. Есть два главных класса событий: основной (main) и транспорт (transport).
Параметр основной конфигурации event_action управляет событиями
приема, опция транспортов event_action управляет событиями доставки.
Обе опции представляют собой строки, которые раскрываются, когда событие
происходит. Например так:
У событий есть имена, которые соответствуют точке в процессе, в которой
они сработают. Имя помещено в переменную $event_name. Текущий список событий:
Новые типы событий могут быть добавлены в будущем. Имя события это список, разделенный двоеточиями, определяющий тип случая в
дереве возможностей. Это может использоваться в качестве списка или
соответствовать только чему-то одному. В имени не должно быть пробелов. Второй столбец в таблице выше описывает, когда сработает событие: до или
после связанного с ним действия. Срабатывающие до могут влиять на связанное с
ними действие (об этом ниже). Дополнительная переменная, $event_data, заполнена информацией, меняющейся
в зависимости от типа события:
События :defer заполняют одну дополнительную переменную:
$event_defer_errno. Для сложных операций в event_action может использоваться раскрытие
ACL, однако, Exim использует много контекстов в течение его обработки,
поэтому надо учитывать следующее: Использование раскрытия ACL с модификатором logwrite может быть полезным
способом записи в основной журнал. Раскрытие опции event_action должно обычно возвращать пустую строку. Если
оно возвращает что-либо еще, следующее будет вызвано:
Никакого другого использования строки результата не сделано. Для события tcp:connect, если соединение делается через прокси, переменные
address и port будут адресом и портом прокси-сервера, а не целевой системы.
Для события tls:cert, если используется GnuTLS, это будет вызвано только
для элемента цепочки, полученного в соединении. Для OpenSSL это вызовется для
каждого элемента цепочки, включая загруженные локально.
56. События (Events)
event_action = ${if eq {msg:delivery}{$event_name} \
{${lookup pgsql {SELECT * FROM record_Delivery( \
'${quote_pgsql:$sender_address_domain}',\
'${quote_pgsql:${lc:$sender_address_local_part}}', \
'${quote_pgsql:$domain}', \
'${quote_pgsql:${lc:$local_part}}', \
'${quote_pgsql:$host_address}', \
'${quote_pgsql:${lc:$host}}', \
'${quote_pgsql:$message_exim_id}')}} \
} {}}
Имя события Происходит Класс события
Реакция на msg:complete после main сообщение msg:delivery после transport получателя
msg:rcpt:host:defer после transport
получателя или хост msg:rcpt:defer после transport получателя
msg:host:defer после transport попытку
msg:fail:delivery после main получателя
msg:fail:internal после main получателя
tcp:connect перед transport соединение
tcp:close после transport соединение
tls:cert перед оба сертификат в цепочке
проверки smtp:connect после transport соединение
Тип события Что будет в $event_data msg:delivery Сообщение подтверждения smtp msg:rcpt:host:defer Строка ошибки msg:rcpt:defer Строка ошибки msg:host:defer Строка ошибки tls:cert глубина цепочки проверки smtp:connect smtp banner Тип события Значение msg:delivery игнорируется msg:host:defer игнорируется msg:fail:delivery игнорируется tcp:connect нет соединения tcp:close игнорируется tls:cert ошибка верификации smtp:connect соединение закрыто
Найди своих коллег! |