背景
自从这个拥有 24 年历史的网站成立以来,我一直担任管理员,该网站托管着许多虚拟域等,从 90 年代末开始,我们一直在努力实现的一项重要功能是允许 IMAP 客户端连接到我们的邮件服务器系统以进行读取和发送。一项关键的启用功能是pop-before-smtp
Postfix 中的选项。
随着 2008 年的金融危机,IMAP 发送的需求逐渐消失,但是这种需求现在又出现了,因此,作为管理员,我着手配置现代 Postfix 和 Dovecot,当然是在现代 Fedora Server(我们长期选择的发行版)上完成这项工作。
配置 IMAP(IMAPS 或 POP3)读取很容易,但pop-before-smtp
既没有被拒绝也没有被遵守。嗯...
配置远程发送不太顺利!
麻烦
作为一个有着丰富经验的人,我做了所有常见的事情来寻求帮助,尽管我并没有把所有事情都做得完美。
在解决这个尚未解决的问题的过程中,我发现这些版本的 Postfix 和 Dovecot 并不像宣传的那样好用。具体来说,我们正在运行:
- Linux Fedora 服务器 5.7.16-200.fc32.x86_64
- postfix-3.5.4-2.fc32.x86_64
- dovecot-2.3.10.1-1.fc32.x86_64
有了这个版本,Dovecot 和 Postfix 的设置似乎不遵守彼此共享的通信设置,即:
private/auth
相反,事情进展得更好,但仍然没有得到解决,具体如下:
/var/spool/postfix/private/auth
当我说两者时,我指的是smtpd_sasl_path
Postfix 中的条目,当然main.cf
也包括 Dovecot/etc/dovecot/dovecot.d/10-master.conf
文件的条目。unix_listener
这些条目指向 Dovecot 创建的套接字,因此应该首先启动 Dovecot,尽管我还没有对重启或相关问题进行任何调查。简单地说,与其他文档相反,此版本的smtpd_sasl_path
如果启用了 SASL 身份验证并且尚不存在(由 Dovecot 创建),Postfix 将不会接收入站电子邮件。
我并不是要忽略,在这种情况下,Postfix 必须设置其他几个 Postfix 参数才能接收电子邮件,例如smtpd_sasl_security_options
和。如果没有这些,如果设置为 true,smtpd_sasl_tls_security_options
Postfix 将不会接收电子邮件。smtpd_sasl_auth_enable
要完全清楚,为了解决这个疏忽,如果你在尝试配置时无法接收电子邮件,你必须关闭 Postfix smtpd_sasl_auth_enable
- 即,将其设置为 false - 或者您将无法接收入站电子邮件,尽管现有文档声称情况并非如此。因此,当您想要接收电子邮件时请将其关闭,当您想要测试时请将其重新打开。
但是,即使您弄清楚如何让 Dovecot 开始启用此服务(如创建的 所确认的)/var/spool/postfix/private/auth
,您可以将smtpd_sasl_auth_enable
其设置为 true(以及其他所需的 sasl 设置)并能够接收电子邮件,但仍然无法通过 IMAP(imaps)客户端发送。
顺便说一句,我还没有花时间去彻底探究,就我而言,为什么或如何将 处创建的套接字文件/var/spool/postfix/private/auth
创建为 root.root 所拥有。在 Postfix 启动并启用 sasl 接收后,chown postfix.postfix /var/spool/postfix/private/auth
需要修复该问题,但我还没有花时间确认这个问题在重新启动后仍然存在,甚至确认为什么它一开始就是错的,或者如果所有权错误,它是否会失败!我只是分享我的经验...... ... 在我看来,它肯定是错误创建的。
然而,即使在这种情况下,当 Dovecot 和 Postfix 就通过此套接字文件进行通信的位置和方式达成一致,并且电子邮件可以正常接收时,发送就是不起作用。也就是说,客户端可以连接并阅读他们的电子邮件并执行任何其他操作,但他们无法发送,到目前为止,我找到的所有可用文档都使人们相信以这种方式实现 sasl 是现代情况的关键特征,允许弃用并最终删除pop-before-smtp
。我错过了什么?
无需询问,Postfix 的 /etc/postfix/master.cf 提交条目包含:
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes
(也许那里有错误,但我不清楚。)
尝试发送时,/var/log/maillog 当前(上述配置完全正常工作)并持续包含这些远程发送客户端的以下错误:
400 4.5.2 Error: bad UTF-8 syntax
更罕见的是这个:
250-SMTPUTF8
我从未找到有关此错误的任何有用信息。
非常感谢您的帮助。
答案1
我的同事刚刚更改了他的设置,我们收到了一封电子邮件......
以前,发送端无法正常工作的是:
SSL/TLS
发送端确实做了以下工作:
STARTTLS
然而,这又引出了它自己的问题!
我记得 Postfix 是为“可能”设置的,我曾认为这意味着“如果客户端以 TLS 启动,则接受它,如果没有,则让他们尝试不使用...”这种行为意味着事实并非如此。
我认为我所理解的事实似乎是错误的,但它是基于现有的文献。
但是,已经很晚了,我该休息了。我明天再回来!感谢您的见解!