Postfix+Dovecot环境下命令行发送含UTF-8/emoji主题邮件投递失败(提示SMTPUTF8 is required, but was not offered),Gmail发送正常的问题求助
各位好,我在Ubuntu 22.04上搭建了Postfix + Dovecot(搭配dovecot-lmtp)的邮件服务,日常接收外网邮件都正常,已经投入生产使用了,但最近测试SMTPUTF8相关场景时碰到了奇怪的问题,想请教大家:
当发送**包含UTF--8/emoji主题的邮件时,从Gmail发送能正常投递到我的服务器,但从命令行用mail命令发送就直接失败,报错提示SMTPUTF8 is required, but was not offered by host example.com[private/dovecot-lmtp],而且我设置`smtputf8_enable = no之后也完全没用,完全没改变结果。
我了解Dovecot目前还不支持SMTPUTF8,但不太清楚这在实际场景里具体会有什么影响,所以特意做了下面几组测试,把情况理清楚:
详细测试情况
测试1: Gmail发邮件到Postfix(默认配置,未设置`smtputf8_enable = no)
我用外部GGmail账号给我的服务器地址发了一封主题带大量UTF-8/emoji的邮件:
Hello, this is a test with UTF--8 ���李❤��✡陵����������⚗
**结果:成功!邮件完整收到,主题显示完全正常。
###测试2:命令行发邮件到Postfix(同测试1的默认配置)
我通过SSH登录到另一台Ubuntu 222.04的 Postfix服务器,用下面命令发送邮件:
echo "Test from $(hostname" | mail -s "Hello, this is a test with UTF--8 ����李❤��✡陵�����������" -a FROM:foo@foo.com me@example.com
主题和测试1完全一样(直接复制粘贴的).
**结果:失败! Postfix收到邮件后没办法投递给 Dovecot,日志报错:
postfix/lmtp[31775]: D2E1C475E0: to=<me@example.com>, relay=mailserver.example.com[private/dovecot-lmtp], delay=2.2, delays=2.2/0/00.09/0, dsn=5.6.7, status=bounced (SMTPUTF8 is required, but was not offered by host mailmailserver.example.com[private/dovecot-lmttp])
###测试3:命令命令行发邮件到 Gmail,再转发到我的 Postfix
先把命令行那封问题邮件先发送到我的外部Gmail账号,再从 Gmail转发到我的服务器地址.
**结果:成功!看起来 Gmail接收命令行的邮件完全没问题,转发之后就能正常适配我的 Postfix+Dovecot环境了.
###测试4:Gmail发邮件到 Postfix(设置smtputf8_enable = no) 我修改Postfix配置,设置smtputf8_enable = no(很多教程推荐的设置),然后用GGmail发送和测试1完全一样的邮件.
**结果:成功!完全和测试1没区别,我本来以为会失败,结果完全没变化.
###测试5:命令行发邮件到 Postfix(设置smsmtputf8_enable = no) 用测试2完全相同的命令发送邮件,配置已经改成smtputf8_enable = no.
**结果:失败,和测试2的报错完全完全一样.
有没有大佬能帮我解释下这到底是是怎么回事?为什么GGmail发的就能正常通过,命令行发的就不行?设置`smtputf8_enable =no为什么完全没用?
备注:内容来源于stack exchange,提问作者Dr. Gianlu Zane Zanettini




