Добавлять X-заголовок ко всем ретранслируемым сообщениям в Postfix
У меня есть несколько производственных серверов со стеком LAMP. У каждого из них есть локальный сервер Postfix, который перехватывает любую почту из системы и из PHP и ретранслирует ее через смарт-хост (SMTP-сервис SendGrid).
Я хотел бы добавить собственный заголовок к каждому исходящему сообщению, отправляемому на смарт-хост. Это позволяет мне фильтровать статистику по каждому серверу в SendGrid. Что-то вроде:
X-SMTPAPI: {"category": "www1"}
Документы Postfix упоминают об использовании действия PREPEND в таблице доступа Postfix. Итак, я добавил следующую строку /etc/postfix/access
:
PREPEND X-SMTPAPI: {"category": "www1"}
и хешировал access
файл с postmap.
Тем не менее, я понятия не имею, как использовать карту. Что-то вроде следующего не работает:
smtp_client_restrictions = check_client_access hash:/etc/postfix/access
Как сделать так, чтобы Postfix добавлял этот заголовок?
3 ответа
Это ответ на ваш точный вопрос: https://web.archive.org/web/20150706131729/http://hoursofop.tumblr.com/post/17760274650
Быстрые шаги сообщили здесь:
создайте файл /etc/postfix/sendgrid_headers и добавьте в него следующую строку:
/^From:/ PREPEND X-SMTPAPI: {“category” : “Category Name”}
обновите ваш файл master.cf следующими строками:
smtp unix - - n - - smtp -o smtp_header_checks=regexp:/etc/postfix/sendgrid_header
Это относится к системе Ubuntu и отлично сработало для меня. Будьте осторожны, чтобы выбрать правильную строку "smtp" в master.cf. Я использовал вкладку для отступа строки -o.
Также обратите внимание, что SendGrid удаляет заголовок X-SMTPAPI из электронного письма до его отправки - так что вы не найдете его там, но увидите, что категория отображается на панели мониторинга SendGrid.
Вы, кажется, неправильно написали header_checks
какsmtp_client_restrictions
, который даже не является правильным написанием неправильного параметра. ☺
Такого рода вещи гораздо лучше сделать с помощью простой прокладки вокругsendmail
Вы знаете , что ваши PHP (или любые другие) скрипты настроены на использование. Скрипт-шим будет простым упражнением в использовании cat
а также echo
команды. МТС - действительно неправильное место, чтобы делать это.
У меня была похожая проблема со Sparkpost: мне нужно было добавить их пользовательский заголовок, чтобы установить некоторые параметры доставки.
Эта проблема (добавление настраиваемого заголовка ко всем электронным письмам) имеет много разных решений.
Мое решение заключается в использовании Postfix header_checks и добавлении пользовательского заголовка к заголовку "From".
Создайте новый файл с именем /etc/postfix/my_custom_header:
/^From:/i X-MSYS-API: { "options" : {"transactional": true} }
Отредактируйте /etc/postfix/main.cf (добавляя внизу):
# Add custom Sparkpost X-MSYS-API header to all mails header_checks = regexp:/etc/postfix/my_custom_header
перезагрузите конфигурацию Postfix (эта команда предназначена для Debian Wheezy и может отличаться в вашей ОС)
service postfix reload
РЕДАКТИРОВАТЬ: К сожалению, этот метод добавляет заголовок для всех писем (входящих и исходящих). Я все еще ищу метод, который добавляет заголовок только к исходящим электронным письмам.