Sun Java System Messaging Server 6 2005Q4 管理指南

MTA 疑難排解範例

本小節說明如何逐步疑難排解特定的 MTA 問題。在此範例中,郵件收件者未收到電子郵件的附件。注意:為了與 MIME 協定術語保持一致,本小節中將「附件」稱為「郵件部分」。之前提到的疑難排解技術用於識別郵件部分消失的位置和原因 (請參閱標準 MTA 疑難排解程序)。您可以使用以下步驟確定郵件通過 MTA 的路徑。此外,您可以確定郵件部分是在郵件進入郵件佇列之前還是之後消失的。若要這樣做,您需要手動停止並執行通道,並且擷取相關的檔案。


備註 –

當您手動執行通過通道的郵件時,Job Controller 必須處於執行狀態。


識別郵件路徑中的通道

透過識別哪些通道位於郵件路徑中,您可以將 master_debugslave_debug 關鍵字套用至相應的通道。這些關鍵字會在通道的主要記錄檔和從屬記錄檔中產生除錯輸出;而主除錯資訊和從屬除錯資訊將協助識別郵件部分消失的點。

  1. log_message_id=1 增加到目錄 /msg_svr_base/config 中的 option.dat 檔案中。使用此參數,您會在 mail.log_current 檔案中看到郵件 ID: 標頭行。

  2. 執行 imsimta cnbuild 以重新編譯配置

  3. 執行 imsimta restart dispatcher 以重新啟動 SMTP 伺服器。

  4. 讓一般使用者重新傳送帶郵件部分的郵件。

  5. 確定郵件通過的通道。

    雖然有不同的方法可識別通道,但建議使用以下方法:

    1. 在 UNIX 平台上,使用 grep 指令,在目錄 /msg_svr_base/log 中的 mail.log_current 檔案中搜尋郵件 ID: 標頭行。

    2. 一旦找到郵件 ID:標頭行,則請尋找 E (形成佇列) 和 D (移出佇列) 記錄以確定郵件的路徑。請參閱瞭解 MTA 記錄項目格式,以取得有關記錄項目代碼的更多資訊。請參閱此範例的以下 E 和 D 記錄:


      29-Aug-2001 10:39:46.44  tcp_local conversion        E 2 ... 
      29-Aug-2001 10:39:46.44  conversion tcp_intranet     E 2 ... 
      29-Aug-2001 10:39:46.44  tcp_intranet                  D 2 ...

左側的通道為來源通道,右側的通道為目標通道。在此範例中,E 和 D 記錄表示郵件路徑是從 tcp_local 通道到 conversion 通道,並最後到 tcp_intranet 通道。

手動啟動和停止通道以收集資料

本小節說明了如何手動啟動和停止通道。請參閱啟動和停止個別通道,以取得更多資訊。透過啟動和停止郵件路徑中的通道,您可以在 MTA 程序的不同階段儲存郵件和記錄檔。稍後會將這些檔案用以識別郵件故障點

Procedure手動啟動和停止通道

步驟
  1. 在目錄 /msg_svr_base/config 中的 option.dat 檔案中設定 mm_debug=5,以提供充足的除錯資訊。

  2. slave_debugmaster_debug 關鍵字增加至目錄 /msg_svr_base/configimta.cnf 檔案中的適當通道中。

    1. 從傳送具有郵件部分的郵件之遠端系統,在傳入通道 (或在初始對話期間將郵件切換至的任一通道) 上使用 slave_debug 關鍵字。在此範例中,slave_debug 關鍵字被增加至 tcp_local 通道。

    2. master_debug 關鍵字增加至傳送郵件且在識別郵件路徑中的通道中被識別的其他通道,將增加至 conversiontcp_intranet 通道。

    3. 執行指令 imsimta restart dispatcher 以重新啟動 SMTP 伺服器。

  3. 使用 imsimta qm stopimsimta qm start 指令手動啟動和停止特定通道。如需有關使用這些關鍵字的更多資訊,請參閱啟動和停止個別通道

  4. 啟動擷取郵件檔的程序讓一般使用者重新傳送帶郵件部分的郵件。

  5. 當郵件進入通道時,如果已使用 imsimta qm stop 指令停止此通道,則郵件將在此通道中停止。如需更多資訊,請參閱步驟 3

    1. 在您手動執行郵件路徑中的下一個通道之前,請複製並重新命名此郵件檔案。請參閱以下 UNIX 平台範例:

      # cp ZZ01K7LXW76T7O9TD0TB.00 ZZ01K7LXW76T7O9TD0TB.KEEP1

      郵件檔案通常存在於與 /msg_svr_base/data/queue/destination_channel /001 相似的目錄中。destination_channel 是郵件傳送的下一個通道 (例如︰tcp_intranet)。如果您要在 destination_channel 目錄中建立子目錄 (如 001002 等),請將 subdirs 關鍵字增加至通道。

    2. 建議您每次擷取並複製郵件時,對郵件的副檔名進行編號以識別郵件處理的次序。

  6. 繼續在通道中進行郵件處理,並在郵件路徑的下一個目標通道中形成佇列。若要如此,請使用 imsimta qm start 指令。

  7. 複製並儲存位於目錄 / msg_svr_base/log 中的對應通道記錄檔 (例如:tcp_intranet_master.log-*)。選擇具有追蹤郵件資料之適當記錄檔。確保您複製的檔案符合郵件進入通道時的時間戳記以及主旨標頭。在 tcp_intranet_master.log-* 的範例中,您可以將此檔案儲存為 tcp_intranet_master.keep,以使此檔案不被刪除。

  8. 重複步驟 5 至 7,直至郵件已到達其最終目標。

    步驟 7 中複製的記錄檔應與步驟 5 中複製的郵件檔案關聯。例如,如果您在缺少郵件部分的情形下停止了所有通道,則應儲存 conversion_master.log-*tcp_intranet_master.log-* 檔案。您還應儲存來源通道記錄檔 tcp_local_slave.log-*。此外,您還應從每個目標通道儲存一份對應的郵件檔:從 conversion 通道儲存 ZZ01K7LXW76T7O9TD0TB.KEEP1,從 tcp_intranet 通道儲存 ZZ01K7LXW76T7O9TD0TB.KEEP2

  9. 複製完郵件和記錄檔後,請移除除錯選項。

    1. slave_debugmaster_debug 關鍵字從目錄 /msg_svr_base/configimta.cnf 檔案中的適當通道中移除。

    2. 重設 mm_debug=0,並移除目錄 /msg_svr_base/configoption.dat 檔案中的 log_message_id=1

    3. 使用 imsimta cnbuild 重新編譯配置。

    4. 執行指令 imsimta restart dispatcher 以重新啟動 SMTP 伺服器。

Procedure識別郵件故障點

步驟
  1. 完成啟動和停止通道程式時,您應具有以下檔案,可以使用這些檔案來疑難排解問題︰

    1. 來自每個通道程式的郵件檔案 (例如︰ZZ01K7LXW76T7O9TD0TB.KEEP1) 的所有副本

    2. tcp_local_slave.log-* 檔案

    3. 每個目標通道的一組 channel _master.log-* 檔案

    4. 顯示郵件路徑的一組 mail.log_current 記錄

      所有檔案的時間戳記和郵件 ID 值應符合郵件 ID:mail.log_current 記錄中的郵件 ID: 標頭行。請注意,當郵件被退回給寄件者時例外;這些退回的郵件將具有不同於原來郵件的郵件 ID 值。

  2. 檢查 tcp_local_slave.log-* 檔案,以確定郵件在進入郵件佇列時是否具有郵件部分。

    檢查 SMTP 對話和資料以查看從用戶端機器傳送的內容。

    如果郵件部分未顯示在 tcp_local_slave.log-* 檔案中,則問題出現在郵件進入 MTA 之前。結果郵件在不帶郵件部分的情況下形成佇列。如果發生此情況,問題會出現在寄件者的遠端 SMTP 伺服器上或出現在寄件者的用戶端機器中。

  3. 檢查郵件檔的副本以查看郵件部分在何處被改變或遺漏。

    如果有任何郵件檔案顯示郵件部分被改變或缺少,請檢查先前通道的記錄檔。例如,如果進入 tcp_intranet 通道的郵件中的郵件部分被改變或缺少,您應檢查 conversion_master.log-* 檔案。

  4. 檢查郵件的最終目標。

    如果郵件部分看上去未在 tcp_local_slave.log、郵件檔案 (例如:ZZ01K7LXW76T7O9TD0TB.KEEP1) 以及 channel_master.log-* 檔案中發生改變,則 MTA 不會改變郵件,郵件部分將在通往其最終目標的路徑中的下一步消失。

    如果最終目標為 ims-ms 通道 (郵件儲存),則您可以將郵件從伺服器下載至用戶端機器,以確定郵件部分是否在此傳送期間或之後被遺漏。如果目標通道為 tcp_* 通道,則您需要移至郵件路徑中的 MTA。假設其為 Messaging Server MTA,您需要重複整個疑難排解程序 (請參閱識別郵件路徑中的通道手動啟動和停止通道以收集資料和本小節)。如果另一 MTA 未在您的管理之下,則報告此問題的使用者應與該特定網站聯絡。