Postfix 記錄失去的傳遞狀態資訊(postfix/smtp 消息)
我注意到後綴日誌存在問題,缺少有關某些電子郵件傳遞狀態的資訊。該問題影響了大約 1% 的電子郵件。
“健康”日誌:
<server># grep 8EB992EFBB44 postfix_log/mail04.log Jun 5 03:09:29 mail04 postfix/smtpd[8537]: 8EB992EFBB44: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx] Jun 5 03:09:29 mail04 postfix/cleanup[34349]: 8EB992EFBB44: message-id=<20120605010929.123.456@xxx.xxx.xxx> Jun 5 03:12:02 mail04 postfix/qmgr[76377]: 8EB992EFBB44: from=<xxx@xxx.xxx>, size=48845, nrcpt=1 (queue active) Jun 5 03:15:12 mail04 postfix/smtp[35058]: 8EB992EFBB44: to=<foo@baz.com>, relay=mx.baz.com[xxx.xxx.xxx.xxx]:25, conn_use=70, delay=343, delays=153/190/0/0.24, dsn=2.0.0, status=sent (250 ok) Jun 5 03:15:12 mail04 postfix/qmgr[76377]: 8EB992EFBB44: removed
“破碎”日誌:
<server># grep F3C362EF37CA postfix_log/mail04.log Jun 5 04:03:27 mail04 postfix/smtpd[39666]: F3C362EF37CA: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx] Jun 5 04:03:27 mail04 postfix/cleanup[41287]: F3C362EF37CA: message-id=<20120605020327.449.100@xxx.xxx.xxx> Jun 5 04:03:28 mail04 postfix/qmgr[76377]: F3C362EF37CA: from=<xxx@xxx.xxx>, size=48892, nrcpt=1 (queue active) ** here should be a log line from postfix/smtp but there is none ** Jun 5 04:03:29 mail04 postfix/qmgr[76377]: F3C362EF37CA: removed
背景資料:
系統:
FreeBSD xxx.xxx.xxx 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
Postfix 安裝在監獄中。日誌在同一台機器上,日誌目錄通過 nullfs 掛載。該站點具有高負載峰值,導致磁碟(本地)以 100% 執行。
更新
日誌每天輪換一次,目前大小約為 500MB。
我通過將 99000 條消息排隊到同一目的地進行了測試(以排除 dns/network/mx 問題)。5715 郵件沒有任何 DSN 記錄。失敗的消息隊列時間隨著時間的推移均勻分佈,我沒有看到任何有時限的問題。
一些未送達的電子郵件:
envelopeid | processed_time --------------+---------------------------- 8D7652EF3BAE | 2012-06-06 13:19:11.072715 DD53A2EF3C5C | 2012-06-06 13:33:24.374783 8C52F2EF4E3F | 2012-06-06 13:39:15.810616 BBC572EF525C | 2012-06-06 13:44:22.762812 E95822EF54D1 | 2012-06-06 13:52:01.134533 839DD2EF4FBB | 2012-06-06 14:13:48.511236 017EE2EF6234 | 2012-06-06 15:04:48.618963
這些是一些選擇,幾乎每秒都會發生這種未送達電子郵件的記錄。
<server># egrep '(8D7652EF3BAE|BBC572EF525C|017EE2EF6234)' mail04.log Jun 6 13:19:10 mail04 postfix/smtpd[20350]: 8D7652EF3BAE: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx] Jun 6 13:19:10 mail04 postfix/cleanup[21024]: 8D7652EF3BAE: message-id=<20120606111910.674@xxx.xxx.xxx> Jun 6 13:19:10 mail04 postfix/qmgr[7939]: 8D7652EF3BAE: from=<xxx@xxx.xxx.xxx>, size=63718, nrcpt=1 (queue active) Jun 6 13:19:11 mail04 postfix/qmgr[7939]: 8D7652EF3BAE: removed Jun 6 13:44:22 mail04 postfix/smtpd[20346]: BBC572EF525C: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx] Jun 6 13:44:22 mail04 postfix/cleanup[24811]: BBC572EF525C: message-id=<20120606114422.674@xxx.xxx.xxx> Jun 6 13:44:22 mail04 postfix/qmgr[7939]: BBC572EF525C: from=<xxx@xxx.xxx.xxx>, size=63758, nrcpt=1 (queue active) Jun 6 15:04:49 mail04 postfix/smtpd[20344]: 017EE2EF6234: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx] Jun 6 15:04:49 mail04 postfix/cleanup[35585]: 017EE2EF6234: message-id=<20120606130448.674@xxx.xxx.xxx> Jun 6 15:04:49 mail04 postfix/qmgr[7939]: 017EE2EF6234: from=<xxx@xxx.xxx.xxx>, size=63706, nrcpt=1 (queue active) <server># <server># find /var/spool/postfix/active/ -type f -print | wc -l 1 <server>#
重要提示:正如您在上面看到的,一些電子郵件沒有事件
removed
線。
這是哪個後綴版本?
您是否嘗試過調整 syslog ?
如果磁碟達到或接近其 I/O 容量,系統日誌的延遲時間可能比您預期的要長。
另外,什麼是“mail04.log”?它有多大 ?您確定該消息的全部內容都記錄在該文件中嗎?
使用 UDP 或(更好的)TCP 遠端系統日誌將日誌發送到異地,並檢查所有日誌中是否缺少消息。
如果任何 Postfix 程序被配置為在 chroot 監獄中執行,則除了預設套接字之外
$config_directory/master.cf
,您還需要配置 syslogd 以偵聽(以便 chroot 程序可以訪問內部 chroot)。如果您不這樣做,最初似乎一切正常,但是當 syslogd 由於某種原因(可能在日誌輪換期間發生)重新啟動時,來自 chroot 程序的日誌記錄會中斷。$queue_directory/dev/log``/dev/log``/dev/log