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 在这个标题前面加上?
这回答了您的确切问题:https : //web.archive.org/web/20150706131729/http : //hoursofop.tumblr.com/post/17760274650
此处报告的快速步骤:
创建一个文件 /etc/postfix/sendgrid_headers 并将此行添加到其中:
/^From:/ PREPEND X-SMTPAPI: {“category” : “Category Name”}
Run Code Online (Sandbox Code Playgroud)使用以下几行更新您的 master.cf 文件:
smtp unix - - n - - smtp -o smtp_header_checks=regexp:/etc/postfix/sendgrid_header
Run Code Online (Sandbox Code Playgroud)它适用于 Ubuntu 系统并且非常适合我。注意在 master.cf 中选择正确的“smtp”行。我使用制表符来缩进该-o行。
另请注意,SendGridX-SMTPAPI在发送电子邮件之前会从电子邮件中删除标题 - 因此您不会在那里找到它,但您会看到该类别出现在 SendGrid 仪表板中。
您似乎拼写错误header_checks为smtp_client_restrictions,这甚至不是错误参数的正确拼写。☺
这种事情最好用一个简单的垫片来完成sendmail,你的 PHP(或其他)脚本配置为使用垫片,你知道。shim 脚本将是使用cat和echo命令的简单练习。MTS 这样做确实是错误的地方。
| 归档时间: |
|
| 查看次数: |
7788 次 |
| 最近记录: |