Я пытаюсь добавить собственный заголовок ко всем сообщениям, обрабатываемым моим сервером 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
смотреть на этот пример также для получения дополнительных подсказок.