将Postfix中的所有中继消息添加到X-header

我有几个生产服务器运行LAMP堆栈。 他们每个都有一个本地的Postfix服务器,从系统和PHP中捕获任何邮件,并通过智能主机( SendGrid SMTP服务)中继它。

我想添加一个自定义标题发送到智能主机的每个传出消息。 这使我能够过滤SendGrid中的每个服务器的统计信息。 就像是:

X-SMTPAPI: {"category": "www1"} 

Postfix文档提到在Postfix的“访问”表中使用PREPEND操作。 所以,我添加了以下行到/etc/postfix/access

 PREPEND X-SMTPAPI: {"category": "www1"} 

并使用postmap散列access文件。

但是,我不知道如何使用地图。 像下面的东西不起作用:

 smtp_client_restrictions = check_client_access hash:/etc/postfix/access 

我如何让Postfix预先添加这个头文件?

这回答你确切的问题: https : //web.archive.org/web/20150706131729/http : //hoursofop.tumblr.com/post/17760274650

这里报告的快速步骤:

  • 创build一个文件/ etc / postfix / sendgrid_headers并添加以下行:

     /^From:/ PREPEND X-SMTPAPI: {“category” : “Category Name”} 
  • 使用以下几行更新您的master.cf文件:

     smtp unix - - n - - smtp -o smtp_header_checks=regexp:/etc/postfix/sendgrid_header 

它适用于Ubuntu系统,并为我完美工作。 请小心在master.cf中select正确的“smtp”行。 我用一个选项卡缩进-o线。

另外请注意,SendGrid会在发送之前从电子邮件中删除X-SMTPAPI标头 – 所以您不会在那里find它,但是您会看到类别出现在SendGrid仪表板中。

你似乎smtp_client_restrictions header_checks作为smtp_client_restrictions ,这是甚至不正确的拼写错误的参数。 ☺

sendmail一个简单的shim来做这样的事情,你的PHP(或其他)脚本被configuration使用 ,你知道的。 填充脚本将是使用catecho命令的简单练习。 多边贸易体制是这样做的错误的地方。

我有一个与Sparkpost类似的问题:我需要添加自定义标题,以设置一些交付选项。

这个问题(为所有电子邮件添加自定义标题)有许多不同的解决scheme。

我的解决scheme是使用Postfix header_checks,并将自定义标题添加到“From”标题。

  • 创build一个名为/ etc / postfix / my_custom_header的新文件:

     /^From:/i X-MSYS-API: { "options" : {"transactional": true} } 
  • 编辑/etc/postfix/main.cf(追加到底部):

     # Add custom Sparkpost X-MSYS-API header to all mails header_checks = regexp:/etc/postfix/my_custom_header 
  • 重新加载Postfixconfiguration(这个命令是针对Debian Wheezy的,在您的操作系统上可能不同)

     service postfix reload 

编辑:不幸的是,这种方法将标题添加到所有电子邮件(传入和传出)。 我仍然在寻找一种只将标题添加到出站电子邮件的方法。