我正在尝试将 postfix 设置为 Amazon SES 的中继。SES 只允许从特定(已验证)电子邮件地址发送电子邮件。这部分有效。现在我需要与 PHP 集成。
我需要的是支持多个验证的电子邮件地址,例如[电子邮件保护],[电子邮件保护]我需要 postfix 将标头设置X-Postfix-Sender
为我传递给 mail() 调用的“发件人”标头的值。不幸的是,它设置了。X-Postfix-Sender: rfc822; [email protected]
我正在使用以下方式发送电子邮件:
mail('[email protected]', 'PHP test', 'Test message from PHP at ' . $time, "From: [email protected]");
在日志中我收到来自 SES 的拒绝:“诊断代码:smtp;554 消息被拒绝:电子邮件地址未经验证。”
php.ini 包含sendmail_path = /usr/sbin/sendmail -t
但这似乎没有太大区别。
我如何让 Postfix 将X-Postfix-Sender
标题设置为“发件人”标题的值?
=========================== 答案 ============================
additional_parameters
我可以通过使用PHP 的 mail() 方法选项来做我想做的事情:
mail('[email protected]', 'PHP test', 'Test message from PHP at ' . $time, '', "-f [email protected]");
这会将‘-f’标志和发件人地址传递给 sendmail。
答案1
您可以使用smtp_generic_maps
postfix 主配置文件中的参数 -/etc/postfix/main.cf
将本地域重写为全局有效域。查看以下链接了解详情 -smtp_通用_映射和如何设置。
-将 smtp_generic_maps 条目添加到 /etc/postfix/main.cf
smtp_generic_maps = hash:/etc/postfix/generic
-创建 /etc/postfix/generic 文件,内容如下
[email protected] [email protected]
确保重新启动 postfix:
systemctl restart postfix