Postfix 和 Amazon SES - 转发电子邮件 - “Delivered-To”标头的问题

Postfix 和 Amazon SES - 转发电子邮件 - “Delivered-To”标头的问题

我正在运行 Postfix,使用 Amazon SES 作为邮件传输。邮件发送正常,但是当我收到邮件并尝试使用虚拟别名转发时,邮件日志中出现此错误:

 (Command died with status 1: "/ses/ses-send-email.pl". Command output: Illegal header 'Delivered-To'. )

我发现 SES 不支持“Delivered-To”标头,那么我该如何转发电子邮件?我已启用软反弹功能,如果这有任何意义的话,也许关闭它会有用?

答案1

我知道这个问题已经有一年了,但是当 Postfix 可以使用 SMTP 很好地通过 SES 处理中继时,为什么还要使用脚本呢?

您可以设置relayhost是否仅发送来自经过验证的发件人或经过验证的域的电子邮件,或者您可以使用sender_dependent_relayhost_maps仅中继那些经过验证的域和发件人。

无论哪种情况,您都需要先设置 SMTP AUTH 的 SASL 密码。我使用的密码/etc/postfix/sasl_password格式如下:

email-smtp.us-east-1.amazonaws.com    SES-USER:SES-USER-PASSWORD

更新以使用来自 AWS SES 控制台的 SMTP 主机和适当的 SES SMTP 用户凭证。接下来,您需要/etc/postfix/main.cf通过添加以下内容来配置 SMTP SASL 客户端设置:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_security_options=noanonymous
smtp_sasl_mechanism_filter = login

现在运行postmap /etc/postfix/sasl_password,一切就绪。现在您必须决定是否中继所有内容或仅中继已验证的发件人/域。如果中继所有内容,则只需将以下内容添加到您的main.cf

relayhost = email-smtp.us-east-1.amazonaws.com

另一方面,如果您只想发送已验证的发件人/域,则请将以下内容添加到您的main.cf

sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps

然后/etc/postfix/relayhost_maps按照以下格式添加您验证的发件人/域:

[email protected]    email-smtp.us-east-1.amazonaws.com
@example.net            email-smtp.us-east-1.amazonaws.com

运行该文件postmap /etc/postfix/relayhost_maps并执行postfix reload,您应该通过 SES 发送电子邮件。

答案2

您可以指定prepend_delivered_header = file在转发时禁用插入“Delivered-To”标头。请参阅文档了解详情。

答案3

答案4

我在 Postfix 中使用 header_checks 和 REPLACE 操作,如下所示:

/^(Delivered-To:.*)$/ REPLACE X-$1

相关内容