Postfix/dovecot 无法接收邮件

Postfix/dovecot 无法接收邮件

我正在服务器上配置 postfix 和 dovecot,但出于某种原因,我无法接收邮件。我已关注这些配置邮件服务器的说明。我已经使用 pingability.com 测试过端口 25 是否打开(邮件没有任何错误),并且我可以发送邮件。但我就是收不到邮件,在 maildir 中看不到邮件,在 squirrelmail 中也看不到邮件。

我并不是一名 Linux 专家,所以有人能帮我解决这个问题吗?

我的操作系统是 CentOS 5.5

编辑 1:根据日志文件 /var/log/maillog,邮件已收到,但可能未送达。如果我在发送电子邮件后直接检查日志文件,日志文件的最后几行如下所示:

Mar 27 23:59:24 vps4195 postfix/smtpd[15822]: connect from mailserver[ip]
Mar 27 23:59:25 vps4195 postfix/smtpd[15822]: 01EE0AD18170: client=server[ip]
Mar 27 23:59:25 vps4195 postfix/cleanup[15826]: 01EE0AD18170: message-id=<someid>
Mar 27 23:59:25 vps4195 postfix/qmgr[7544]: 01EE0AD18170: from=<emailaddress>, size=1980, nrcpt=1 (queue active)
Mar 27 23:59:55 vps4195 postfix/smtpd[15822]: disconnect from server[ip]

编辑2:日志文件也包含许多这些条目,但我真的不知道如何处理它们:

Mar 28 00:00:16 vps4195 postfix/virtual[17954]: fatal: bad string length 0 < 1: virtual_mailbox_base =
Mar 28 00:00:17 vps4195 postfix/master[7538]: warning: process /usr/libexec/postfix/virtual pid 17954 exit status 1
Mar 28 00:00:17 vps4195 postfix/master[7538]: warning: /usr/libexec/postfix/virtual: bad command startup -- throttling

edit3:我已经修复了之前的错误(在 main.cf 文件中添加了 virtual_mailbox_base),但是现在当日志文件尝试接收电子邮件时出现了此错误:

Mar 28 00:11:33 vps4195 postfix/virtual[3089]: E8025AD180BB: to=<email>, relay=virtual, delay=0, delays=0/0/0/0, dsn=5.1.1, status=bounced (unknown user: "email")
Mar 28 00:11:33 vps4195 postfix/qmgr[3077]: E8025AD180BB: removed

edit4:这次更进一步,看起来我错过了 main.cf 中的一行,但随后我收到此错误:

Mar 28 00:36:15 vps4195 postfix/qmgr[30545]: D7E6DAD18077: from=<mail>, size=755, nrcpt=1 (queue active)
Mar 28 00:36:15 vps4195 postfix/virtual[30610]: warning: recipient mail: not found in virtual_uid_maps
Mar 28 00:36:15 vps4195 postfix/virtual[30610]: D7E6DAD18077: to=<maill>, relay=virtual, delay=0.07, delays=0.05/0/0/0.01, dsn=4.3.5, status=deferred (mail system configuration error)

因此我在 main.cf 文件中创建了 virtual_uid_maps 和 virtual_gid_maps 条目,现在一切正常!

答案1

如果我没记错的话,只需在 CentOS 机器上安装 postfix RPM 即可为您提供一个仅侦听本地主机的邮件服务器。如果您点击“netstat -ltnp”,您应该会看到如下一行:

tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2182/master

确保它显示“0.0.0.0”(而不是“127.0.0.1”)。如果不是,请添加类似以下内容:

inet_interfaces = all

到 main.cf。

如果您的服务器正在监听所有接口,那么 /var/log/maillog(至少我认为 CentOS 中的日志就在那里)可能是您的下一个站点。查看其中是否有任何相关行讨论您期望收到的邮件。它应该看起来像这样:

Mar 27 23:14:39 whisper postfix/smtpd[19351]: connect from remote.mailserver.com[A.B.C.D]
Mar 27 23:14:39 whisper postfix/smtpd[19351]: 5E007301D: client=remote.mailserver.com[A.B.C.D]
Mar 27 23:14:39 whisper postfix/cleanup[19355]: 5E007301D: message-id=<his-message-id>                                 
Mar 27 23:14:39 whisper postfix/qmgr[2579]: 5E007301D: from=<[email protected]>, size=3190, nrcpt=1 (queue active)
Mar 27 23:14:39 whisper postfix/smtpd[19351]: disconnect from remote.mailserver.com[A.B.C.D]

这表示邮件已成功接收。在我的服务器上,下一步是垃圾邮件清理。然后是投递:

Mar 27 23:14:40 whisper postfix/pickup[19293]: 3C05785C0: uid=65534 from=<[email protected]>     
Mar 27 23:14:40 whisper postfix/cleanup[19355]: 3C05785C0: message-id=<his-message-id>
Mar 27 23:14:40 whisper postfix/qmgr[2579]: 3C05785C0: from=<[email protected]>, size=3286, nrcpt=1 (queue active)
Mar 27 23:14:40 whisper postfix/local[19363]: 3C05785C0: to=<[email protected]>, relay=local, delay=0.06, delays=0.03/0.02/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 27 23:14:40 whisper postfix/qmgr[2579]: 3C05785C0: removed

如果您看到倒数第二行,则邮件应该被递送到 dovecot,您需要在那里追踪问题。

相关内容