Назад | Перейти на главную страницу

Добавлять X-заголовок ко всем ретранслируемым сообщениям в Postfix

У меня есть несколько производственных серверов, на которых установлен стек 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
    

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