Добавление кастомных заголовков для исходящих писем в exim
Nov 6, 2017 10:35 · 292 words · 2 minute read
Иногда в целях отладки или облегчения поиска в логах почтового сервера exim требуется добавить кастомный заголовок (custom header). Давайте разберемся, как это сделать для всех почтовых сообщений, отправляемых с сервера!
Как оказалось, добавить кастомный заголовок для исходящих писем довольно легко. Считаем, что конфигурация почтового сервера находится в одном файле (/etc/exim/exim.conf
). Версия exim
:
exim --version
Exim version 4.84_2 #1 built 09-Oct-2016 12:33:06
Copyright (c) University of Cambridge, 1995 - 2014
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014
Berkeley DB: Berkeley DB 5.3.21: (May 11, 2012)
Support for: crypteq iconv() IPv6 PAM Perl Expand_dlfunc TCPwrappers OpenSSL Content_Scanning DKIM Old_Demime PRDR OCSP
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch ldap ldapdn ldapm nis nis0 nisplus passwd sqlite
Authenticators: cram_md5 cyrus_sasl dovecot gsasl plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /etc/exim/exim.conf
Добавлять кастомный заголовок будем с помощью acl
. Для начала в секции MAIN CONFIGURATION SETTINGS
находим следующие строки:
...
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
# You should not change those settings until you understand how ACLs work.
...
и добавляем к ним еще одну:
...
acl_not_smtp = acl_check_data
Здесь acl_not_smtp
— ACL для не-SMTP сообщений (генерируемых локально с точки зрения exim
), подробнее здесь.
Далее уже в секции ACL CONFIGURATION
находим блок acl_check_data
и в самом его конце (перед accept
) добавляем такую строку:
warn logwrite = DEBUG MESSAGE Subject: $h_subject: Custom-User-Email: $h_Custom-User-Email: Campaign-Id: $h_Campaign-Id:
Этим самым для всех исходящих писем будет срабатывать предупреждение (warn
), которому мы применяем модификатор logwrite
(писать в лог), а далее уточняем, что именно писать в лог: фразу DEBUG MESSAGE
и три дополнительных заголовка, необходимых мне для отладки ($h_subject
, $h_Custom-User-Email
и $h_Campaign-Id
).