iT邦幫忙

0

sendmail之類的mail server,USER反映收信收不下來,這樣有log可以看嗎?

  • 分享至 

  • xImage

很久以前遇到的問題
最近突然想到應該當時要去查log
但是sendmail之類的mail server,USER反映用outlook或者outlookexpress收信收不下來,這樣有log可以看嗎?
謝謝

weiclin iT邦高手 4 級 ‧ 2018-01-10 17:29:31 檢舉
什麼叫"收不下來"? 信寄了連個影子都沒看到? 在 web 界面能看到但 outlook 看不到?
yes,然後outlook,會一直程線在收信中,但收很久都收不下來這樣,不好意思沒有解釋清楚
weiclin iT邦高手 4 級 ‧ 2018-01-10 18:09:44 檢舉
那你應該查的是 pop3 或 imap 的紀錄
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
Ray
iT邦大神 1 級 ‧ 2018-01-10 21:41:16
最佳解答

有辦法解, 但是從敘述的內容來看, 推測您大概沒有能力解...

我會這樣做:

  1. Sendmail 只是負責 port 25 的收發, 所以你查他的 log 沒用
  2. Linux 系統收發 POP3/IMAP4 是由另外一組軟體套件來負責處理, 這類軟體有很多套, 有可能是 Dovecot, Cyrus, Courier 三者其中之一
  3. 不管你用哪一種, 我都會先去看一下它們的 Log, 不過, 根據經驗, 他們的 log 沒辦法幫你解決問題, 因為他們的 Log 記錄得太簡單, 只會告訴您「有錯誤!」, 但卻不會說「哪裡有問題?」
  4. 所以看完 log 若沒有明確原因的話, 就要改用 tcpdump 去看網路傳輸的封包, 在 outlook 讀信的時候, 抓取兩端通訊的 POP3/IMAP 傳輸封包, 解讀看看 Outlook 依序下了甚麼指令? 然後是跑到哪一個指令之後會卡住?
  5. 根據經驗, 問題通常是 Linux mbox 裡面有某封信的格式壞掉, 造成 Outlook 讀到一半的時候卡住. 這時您可以從 tcpdump 抓到的指令順序, 看到他是卡在哪一封信? (會有編號)
  6. 然後可以關掉 Outlook, 直接用 telnet 進入 POP3/IMAP4 Port (當然你必須懂得如何發送 POP3/IMAP4 的 Protocol), 登入該用戶的帳號 (您也必須懂得如何用 telnet 下 POP3/IMAP 的登入指令), 然後不要抓信, 直接下 POP/IMAP 指令去 Delete 那個編號的信.
  7. 砍完信之後, 再回來測試 Outlook 是否恢復正常? 因為後面有可能又卡到另一封壞掉的信 (既然前面會壞, 後面也可能會壞), 你就要重複前面的抓封包過程, 把壞掉的信編號找出來, 手動 telnet 進去砍掉他....重複步驟直到 Outlook 不會卡住為止.
  8. 如果不幸用 telnet 進去 delete 還砍不動的話, 代表整個 mbox 檔案壞掉, 直接 ssh 進 Linux 系統, 把這個人的 mbox 檔案砍掉 (當然, 這樣以前收進來的信就全部不見了, 但是至少他恢復正常可以繼續收後面進來的新信)
  9. 做完收工...

以上是一個合格的 Linux 系統管理員, 遇到此問題時的標準查修步驟, 但是裡面需要用到非常多的技能, 包含: tcpdump 操作參數, 擷取之後的封包格式如何解讀, POP3/IMAP Protocol 指令集, Linux 基本操作能力, mbox 目錄結構 (你才會知道要去哪找到這個 User 的 mbox?)..等等, 這些技能要靠你自己修練, 這邊講不完.

假設您發現沒有能力可以處理眼前的問題, 那就看公司認為這個問題值得花多少成本去解決? 花錢請別人處理是最快的. 長期來看, 要不就是逐步把系統更換成您自己可以全盤掌握的架構, 要不就是付費請外部廠商來幫您維護...

Yes,對Linux真的不夠熟,以為只要會看sop架站就夠了

Yes,對Linux真的不夠熟,以為只要會看sip架站就夠了

WilliamHuang
iT邦研究生 1 級 ‧ 2018-01-10 17:29:05
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答