我正在尝试向我的后缀服务器处理的所有消息添加自定义标头。我尝试使用互联网上的指南,但没有任何运气。
在我的 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 shortener)
根据 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 proxy:mysql:/etc/postfix/mailgun_header.mysql
*
sql 查询通过 MYSQL 工作正常并返回带有随机数的行。
这是对我有用的解决方案。我现在能够使用MailGun.org作为中继成功跟踪通过我们的后缀服务发送的每条消息。
请注意,这是使用 iRedmail.org 的 debian /ubuntu 安装脚本简单安装 Postfix / Dovecot。您自己的后缀配置可能不同。
主文件
/etc/postfix/mailgun-header.cf
MySQL要求:
您几乎需要在 vmail 数据库中创建一个名为 mailgun_tokens 的表。如果您的数据库名称不同,请务必考虑到这一点。该表很简单,只有两列。一个前缀 (varchar 100),一个称为 prefixId int(1)。它只会有一个记录。您可以在多域设置中获得更多乐趣,并为每个域甚至用户创建一条记录。
这是让您的 mysql 设置继续上面的代码示例的基本代码:
Last Step: Restart Posftfix(服务postfix重启)
一旦一切都启动并运行,postfix 现在将添加一个 带有适当 JSON 格式字符串的自定义标头X-Mailgun-Variables 。如果您已将 mailgun 配置为发布到您的应用程序以获取消息阅读通知和链接单击通知,那么 Mailgun 也会将custom-msg-id发布到您的应用程序,以便您可以查找电子邮件。
将此与将所有消息记录到您的数据库相结合,您可以轻松创建一个应用程序、crm、webmail,一旦消息离开您的邮箱,它就会跟踪消息。阅读电子邮件通知。
与其乱搞 master.cf(我很少这样做),不如在 main.cf 中尝试以下操作
smtp_recipient_restrictions = (...), check_recipient_access
<type>:<table>
, (...), 允许表中有以下内容
前置 X-Mailgun-标签:testing123
还可以查看此示例以获取更多提示。