在 Postfix 中为所有转发的消息添加 X-header

Mar*_*els 4 smtp postfix sendgrid smtp-headers

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

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

X-SMTPAPI: {"category": "www1"}
Run Code Online (Sandbox Code Playgroud)

Postfix 文档提到在 Postfix 'access' 表中使用 PREPEND 操作。因此,我将以下行添加到/etc/postfix/access

PREPEND X-SMTPAPI: {"category": "www1"}
Run Code Online (Sandbox Code Playgroud)

access用 postmap散列文件。

但是,我不知道如何使用地图。类似以下内容不起作用:

smtp_client_restrictions = check_client_access hash:/etc/postfix/access
Run Code Online (Sandbox Code Playgroud)

我如何让 Postfix 在这个标题前面加上?

Wis*_*000 6

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

此处报告的快速步骤:

它适用于 Ubuntu 系统并且非常适合我。注意在 master.cf 中选择正确的“smtp”行。我使用制表符来缩进该-o行。

另请注意,SendGridX-SMTPAPI在发送电子邮件之前会从电子邮件中删除标题 - 因此您不会在那里找到它,但您会看到该类别出现在 SendGrid 仪表板中。


Jde*_*eBP 2

您似乎拼写错误header_checkssmtp_client_restrictions,这甚至不是错误参数的正确拼写。

这种事情最好用一个简单的垫片来完成sendmail,你的 PHP(或其他)脚本配置为使用垫片,你知道。shim 脚本将是使用catecho命令的简单练习。MTS 这样做确实是错误的地方。