我正在使用 Postfix 和 Dovecot 设置电子邮件服务器。远程电子邮件客户端可以阅读电子邮件,但无法回复或发送新邮件。(服务器本地的电子邮件客户端可以正常接收和发送电子邮件。)例如,Alpine 会一直尝试,直到被告知放弃,此时会显示“发送错误:SMTP 问候失败 421 SMTP 连接断开”。
当我运行 alpine -d 4 时,调试输出显示:
=== sending:
Sending mail...
call_mailer: via TCP
IMAP 11:34:01 9/14 mm_log babble: Try IP address [xx.xx.xxx.xxx]
IMAP DEBUG 11:34:02 9/14: * OK Dovecot ready
tcptimeout: waited 15 seconds
tcptimeout: waited 30 seconds
. . . .
对我来说,这表明 Dovecot 和 Postfix 之间的服务器存在问题。但我不知道如何诊断它。
服务器的系统日志显示 imap-login 成功,但是所有日志(远程或客户端)似乎都没有关于发送消息失败的任何信息。
很有可能我在 Postfix 或 Dovecot 配置中搞砸了某些东西(SSL/TLS?SASL?)。我想解决这个问题,而不是无休止地猜测。所以,请问:调试这个的好过程是什么?
我如何测试各个进程之间的交互,以便找到失败的进程?
有没有办法增加 Postfix 和 Dovecot 的调试/日志输出?
有没有办法模拟 Dovecot/Postix 交互和/或远程客户端/IMAP 服务器连接,这样我就可以查看它们是否按要求进行?
谢谢。
答案1
我还建议这是一个后缀问题,输出是什么:
postconf -n
和
tail -n 50 /var/log/maillog (mail.log on ubuntu boxes)
答案2
您确定您正在运行 SMTP 邮件程序吗,也就是说,通过 telnet 进入您的邮件服务器的端口 25 并得到响应?
答案3
首先,我会将其分为两个问题。IMAP 由 Dovecot 处理。如果您能够从服务器接收消息,则问题不在于 Dovecot,而是它正在执行其工作。
邮件是通过 Postfix 发送的。您说“服务器本地的邮件客户端可以正常接收和发送电子邮件。”——这表明您的邮件客户端可能没有在端口 25 上向 Postfix 服务器进行身份验证,或者它没有在端口 25 上监听您的外部接口。正如 Bart 提到的,尝试远程登录到端口 25,看看您是否收到 Postfix 横幅。如果收到,请确保您的客户端正在进行身份验证(并且您已将 Postfix 设置为允许身份验证),以便他们可以通过您的服务器发送邮件。
答案4
你可以假装通过阅读相关内容成为客户请求函数(特别是第 4 节)并假装是邮件客户端。首先关闭所有 SSL/TLS 配置,看看您是否能够正常发送邮件。然后,打开它们并使用telnet-ssl
或openssl client
连接到 SSL 端口。
此外,你需要清楚是否存在问题当地的或外部邮件投递。如果是本地投递,您需要检查 是如何完成的postfix
。一种常见的方法是将本地邮件投递通过管道传输到 ,procmail
但也可以通过管道传输到dovecot
,您需要确保管道工作正常。检查日志。