У меня есть несколько производственных серверов, на которых установлен стек LAMP. У каждого из них есть локальный сервер Postfix, который перехватывает любую почту из системы и от PHP и ретранслирует ее через смарт-хост ( SendGrid SMTP-сервис).
Я хотел бы добавить собственный заголовок к каждому исходящему сообщению, отправляемому на смарт-хост. Это позволяет мне фильтровать статистику по серверу в 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 добавлять этот заголовок?
Это отвечает на ваш точный вопрос: 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
РЕДАКТИРОВАТЬ: К сожалению, этот метод добавляет заголовок в все электронные письма (входящие и исходящие). Я все еще ищу метод, который добавляет заголовок только в исходящий электронные письма.