Postfix добавить пользовательский заголовок со случайным значением
Я пытаюсь добавить пользовательский заголовок ко всем сообщениям, обрабатываемым моим постфиксным сервером. Я попытался использовать руководство в Интернете без какой-либо удачи.
В моем master.cf я добавил:
-o smtp_header_checks = regexp: / etc / postfix / test_tag_header
test_tag_header: Prepend X-Mailgun-Tag: testing123
убедился, что я перезапустил постфикс
Я сделал несколько тестов для почты Yahoo, у которой есть опция полного заголовка. Добавленные мной заголовки не отображаются.
Моя цель состоит в том, чтобы добавить пользовательский заголовок со случайным значением, чтобы я мог позже проанализировать сообщение, используя api mailgun.org.
X-Mailgun-Tag: randomvalue (аналогичен сокращающему URL)
Основываясь на ответе от ank, это то, что я имею до сих пор: main.cf
smtp_recipient_restrictions = check_recipient_access proxy: 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;
когда я пытаюсь перезапустить постфикс, я получаю следующие ошибки:
/ usr / sbin / postconf: предупреждение: /etc/postfix/main.cf: неиспользуемый параметр: smtp_recipient_restrictions = check_recipient_access proxy: mysql: /etc/postfix/mailgun_header.mysql
*
SQL-запрос прекрасно работает через MYSQL и возвращает строку со случайным числом.
2 ответа
Вот решение, которое сработало для меня. Теперь я могу успешно отслеживать каждое отдельное сообщение, отправленное через наш постфикс, используя 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 теперь добавит пользовательский заголовок X-Mailgun-Variables с соответствующей строкой в формате JSON. Если вы настроили mailgun для публикации в своем приложении уведомлений о прочтении сообщений и связывания уведомлений о щелчках, Mailgun также опубликует в своем приложении custom-msg-id, чтобы вы могли искать электронную почту.
Соедините это с регистрацией всех сообщений в вашей БД, и вы можете легко создать приложение, crm, веб-почту, которое будет отслеживать сообщения после того, как они покинут ваш почтовый ящик. Читайте уведомления по электронной почте.
Вместо того, чтобы возиться с master.cf (я редко так делаю), попробуйте следующее в вашем main.cf
smtp_recipient_restrictions = (...), check_recipient_access <type>:<table>
, (...), разрешать
где в таблице есть следующее
PREPEND X-Mailgun-Tag: тестирование123
Посмотрите на этот пример также для получения дополнительных подсказок.