客观的
我正在尝试配置 CentOS 7 系统,以便所有发送到本地系统帐户的邮件都被重定向到备用电子邮件地址。例如,如果邮件发送到root
我希望它被重定向到[email protected]
.
我有一个使用后缀、通用映射和别名的主要工作配置。如果我使用的完整配置有帮助,请询问,我将修改问题以包含它。
如果有更好的方法来实现我的目标,请告诉我。我宁愿坚持使用 postfix,但这只是因为它是 CentOS 上的默认 MTA。
问题
我正在尝试将 postfix 配置为智能主机,以便我可以通过 ZOHO 帐户中继邮件。但是,ZOHO对发件人地址的格式非常挑剔。
当我尝试使用如下所示的发件人地址发送邮件时,它可以工作:
[email protected]
但是,当我尝试使用如下所示的发件人地址发送邮件时,它会失败:
[email protected] (Ryan)
例子
下面是使用完全相同的后缀配置发送的 4 个示例。
允许
我使用这个命令:
mail -r "[email protected]" -s "Testing." root <<< "Test to root."
...并在其中查看maillog
(我已将消息剥离并重新格式化以使其更具可读性):
CD9FA29D20: from=<[email protected]>
CD9FA29D20: to=<[email protected]>,
orig_to=<root>,
relay=smtp.zoho.com[74.201.154.90]:587,
delay=2.4,
delays=0/0.02/1.7/0.66, dsn=2.0.0,
status=sent (250 Message received)
允许
我使用这个命令:
mail -r "Ryan <[email protected]>" -s "Testing." root <<< "Test to root."
...并在其中查看maillog
(我已将消息剥离并重新格式化以使其更具可读性):
936C929D20: from=<[email protected]>
936C929D20: to=<[email protected]>,
orig_to=<root>,
relay=smtp.zoho.com[74.201.154.90]:587,
delay=2.3,
delays=0/0.03/1.6/0.7,
dsn=2.0.0,
status=sent (250 Message received)
中继被拒绝
我使用这个命令:
mail -r "[email protected] (Ryan)" -s "Testing." root <<< "Test to root."
...并在其中查看maillog
(我已将消息剥离并重新格式化以使其更具可读性):
D57C529D20: from=<[email protected]>
D57C529D20: to=<[email protected]>,
orig_to=<root>,
relay=smtp.zoho.com[74.201.154.90]:587,
delay=2,
delays=0.01/0/1.4/0.64,
dsn=5.0.0,
status=bounced (host smtp.zoho.com[74.201.154.90] said:
553 Relaying disallowed as [email protected] (Ryan) (in reply to end of DATA command))
中继被拒绝
我使用这个命令:
mail -s "Testing." root <<< "Test to root."
...并在其中查看maillog
(我已将消息剥离并重新格式化以使其更具可读性):
9CFE629D20: from=<[email protected]>
9CFE629D20: to=<[email protected]>,
orig_to=<root>,
relay=smtp.zoho.com[74.201.154.90]:587,
delay=2,
delays=0/0.02/1.4/0.6,
dsn=5.0.0,
status=bounced (host smtp.zoho.com[74.201.154.90] said:
553 Relaying disallowed as [email protected] (Ryan) (in reply to end of DATA command))
问题
这是我遇到问题的最后一个示例,因为默认情况下未明确包含地址时是以 ZOHO 将拒绝的方式写入地址。
改写发件人地址时是否可以去掉后缀或改写人名?这里有一个类似的问题,但它没有完成我想要的。我不想依靠更改用户帐户设置来确保我的邮件不会被退回。
邮件服务器要求有效的电子邮件地址并拒绝无效的电子邮件地址是相当普遍的。
不是有效的电子邮件地址。维基百科条目有一些有用的指针,以及对相关 RFC 的引用。
在实践中,您可以使用裸电子邮件地址:
或任何显示名称后跟包含以下内容的邮箱<>:
解决这个问题的关键是了解后缀
cleanup
进程如何处理丢失的标头信息。从清理手册页:一个旧的邮件列表帖子提示了插入
From
标题的格式:由于它是需要更改或重新格式化的标头信息,因此使用后缀
header_checks
似乎是显而易见的解决方案。但是,它不起作用。阅读header_checks 手册页,该部分还有另一个提示BUGS
。还有另一个邮件列表线程与其他人试图解决相同的问题,他们最终使用
smtp_header_checks
. 的文档不多smtp_header_checks
,但是,由于处理是在通过 SMTP 传递邮件时应用的,它可以用来重写From
由cleanup
.这是一个
/etc/postfix/smtp_header_checks
配置示例,它将每条传出消息From
的(标头)地址更改为:LOCALHOST System <[email protected]>
请注意,我不是正则表达式专家,因此您可能想测试自己的正则表达式,而不是依赖上面的那个。
添加后
smtp_header_checks
,必须将以下配置选项添加到/etc/postfix/main.cf
:然后重新加载后缀配置(假设
systemd
)并发送测试消息: