Centos

Postfix/dovecot 收不到郵件

  • March 27, 2011

我正在我的伺服器上配置 postfix 和 dovecot,但由於某種原因我無法接收郵件。我已按照這些說明配置郵件伺服器。我已經用 pingability.com 測試了埠 25 是打開的(郵件沒有收到任何錯誤),並且我能夠發送郵件。我就是收不到它們,在郵件目錄中看不到它們,在 squirrelmail 上也看不到它們。

我不是真正的 linux 專家,所以有人可以幫我解決這個問題嗎?

我的作業系統是 CentOS 5.5

edit1:根據日誌文件 /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]

edit2:日誌文件還包含許多這些條目,但我真的不知道如何處理它們:

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

編輯4:這次走得更遠了,看起來我錯過了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 條目,現在一切正常!

如果我沒記錯的話,只需在 CentOS 機器上安裝 postfix RPM 即可為您提供一個僅在 localhost 上偵聽的郵件伺服器。如果你點擊“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=<sender@example.com>, 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=<sender@example.com>     
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=<sender@example.com>, size=3286, nrcpt=1 (queue active)
Mar 27 23:14:40 whisper postfix/local[19363]: 3C05785C0: to=<recipient@example.com>, 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,並且您需要在那裡追踪問題。

引用自:https://serverfault.com/questions/252461