Добавлять 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
    

РЕДАКТИРОВАТЬ: К сожалению, этот метод добавляет заголовок для всех писем (входящих и исходящих). Я все еще ищу метод, который добавляет заголовок только к исходящим электронным письмам.

Другие вопросы по тегам