Postfix 添加具有随机值的自定义标头

Postfix 添加具有随机值的自定义标头

我正在尝试为 Postfix 服务器处理的所有消息添加自定义标头。我尝试使用互联网上的指南,但没有成功。

在我的 master.cf 中我添加了:

-o smtp_header_checks=regexp:/etc/postfix/test_tag_header

test_tag_header:添加 X-Mailgun-Tag:testing123

确保我重新启动了 postfix

我对具有完整邮件头选项的雅虎邮箱进行了一些测试。我添加的邮件头没有显示出来。

我的目标是添加一个带有随机值的自定义标题,以便我稍后可以使用 mailgun.org 的 api 解析消息。

X-Mailgun-Tag:随机值(类似于 url 缩短器)


根据 ank 的回答,以下是我目前得到的信息: 主配置文件

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 proxy:mysql:/etc/postfix/mailgun_header.mysql

*

SQL 查询通过 MYSQL 正常运行并返回一个带有随机数的行。

答案1

这是对我有用的解决方案。我现在能够使用以下方法成功跟踪通过我们的 Postfix 服务发送的每条消息:MailGun.org作为我们的接力。

请注意,这是使用 iRedmail.org 安装脚本为 debian /ubuntu 安装 Postfix / Dovecot 的简单安装。您自己的 postfix 配置可能有所不同。

主配置文件

### 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 要求:

您几乎需要在 vmail 数据库中创建一个名为 mailgun_tokens 的表。如果您的数据库名称不同,请确保考虑到这一点。该表很简单,只有两列。一个前缀 (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 将发布自定义信息 ID到您的应用程序中,以便您可以查找电子邮件。

将此与将所有消息记录到数据库相结合,您可以轻松创建一个应用程序、客户关系管理、网络邮件,用于跟踪离开邮箱的消息。阅读电子邮件通知。

答案2

不要乱搞 master.cf(我很少这样做),而是在 main.cf 中尝试执行以下操作

smtp_recipient_restrictions =(...),check_recipient_access <type>:<table>,(...),允许

表中有以下内容

添加 X-Mailgun-Tag:testing123

看着这个例子还可获得更多提示。

相关内容