У меня есть почтовый сервер exim, который используется для нескольких веб-сайтов. Он использует разные строки хоста для helo_data для каждого сайта, который он обслуживает. DNS и rDNS для каждой подходящей строки хоста настроены правильно.

Я хочу войти в основной журнал exim, какая строка хоста использовалась для каждого отправленного письма.

Возможно ли это, и если нет, каковы мои варианты, чтобы узнать, какая строка хоста использовалась в HELo для каждой электронной почты?

Спасибо

3 ответа3

1

Если вы можете выбрать данные helo на этапе ACL, вы можете назначить их переменной $acl_m_... ($acl_m_outbound_helo), на которую можно ссылаться в любом месте в течение времени жизни сообщения. Возможно, вы захотите сделать это в ACL DATA, полностью основываясь на отправителе, а не на получателе.

Затем вы можете использовать log_message в том же ACL для записи значения; это войдет в основной журнал вместе с идентификатором сообщения exim для корреляции. Затем в транспортном средстве вы просто ссылаетесь на тот же $acl_m_outbound_helo чтобы использовать его для соединения.

0

Я предлагаю вам взглянуть на механизм событий exim

Пример может быть адаптирован для регистрации сообщения вместо сохранения электронной записи в БД.

0

К сожалению, нет встроенного метода для записи переменной helo_data в файл mainlog.

Вероятно, я бы использовал метод добавления хука где-то в пути сообщения для записи искомых данных в другой файл с некоторой ссылкой для указания на записи в файле основного журнала (скажем, идентификатор сообщения), или я бы настроил отдельный маршрутизатор и транспорт для каждого сайта. Транспорт, используемый для отправки почты, регистрируется в файле mainlog как значение T = my_transport.

Для пользовательской регистрации мне удалось сделать нечто подобное для вставки полученных данных электронной почты в базу данных, используя condition = значение в маршрутизаторе. Вы можете использовать раскрытие строки ${run{<command> <args>}} для достижения этой цели:

condition = ${run{/path/to/interpreter /path/to/custom/logging/script $sender_domain $message_exim_id}{1}{0}}

(Непроверенные)

Этот небольшой фрагмент в маршрутизаторе выполнит скрипт /path/to/custom/logging/script используя интерпретатор /path/to/interpreter (/bin/sh, /usr /bin/perl, что угодно), передав ему имя домена отправитель и идентификатор сообщения exim.

Он довольно тяжелый, поэтому не идеален для серверов с интенсивным использованием, но он может просто работать ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .