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

Postfix добавляет настраиваемый заголовок со случайным значением

Я пытаюсь добавить собственный заголовок ко всем сообщениям, обрабатываемым моим сервером postfix. Я безуспешно пытался использовать руководство в Интернете.

В моем master.cf я добавил:

-o smtp_header_checks = регулярное выражение: / etc / postfix / test_tag_header

test_tag_header: Добавить X-Mailgun-Tag: testing123

убедился, что я перезапустил postfix

Я сделал несколько тестов для почты Yahoo, у которой есть опция полных заголовков. Заголовки, которые я добавил, не отображались.

Моя цель - добавить настраиваемый заголовок со случайным значением, чтобы позже я мог проанализировать сообщение с помощью api mailgun.org.

X-Mailgun-Tag: случайное значение (аналогично сокращению URL-адресов)


Основываясь на ответе от ank, это то, что у меня есть: main.cf

smtp_recipient_restrictions = check_recipient_access прокси: mysql: /etc/postfix/mailgun_header.mysql

mailgun_header.mysql

user        = vmail
password    = mypass
hosts       = 127.0.0.1
port        = 3306
dbname      = vmail
query       = select CONCAT(prefix, MD5(RAND())) as 'check_recipient_access' from mailgun_tokens where prefixID = 1;

когда я пытаюсь перезапустить postfix, я получаю следующие ошибки:

/ usr / sbin / postconf: предупреждение: /etc/postfix/main.cf: неиспользуемый параметр: smtp_recipient_restrictions = check_recipient_access прокси: mysql: /etc/postfix/mailgun_header.mysql

*

Запрос sql отлично работает через MYSQL и возвращает строку со случайным числом.

Вот решение, которое сработало для меня. Теперь я могу успешно отслеживать каждое отдельное сообщение, отправленное через наши почтовые службы, используя MailGun.org как наше реле.

Обратите внимание, что это простая установка Postfix / Dovecot с использованием сценария установки iRedmail.org для debian / ubuntu. Ваша собственная конфигурация постфикса может отличаться.

Main.cf

### MAILGUN LOGGING
smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/mailgun-header.cf, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient$

/etc/postfix/mailgun-header.cf

#PREPEND CUSTOM HEADER FOR MESSAGES SENT THROUGH MAILGUN.NET RELAY
#MAKE SURE TO USE YOUR OWN DATABSE USER / PASSWORD

user        = vmail
password    = PutYourPasswordHere (in iRedMail tips if you used iRedmail to setup)
hosts       = 127.0.0.1
port        = 3306
dbname      = vmail
query       = Select CONCAT(prefix, '{"custom-msg-id": ','"',MD5(RAND()),'"','}') as 'check_recipient_access' from mailgun_tokens where prefixID = 1;

Требования MySQL:

Вам в значительной степени необходимо создать таблицу с именем mailgun_tokens в вашей базе данных vmail. Если имя вашей базы данных отличается, обязательно учтите это. Таблица простая, всего с двумя столбцами. Один префикс (varchar 100) и один с именем prefixId int (1). Будет только одна запись. Вы можете получить больше удовольствия от настройки нескольких доменов и создать запись для каждого домена или даже пользователя.

Вот базовый код для настройки mysql для продолжения работы с примерами кода выше:

   -- ----------------------------
-- Table structure for `mailgun_tokens`
-- ----------------------------
DROP TABLE IF EXISTS `mailgun_tokens`;
CREATE TABLE `mailgun_tokens` (
  `prefix` varchar(100) DEFAULT NULL,
  `prefixID` int(1) unsigned zerofill NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`prefixID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of mailgun_tokens
-- ----------------------------
INSERT INTO `mailgun_tokens` VALUES ('PREPEND X-Mailgun-Variables: ', '1');

Последний шаг: перезапустите Posftfix (перезапуск службы postfix)

Как только вы все настроите и заработаете, postfix добавит собственный заголовок X-Mailgun-переменные с соответствующей строкой в ​​формате JSON. Если вы настроили mailgun для отправки в свое приложение уведомлений о прочтении сообщений и уведомлений о щелчках по ссылке, Mailgun отправит custom-msg-id в ваше приложение, чтобы вы могли найти электронную почту.

Добавьте к этому регистрацию всех сообщений в вашей БД, и вы можете легко создать приложение, crm, веб-почту, которая отслеживает сообщения, когда они покинули ваш почтовый ящик. Прочтите уведомления по электронной почте.

Вместо того, чтобы возиться с master.cf (я редко это делаю) попробуйте следующее в вашем main.cf

smtp_recipient_restrictions = (...), check_recipient_access <type>:<table>, (...), разрешать

где в таблице есть следующие

ПРЕДВАРИТЕЛЬНЫЙ X-Mailgun-Tag: testing123

смотреть на этот пример также для получения дополнительных подсказок.