Sun Java logo     上一個      目錄      索引      下一個     

Sun logo
Sun Java System Messaging Server 6 2004Q2 管理指南 

第 20 章
記錄和日誌分析

Messaging Server 可以建立日誌檔,該日誌檔記錄與伺服器的管理、使用伺服器支援的任何協定 (SMTP、POP、IMAP 和 HTTP) 的通訊以及伺服器使用的其他程序相關的事件。透過檢查日誌檔,您可以監視伺服器作業的很多方面。

由於 MTA 使用了有別於其他服務的獨立記錄工具,所以您無法使用主控台來配置記錄服務以及檢視日誌。作為替代,您可以透過指定配置檔案中的資訊來配置 MTA 記錄。因此本章分為三個部分。第一部分描述一般介紹性資訊;第二部分描述郵件儲存和管理服務的記錄;第三部分描述 MTA 服務的記錄。

第 1 部分:介紹

第 2 部分:服務日誌 (郵件儲存、管理伺服器和 MTA)

第 3 部分:服務日誌 (MTA)


第 1 部分:介紹

您可以自訂建立和管理 Messaging Server 日誌檔的策略。本章描述了日誌檔的類型和結構,並論述了如何管理以及如何檢視日誌檔。包含以下各節:

記錄服務

Messaging Server 為其支援的每個主要協定或服務都建立了獨立的日誌檔集。這些日誌檔位於 msg_svr_base/data/log 中。您可以個別地自訂和檢視每種日誌檔類型。表格 20-1 列示了可以記錄的服務,並描述了每種服務的日誌檔。

表格 20-1 記錄服務

服務

日誌檔描述

Admin

包含與主控台和 Messaging Server 之間通訊 (大多數透過幾個 CGI 程序) 相關的記錄事件,透過其 Administration Server 進行

SMTP

包含與此伺服器的 SMTP 作業相關的記錄事件

IMAP

包含與此伺服器的 IMAP4 作業相關的記錄事件

POP

包含與此伺服器的 POP3 作業相關的記錄事件

HTTP

包含與此伺服器的 HTTP 作業相關的記錄事件

Default

包含與此伺服器的其他作業相關的記錄事件,如指令行公用程式和其他程序

使用協力廠商工具分析日誌

對於超過 Messaging Server 功能範圍的日誌分析和報告產生,您需要使用其他工具。您可以自行使用文字編輯器或標準系統工具處理日誌檔。

使用支援常規表示式剖析的可編寫文字編輯器,您可以根據本章中論述的任何準則搜尋和擷取日誌項目,並可以對結果進行排序,甚至還可以產生總數或其他統計資料。

在 UNIX 環境中,您還可以修改和使用現有報告產生工具,這些工具是為處理 UNIX syslog 檔案而開發的。如果您希望使用公用網域 syslog 處理工具,請記住您可能需要修改此工具以解釋不同的日期/時間格式,以及顯示在 Messaging Server 日誌項目中但未顯示在 syslog 項目中的兩個附加元件 (工具日誌級別)。


第 2 部分:服務日誌 (郵件儲存、管理伺服器和 MTA)

本節描述了以下服務的記錄:POP、IMAP、HTTP、MTA、Admin 和 Default (請參見表格 20-1)。

對於這些服務,您可以使用主控台來指定日誌設定和檢視日誌。您指定的設定將影響所記錄的事件以及事件的數量。分析日誌檔時,您可以使用這些設定和其他特性來完善對記錄事件的搜尋。如需有關 MTA 的服務日誌的其他資訊,請參閱第 3 部分:服務日誌 (MTA)

第 2 部分包含以下各節:

日誌特性

本節描述了郵件儲存和管理服務的以下日誌特性:記錄級別、記錄事件的類別、日誌的檔案名稱慣例和日誌檔目錄。

記錄級別

記錄的級別或優先順序定義了記錄作業的詳細程度或詳細度。高優先順序意味著較簡略;它意味著僅記錄具有高優先順序 (高嚴重程度) 的事件。低級別意味著更為詳細;它意味著將在日誌檔中記錄更多事件。

您可以透過設定 logfile.service.loglevel 配置參數來為每種服務 (POP、IMAP、HTTP、Admin 和 Default) 單獨設定記錄級別 (請參閱定義和設定記錄選項)。您還可以使用記錄級別來過濾對日誌事件的搜尋。表格 20-2 對可用級別進行了描述。這些記錄級別是由 UNIX syslog 工具定義的那些級別的子集。

表格 20-2 儲存和管理服務的記錄級別

級別

描述

緊急

詳細資訊最少的記錄。每當發生嚴重問題或緊急情況 (如伺服器無法存取電子信箱或執行所需的程式庫) 時,會將事件寫入日誌。

錯誤

每當發生錯誤情況 (如嘗試連線到用戶端或其他伺服器失敗) 時,會將事件寫入日誌。

警告

每當發生警告情況 (如伺服器無法理解用戶端傳送給它的通訊) 時,會將事件寫入日誌。

通知

每當產生通知 (一種普通但重要的情況,如使用者登入失敗或階段作業關閉) 時,會將事件寫入日誌。

資訊

每當執行重要動作 (如使用者成功登入、登出、建立或重新命名電子信箱) 時,會將事件寫入日誌。

除錯

最詳細的記錄。僅用於進行除錯。執行每個程序或作業中的每個單獨的步驟時都將事件寫入日誌,用以確定問題。

當選取特定記錄級別時,與該級別以及高於該級別 (較低詳細度) 的所有級別相對應的事件均被記錄。記錄的預設級別為通知


指定的記錄越詳細,日誌檔將佔用的磁碟空間就越大;有關指南,請參閱定義和設定記錄選項


記錄事件的類別

在每個支援的服務或協定中,Messaging Server 將根據記錄事件所發生的工具或功能區對記錄事件進一步進行分類。每個記錄事件都包含產生該事件的工具的名稱。這些類別將有助於在搜尋過程中過濾事件。表格 20-3 列示了 Messaging Server 可辨識的用於進行記錄的類別。

表格 20-3 發生日誌事件的類別  

工具

描述

一般

與此協定或服務相關的無明顯特徵的動作

LDAP

與 Messaging Server 存取 LDAP 目錄資料庫相關的動作

網路

與網路連線相關的動作 (套接字錯誤歸入此類別)

帳號

與使用者帳號相關的動作 (使用者登入歸入此類別)

協定

與協定特定的指令相關的協定級動作 (由 POP、IMAP 或 HTTP 功能傳回的錯誤歸入此類別)

統計資料

與收集伺服器統計資料相關的動作

儲存

與存取郵件儲存相關的低級動作 (讀取/寫入錯誤歸入此類別)

如需在日誌搜尋中將種類用作過濾器的範例,請參閱搜尋和檢視日誌

郵件儲存和管理日誌的檔案名稱慣例

POP、IMAP、HTTP、Admin 和 Default 服務的日誌檔使用完全相同的命名慣例。每個日誌檔都具有以下形式的檔案名稱:

服務.序列號.時間標記

表格 20-4 列示了郵件儲存日誌檔名稱慣例。

表格 20-4 儲存和管理日誌的檔案名稱慣例

元件

定義

服務

所記錄的服務:POP、IMAP、HTTP、Admin 或 Default。

序列號

一個整數,它指定了此日誌檔相對於日誌檔目錄中其他日誌檔的建立次序。具有較高序列號的日誌檔相對於具有較低序列號的日誌檔而言,屬於較新的檔案。序列號不循環使用;它們在伺服器的生命週期 (從安裝伺服器開始) 內單調增加。

時間標記

用於指定檔案建立日期與時間的較大整數。(其值以標準 UNIX 時間表示:自 1970 年 1 月 1 日午夜開始的秒數。)

例如,名為 imap.63.915107696 的日誌檔是指 IMAP 日誌檔目錄中建立的第 63 個日誌檔,建立於 1998 年 12 月 31 日下午 12:34:56。

開放式序列號與時間標記的組合讓您在循環、終止和選取用於分析的檔案時具有更大的靈活性。如需更多具體的建議,請參閱定義和設定記錄選項

日誌檔目錄

每項記錄服務均被指定了單一的目錄,其中儲存該服務的日誌檔。所有 IMAP 日誌檔均儲存在一起,所有 POP 日誌檔及其他服務的日誌檔也是如此。您可以定義每個目錄的位置,也可以定義目錄的最大空間以及該空間中允許存在的日誌檔的最大數量。

請確定儲存容量足夠容納所有日誌檔。日誌資料可能量很大,尤其是在較低 (較高詳細度) 的記錄級別中。

同時,定義適當的記錄級別、日誌循環、日誌有效期和伺服器備份策略也很重要,這可以備份所有日誌檔目錄並使這些目錄都不會過載;否則,就可能遺失資訊。請參閱定義和設定記錄選項

日誌檔格式

由 Messaging Server 建立的所有郵件儲存和管理服務日誌檔都具有完全相同的內容格式。日誌檔是多行文字檔案,其中每行描述一個記錄事件。對於每項支援的服務,所有事件描述都具有通用格式:

dateTime hostName processName[pid]:category logLevel:eventMessage

表格 20-5 列示了日誌檔元件。請注意,除了日期/時間格式不同以及此格式包括兩個附加元件 (類別日誌級別) 以外,此事件描述的格式與 UNIX syslog 工具定義的格式完全相同。

表格 20-5 儲存和管理日誌檔元件

元件

定義

日期時間

記錄事件的日期與時間,以 dd/mm/yyyy hh:mm:ss 格式表示,時區欄位以 GMT +/-hhmm 表示。例如:
02/Jan/1999:13:08:21 -0700

主機名稱

伺服器在其上執行的主機名稱:例如,showshoe

注意:如果主機上有多個 Messaging Server 實例,則可以使用程序 ID (pid) 將不同實例的記錄事件相互分隔開。

程序名稱

產生事件的程序名稱:例如,cgi_store

pid

產生事件的程序的程序 ID:例如,18753

類別

事件所屬的類別:例如,一般 (請參見表格 20-3)。

日誌級別

事件所代表的記錄級別:例如,通知 (請參見表格 20-2)。

eventMessage

可為任意長度的事件特定解釋訊息:例如,Log created (894305624)

以下是使用主控台檢視到的三個記錄事件範例:

02/May/1998:17:37:32 -0700 showshoe cgi_store[18753]:
General Notice:
  Log created (894155852)

04/May/1998:11:07:44 -0400 xyzmail cgi_service[343]:General Error:
  function=getserverhello|port=2500|error=failed to connect

03/Dec/1998:06:54:32 +0200 SiroePost imapd[232]:Account Notice:
  close [127.0.0.1] [unauthenticated] 1998/12/3 6:54:32
  0:00:00 0 115 0

IMAP 和 POP 事件項目可能會以三個數字結束。以上範例中具有
0 115 0。第一個數字是用戶端傳送的位元組數,第二個數字是伺服器傳送的位元組數,第三個數字是選取的電子信箱數 (對於 POP 通常為 1)。

在 [日誌檢視器] 視窗中檢視日誌檔時,您可以透過搜尋事件中的任意特定元件 (如特定的記錄級別或類別或特定的程序 ID) 來限制顯示的事件。如需更多資訊,請參閱搜尋和檢視日誌

每個日誌項目的事件訊息使用的格式都特定於要記錄的事件類型,即每種服務都定義哪些內容會顯示在其任何事件訊息中。許多事件訊息簡單明了,而其他事件訊息則複雜一些。

定義和設定記錄選項

您可以定義能最好地滿足管理需要的郵件儲存和管理服務記錄配置。本節論述了可幫助您決定最佳配置和策略的問題,並解釋了如何實施這些配置和策略。

靈活的記錄架構

日誌檔的命名方案 (服務.序列號.時間標記) 有助於您設計靈活的日誌循環和備份策略。事實上,將不同服務的事件寫入不同的檔案便於您快速分離問題。同時,由於檔案名稱中的序列號持續增長,並且時間標記始終是唯一的,因此當有限的序列號集用盡後,以後的日誌檔也不會簡單地覆寫早期的日誌檔。而是僅在達到更靈活的存在時間限制、檔案數量或總儲存空間時,才會覆寫或刪除較舊的日誌檔。

Messaging Server 支援日誌檔的自動循環,此功能簡化了管理,也使備份變得更容易。不必手動刪除目前日誌檔並建立新日誌檔以保留後續記錄事件。您可以隨時備份目錄中除目前日誌檔之外的所有日誌檔,而不必停止伺服器或手動通知伺服器啟動新日誌檔。

設定記錄策略的過程中,您可以針對每種服務設定選項,這些選項控制對總日誌儲存空間、最大日誌檔數量、單個檔案大小、最長檔案存在時間和日誌檔循環的速度等方面的限制。

規劃所需的選項

請記住,您必須設定數個限制,其中不只一個限制可能會導致日誌檔的循環或刪除。最先達到的限制為起控制性作用的限制。例如,如果最大日誌檔大小是 3.5 MB,並且您指定每天建立一個新日誌,如果每 24 小時建立的日誌資料不止 3.5 MB,那麼每天實際建立的日誌檔則不止一個。而且,如果最大日誌檔數量是 10 個並且最長存在時間是 8 天,則可能永遠不會達到日誌檔的存在時間限制,因為較快的日誌循環將意味著在不到 8 天之內便已建立 10 個檔案。

為 Messaging Server 管理日誌提供的以下預設值可能是規劃的合理出發點:

目錄中日誌檔的最大數量: 10
最大日誌檔大小:2 MB
所有日誌檔允許的總計最大大小:20 MB
允許的最小可用磁碟空間:5 MB
日誌自動重建時間:1 天
過期之前的最長存在時間:7 天
記錄的級別:通知

您可以看到此配置假定預計伺服器管理日誌資料每天累積大約 2 MB,每週備份一次,指定給管理日誌的總儲存空間至少是 25 MB。(如果記錄級別更詳細,則這些設定可能不足。)

對於 POP、IMAP 或 HTTP 日誌,相同的值可能是合理的開端。如果所有服務具有大致相同的日誌儲存空間需求 (如此處所示的預設值),您可能期望初始配置總計約 150 MB 的日誌儲存容量。(請注意,這僅表示儲存空間需求的一般指示;實際的需求可能會顯著不同。)

設定記錄選項

您可以使用主控台或指令行來設定控制郵件儲存記錄配置的選項。

這些選項的最合適設定取決於日誌資料累積的速度。可能需要 4,000 到 10,000 個日誌項目以佔用 1 MB 儲存空間。在較詳細的記錄級別 (如通知),一般忙碌的伺服器每週可能產生數百 MB 的日誌資料。可遵循以下方法:

請注意,您可以選擇將日誌資訊傳送至系統日誌工具而非伺服器提供的日誌檔。如下所示,您可以透過設定 syslogfacility 選項來將日誌資訊傳送至系統日誌:

configutil -o logfile.service.syslogfacility -v

其中 serviceadminpopimapimtahttpusermaildaemonlocal0local7 或 none。

如果設定了值,則系統會將訊息記錄到與設定值相應的系統日誌工具並忽略所有其他日誌檔服務選項。如果未設定此選項或值為 none,則記錄將使用 Messaging Server 日誌檔。

主控台     若要使用主控台設定記錄選項,請:

  1. 開啟要設定其日誌檔選項的 Messaging Server。
  2. 按一下 [配置] 標籤,開啟左側窗格中的 [日誌檔] 資料夾,並選取某服務 (如 IMAP、HTTP 或 Admin) 的日誌檔。
  3. 從 [詳細資訊級別] 下拉式清單中,選擇記錄級別。
  4. 在 [日誌檔的目錄路徑] 欄位中,輸入要儲存日誌檔的目錄之名稱。
  5. 在 [每個日誌的檔案大小] 欄位中,輸入最大日誌檔大小。
  6. 在 [建立新日誌,每隔] 欄位中,為日誌循環排程輸入一個數字。
  7. 在 [每個目錄的日誌數量] 和 [當日誌存在時間超過] 欄位中,輸入日誌檔的最大數量和最長存在時間,以與您的備份排程協調。
  8. 在 [當總日誌大小超過] 欄位中,輸入您想要的總儲存空間限制。
  9. 在 [當可用磁碟空間低於] 欄位中,輸入您想要保留的最小可用磁碟空間容量。

指令行     若要在指令行設定記錄選項,請使用以下範例中所示的 configutil 指令。

如果系統不支援 http 郵件存取 (即 Web 郵件),則可以透過設定以下變數來停用 http 記錄。如果系統需要 Web 郵件支援 (例如 Messenger Express),請勿設定這些變數。

configutil -o service.http.enable -v no
configutil -o service.http.enablesslport -v no

若要設定記錄級別,請輸入:

configutil -o logfile.service.loglevel -v level

其中服務adminpopimapimtahttp日誌級別NologCriticalErrorWarningNoticeInformationDebug

若要指定日誌檔的目錄路徑,請輸入:

configutil -o logfile.服務.logdir -v 目錄路徑

若要指定每個日誌的最大檔案大小,請輸入:

configutil -o logfile.服務.maxlogfilesize -v 大小

其中大小指定了位元組數。

若要指定日誌循環排程,請輸入:

configutil -o logfile.服務.rollovertime -v 數字

其中數字指定了秒數。

若要指定每個目錄中日誌檔的最大數量,請輸入:

configutil -o logfile.服務.maxlogfiles -v 數字

若要指定儲存空間限制,請輸入:

configutil -o logfile.服務.maxlogsize -v 數字

其中數字指定了一個以位元組為單位的數量。

若要指定您要保留的可用磁碟空間的最小容量,請輸入:

configutil -o logfile.服務.minfreediskspace -v 數字

其中數字指定了一個以位元組為單位的數量。

若要指定日誌的存在時間,請輸入:

configutil -o logfile.服務.expirytime -v 數字

其中數字指定了一個以秒為單位的數量。

搜尋和檢視日誌

主控台提供了用於檢視郵件儲存和管理日誌資料的基本介面。它允許選取單個日誌檔,並允許對那些檔案中的日誌項目執行靈活的過濾搜尋。

對於給定的服務,日誌檔以時間先後次序列示。選擇要搜尋的日誌檔後,您可以透過指定搜尋參數來縮小對單個事件的搜尋範圍。

搜尋參數

以下是可以指定用於檢視日誌資料的搜尋參數:

注意:搜尋區分大小寫。

檢視記錄時,組合記錄級別和工具的範例可能包括以下幾種:

指定搜尋和檢視結果

請按以下步驟使用給定服務的特定特性來搜尋記錄事件:

  1. 在主控台中,開啟希望檢查其日誌檔的 Messaging Server。
  2. 請執行以下任一步驟以顯示給定記錄服務的日誌檔 [內容] 標籤:
    • 按一下 [作業] 標籤,然後按一下 [檢視服務日誌],其中服務是記錄服務 (如「IMAP 服務」或「管理」) 的名稱。
    • 按一下 [配置] 標籤,然後開啟左側窗格中的 [日誌檔] 資料夾並選取某服務 (如 IMAP 或 Admin) 的日誌檔。然後按一下右側窗格中的 [內容] 標籤。
  3. 系統將顯示該記錄服務的 [內容] 標籤。
  4. 在 [日誌檔名稱] 欄位中,選取您要檢查的日誌檔。
  5. 按一下 [檢視選取的日誌] 按鈕以開啟 [日誌檢視器] 視窗。
  6. 在 [日誌檢視器] 視窗中,指定所需的搜尋參數 (已在前一節「搜尋參數」中描述)。
  7. 按一下 [更新] 以執行搜尋並將結果顯示在 [日誌項目] 欄位中。


第 3 部分:服務日誌 (MTA)

MTA 提供了用於記錄形成佇列和移出佇列的每封郵件的工具。還提供了派送程式錯誤和除錯輸出。第 3 部分包含以下各節:

您可以控制每個通道上的記錄,也可以指定要記錄的所有通道上的郵件作業。在初始配置中,記錄在所有通道上均被停用。

啟用記錄使得 MTA 在每次郵件經由 MTA 通道時,都將一個項目寫入 mail.log* 檔案。如果您希望獲得有關正在經由 MTA (或經由特定通道) 的郵件數量的統計資料,或者研究其他問題 (如是否及何時傳送或遞送郵件) 時,此類日誌項目會很有用。

如果僅對收集有關經由少數特定 MTA 通道的郵件數量的統計資料感興趣,則可能希望僅啟用主要感興趣的那些 MTA 通道上的記錄通道關鍵字。許多站點傾向於在所有 MTA 通道上啟用記錄。特別是,如果您要嘗試追蹤問題,診斷某些問題的第一步是注意到郵件未進入您期望或預計的通道,對所有通道啟用記錄將有助於您研究此類問題。


小心

如果啟用了記錄,mail.log 將穩定地增長,如果不進行限制,將消耗所有可用磁碟空間。監視此檔案的大小並定期地刪除不必要的內容。您還可以刪除整個檔案,並依需要建立另一個版本。


啟用 MTA 記錄

若要啟用特定通道的記錄,請將關鍵字 logging 新增到 MTA 配置檔案中的通道定義,如以下範例所示:

通道名稱 關鍵字 1 關鍵字 2 logging

此外,您還可以設定一些配置參數,如日誌檔的目錄路徑、日誌級別等等。請參閱第 2 部分:服務日誌 (郵件儲存、管理伺服器和 MTA)

如果您希望將所有通道的郵件作業都記錄到日誌檔中,則只需將關鍵字 logging 新增到 MTA 配置檔案的通道塊區段的預設通道 (請參閱配置通道預設) 即可。例如:

defaults logging notices 1 2 4 7 copywarnpost copysendpost postheadonly noswitchchannel immnonurgent maxjobs 7 defaulthost siroe.com

l defragment charset7 us-ascii charset8 iso-8859-01
siroe.com

每封郵件在形成佇列和移出佇列時都進行了記錄。將所有日誌項目記錄至 msg_svr_base/data/logmail.log_current 中。

郵件將傳回工作 (每晚午夜時分執行),將所有現有 mail.log_yesterday 都附加到累積日誌檔 mail.log,將目前 mail.log_current 檔案重新命名為 mail.log_yesterday,然後創建一個新的 mail.log_current 檔案。它還對所有 connection.log* 檔案執行相似的作業。

透過將 LOG_MESSAGES_SYSLOG 選項設定為 1,您可以將 MTA 日誌訊息傳送給系統日誌 (UNIX) 。0 為預設值,表示未執行系統日誌 (事件日誌) 記錄。

指定附加 MTA 記錄選項

除了啟用記錄時通常提供的基本資訊之外,您還可以透過設定 MTA 選項檔案中的各種 LOG_* MTA 選項來指定要包含的附加、可選資訊欄位。如需有關選項檔案的完整詳細資訊,請參閱「Messaging Server Reference Manual」

MTA 日誌項目格式

MTA 日誌檔以 ASCII 文字書寫。依預設,每個日誌檔項目都包含八個或九個欄位,如以下範例所示。

19-Jan-1998 19:16:57.64 l tcp_local E 1 adam@sesta.com
 rfc822;marlowe@siroe.com marlowe@siroe.com

日誌項目顯示:

  1. 建立項目的日期與時間 (範例:19-Jan-1998 19:16:57.64)。
  2. 源通道的通道名稱 (在此範例中為 l)。
  3. 目標通道的通道名稱 (在此範例中為 tcp_local)。(對於 SMTP 通道,當啟用 LOG_CONNECTION 時,加號 (+) 表示內送到 SMTP 伺服器;減號 (-) 表示透過 SMTP 用戶端外送。)
  4. 項目的類型 (E);請參見表格 20-6
  5. 郵件的大小 (1)。依預設以千位元組為單位表示,儘管使用 MTA 選項檔案中的 BLOCK_SIZE 關鍵字可以變更此預設值。
  6. 訊息封 From: 位址 (adam@sesta.com)。請注意帶有空訊息封 From: 位址的郵件 (如通知郵件),此欄位將為空白。
  7. 訊息封 To: 位址 (marlowe@siroe.com) 使用中 (目前) 形式。
  8. 訊息封 To: 位址 (marlowe@siroe.com) 使用中 (目前) 形式。
  9. 遞送狀態 (僅適用於 SMTP 通道)。

表格 20-6 描述了記錄項目代碼。

表格 20-6 記錄項目代碼

項目

描述

D

成功移出佇列

DA

使用 SASL (認證) 成功移出佇列

DS

使用 TLS (安全性) 成功移出佇列

DSA

使用 TLS 和 SASL (安全性和認證) 成功移出佇列

E

形成佇列

EA

使用 SASL (認證) 成功形成佇列

ES

使用 TLS (安全性) 成功形成佇列

ESA

使用 TLS 和 SASL (安全性和認證) 成功形成佇列

J

拒絕嘗試形成佇列 (被從屬通道程式拒絕)

K

收信人郵件被拒絕,原因是寄件者請求 NOTIFY=NEVER DSN 旗標設定,或郵件逾時,或者郵件被手動傳回 (例如:imsimta qm「delete」指令始終為每位收信人產生「K」記錄,而 qm「return」指令將產生「K」記錄而不是「R」記錄)。這表示未根據寄件者自己的請求向寄件者傳送通知。

可將這種記錄與「R」記錄進行比較,後者是相同類型的拒絕/逾時記錄,但還會根據此傳送失敗的郵件產生新的通知郵件 (退回給原始寄件者)。

Q

移出佇列時發生暫時故障

R

嘗試移出佇列時收件者位址被拒絕 (被主要通道程式拒絕),或產生故障/退回郵件

W

傳送警告訊息以通知原寄件者郵件尚未遞送,而是仍在被重試的佇列中

Z

已成功傳送給一些收件者,但暫時未成功傳送給此收件者;所有收件者的原郵件檔案已被移出佇列,並在該位置讓此收件者和其他未成功傳送的收件者的新郵件檔案立即形成佇列

SMTP 通道的 LOG_CONNECTION + 或 - 項目

C

連線已關閉

O

連線已開啟

X

連線已拒絕

Y

建立連線之前嘗試連線失敗

I

ETRN 指令已收到

LOG_CONNECTIONLOG_FILENAMELOG_MESSAGE_IDLOG_NOTARYLOG_PROCESSLOG_USERNAME 全部啟用後,格式將發生變化,如以下範例所示。(此範例日誌項目行已因印刷排版原因而換行;實際日誌項目將顯示在一個自然行上。)

19-Jan-1998 13:13:27.10 HOSTA   2e2d.2.1 tcp_local   l
 E 1 service@siroe.com rfc822;adam@sesta.com
 adam 276 /imta/queue/l/ZZ01IWFY9ELGWM00094D.00
 <01IWFVYLGTS499EC9Y@siroe.com> inetmail
 siroe.com (siroe.com [192.160.253.66])

除了上面已論述的那些欄位外,其中的附加欄位是:

  1. 執行通道程序的節點的名稱 (在本範例中為 HOSTA)。
  2. 程序 ID (以十六進位表示),其後是句號 (點) 字元和計數。如果這是多執行緒的通道項目 (例如 tcp_* 通道項目),則在程序 ID 和計數之間還會顯示執行緒 ID。在本範例中,程序 ID 是 2e2d.2.1
  3. 郵件的 NOTARY (遞送收件者請求) 旗標,以整數表示 (在本範例中為 276)。
  4. MTA 佇列區域中的檔案名稱 (在本範例中為 /imta/queue/l/ZZ01IWFY9ELGWM00094D.00)。
  5. 郵件 ID (在本範例中為 <01IWFVYLGTS499EC9Y@siroe.com>)。
  6. 正在執行的程序的名稱 (在本範例中為 inetmail)。在 UNIX 上,對於派送程式程序 (如 SMTP 伺服器),此名稱通常為 inetmail (除非已使用 SASL)。
  7. 連線資訊 (在本範例中為 siroe.com (siroe.com [192.160.253.66]))。連線資訊由傳送系統或通道名稱組成,如由 HELO/EHLO 線路上的傳送系統表示的名稱 (對於送進的 SMTP 郵件),或形成佇列的通道的法定主機名稱 (對於其他類型的通道)。對於 TCP/IP 通道,傳送系統的「真實」名稱 (即由 DNS 反向查詢和/或 IP 位址報告的符號名稱) 也可在 ident* 通道關鍵字的控制下被報告在括號內;請參閱 IDENT 查詢。此範例假定使用其中一個關鍵字 (例如使用預設的 identnone 關鍵字),該關鍵字選取顯示在 DNS 中找到的名稱和 IP 位址。

管理 MTA 日誌檔

郵件將傳回工作 (每晚午夜時分執行),將所有現有 mail.log_yesterday 都附加到累積日誌檔 mail.log,將目前 mail.log_current 檔案重新命名為 mail.log_yesterday,然後創建一個新的 mail.log_current 檔案。它還對所有 connection.log* 檔案執行相似的作業。

MTA 執行自動重建以維護目前的檔案,但您必須透過為作業 (如備份檔案、截短檔案、刪除檔案等等) 確定策略來管理累積 mail.log 檔案。

考慮如何管理日誌檔時,請注意 MTA 定期傳回工作將執行站點提供的 msg_svr_base/bin/daily_cleanup 程序 (如果存在)。因而某些站點可能選擇提供他們自己的清除程序,例如每週 (或每月) 重新命名一次舊的 mail.log 檔案等等。

MTA 郵件記錄範例

記錄在 MTA 郵件檔案中的確切欄位格式和欄位清單將根據您設定的記錄選項而有所不同。本節將顯示一些解譯典型日誌項目類型的範例。如需有關可選附加欄位的描述,請參閱指定附加 MTA 記錄選項


由於印刷排版原因,日誌檔項目被摺疊成多行顯示 ─ 實際日誌檔項目是每個項目一行。


查閱日誌檔時,請記住在典型系統上可一次處理多封郵件。通常,與特定郵件相關的項目將散佈在與同時正在處理的其他郵件相關的項目中。基本記錄資訊適用於收集通過 MTA 移動的郵件總數的大致情況。

如果您希望將與同一郵件相關的特定項目和相同的收件者相關聯,則可能要啟用 LOG_MESSAGE_ID。如果您希望將特定郵件與 MTA 佇列區域中的特定檔案相關聯,或希望從項目查看已嘗試遞送特定的尚未成功移出佇列的郵件的次數,則可能要啟用 LOG_FILENAME。對於 SMTP 郵件 (透過 TCP/IP 通道處理),如果您希望將遠端系統的 TCP 連線與已傳送的郵件關聯,則可能要啟用 LOG_PROCESSLOG_CONNECTION 的某級別。

以下範例顯示在本地使用者透過外送 TCP/IP 通道向外傳送郵件 (例如傳送到網際網路) 的情況下,可能看到的日誌項目種類的相當基本的範例。在本範例中,啟用了 LOG_CONNECTION。標有 (1) 和 (2) 的行是一個項目 ─ 它們在實際日誌檔中將顯示在一個自然行上。同樣,標有 (3) - (7) 的行是一個項目並將顯示在一個自然行上。

程式碼範例 20-1 記錄:本地使用者傳送外送郵件

19-Jan-1998 19:16:57.64 l            tcp_local    E 1 (1)
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com (2)

19-Jan-1998 19:17:01.16 tcp_local                  D 1 (3)
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com (4)
 dns;thor.siroe.com
 (TCP|206.184.139.12|2788|192.160.253.66|25) (5)
 (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694]) (6)
 smtp;250 2.1.5 marlowe@siroe.com and options OK. (7)

  1. 此行顯示了一 (1) 封郵件從 l 通道到 tcp_local 通道形成佇列 (E) 的日期與時間。
  2. 此行是與 (1) 位於同一日誌檔自然行的一部分,為了印刷排版方便而在此處分行顯示。此行顯示了訊息封 From: 位址 (在本例中為 adam@sesta.com) 以及原來版本和目前版本的訊息封 To: 位址 (在本例中為 marlowe@siroe.com)。
  3. 此行顯示了一 (1) 封郵件從 tcp_local 通道移出佇列 (D) 的日期與時間 ─ 即,由 tcp_local 通道成功傳送到某遠端 SMTP 伺服器。
  4. 此行顯示了訊息封 From: 位址、原來訊息封 To: 位址和訊息封 To: 位址的目前形式。
  5. 此行顯示了與之建立連線的 DNS 中的實際系統名為 thor.siroe.com,本地傳送系統具有 IP 位址 206.184.139.12 並從連接埠 2788 傳送,遠端目標系統具有 IP 位址 192.160.253.66 並且遠端目標系統的連線連接埠是連接埠 25。
  6. 此行顯示了遠端 SMTP 伺服器的 SMTP 大標題行。
  7. 此行顯示了傳回的此位址的 SMTP 狀態代碼;250 是基本的 SMTP 成功代碼,而且,此遠端 SMTP 伺服器使用延伸的 SMTP 狀態代碼和某附加文字進行回應。

程式碼範例 20-2 顯示了類似於程式碼範例 20-3 中所示的日誌項目,但透過設定顯示檔案名稱和郵件 ID 的 LOG_FILENAME=1LOG_MESSAGE_ID=1 記錄了附加資訊;請參閱 (1) 和 (2)。特別是郵件 ID 可用於建立項目與郵件的關聯關係。

程式碼範例 20-2 記錄:包括可選記錄欄位

19-Jan-1998 19:16:57.64 l            tcp_local    E 1
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com
 /imta/queue/tcp_local/ZZ01ISKLSKLZLI90N15M.00
   <01ISKLSKC2QC90N15M@sesta.com> (1)

19-Jan-1998 19:17:01.16 tcp_local                  D 1
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com
 /imta/queue/tcp_local/Z01ISKLSKLZLI90N15M.00
   <01ISKLSKC2QC90N15M@sesta.com> (2)
 dns;thor.siroe.com (TCP|206.184.139.12|2788|192.160.253.66|25)
 (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694])
 smtp;250 2.1.5 marlowe@siroe.com and options OK.

程式碼範例 20-3 對啟用 LOG_FILENAME=1LOG_MESSAGE_ID=1LOG_CONNECTION=1 將郵件傳送給多個收件者進行了說明。此處已將使用者 adam@sesta.com 傳送給 MTA 郵件收件人清單 test-list@sesta.com,此郵件收件人清單已擴展到 bob@sesta.comcarol@varrius.comdavid@varrius.com。請注意每個收件者的原來訊息封 To: 位址是 test-list@sesta.com,儘管目前訊息封 To: 位址是每個收件者各自的位址。請注意,儘管涉及兩個單獨的檔案 (一個針對 l 通道而另一個針對外送 tcp_local 通道),郵件 ID 卻始終保持一致。

程式碼範例 20-3 記錄:傳送到清單

19-Jan-1998 20:01:44.10 l    l            E 1
 adam@sesta.com rfc822;test-list@sesta.com bob
 imta/queue/l/ZZ01ISKND3DE1K90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>

19-Jan-1998 20:01:44.81 l            tcp_local    E 1
 adam@sesta.com rfc822;test-list@sesta.com carol@varrius.com
 imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00 
 <01ISKND2H8MS90N15M@sesta.com>

19-Jan-1998 20:01:44.81 l            tcp_local    E 1
 adam@sesta.com rfc822;test-list@sesta.com david@varrius.com
 imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>

19-Jan-1998 20:01:50.69 l                         D 1
 adam@sesta.com rfc822;test-list@sesta.com bob
 imta/queue/l/ZZ01ISKND3DE1K90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>

19-Jan-1998 20:01:57.36 tcp_local                  D 1
 adam@sesta.com rfc822;test-list@sesta.com carol@varrius.com
 imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>
 dns;gw.varrius.com (TCP|206.184.139.12|2788|192.160.253.66|25)
 (gw.varrius.com -- SMTP Sendmail)
 smtp;250 OK.

19-Jan-1998 20:02:06.14 tcp_local                  D 1
 adam@sesta.com rfc822;test-list@sesta.com david@varrius.com
 imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>
 dns;gw.varrius.com (TCP|206.184.139.12|2788|192.160.253.66|25)
 (gw.varrius.com -- SMTP Sendmail)
 smtp;250 OK.

程式碼範例 20-4 對嘗試傳送到不存在的網域 (此處為 very.bogus.com) 進行了說明;即,傳送到未被 MTA 的重寫規則注意到其不存在的、並且被 MTA 匹配到外送 TCP/IP 通道的網域名稱。此範例假定 MTA 選項設定為 LOG_FILENAME=1LOG_MESSAGE_ID=1

TCP/IP 通道在 DNS 中執行並檢查網域名稱時,DNS 傳回錯誤,指示該名稱不存在。請注意 (5) 中所示的「拒絕」項目 (R),及 (6) 中所示的 DNS 傳回的錯誤 (該錯誤指示此為非法網域名稱)。

由於提交郵件後位址被拒絕,MTA 將產生退回郵件給原寄件者。MTA 將讓新拒絕郵件在原寄件者 (1) 中形成佇列,並在刪除原外送郵件 ((5) 中所示的 R 項目) 之前,將一份副本傳送給 Postmaster (4)。

通知郵件 (如退回郵件) 具有空訊息封 From: 位址 ─ 例如,如 (2) 和 (8) 中所示 ─ 其中訊息封 From: 欄位顯示為空白。由 MTA 產生的退回郵件的初始形成佇列顯示了新通知郵件的郵件 ID,其後跟隨原來郵件的郵件 ID (3)。(此類資訊對於 MTA 並不總是可用,但可用於記錄時,它允許將對應於外送失敗的郵件的日誌項目與對應於結果通知郵件的日誌項目相關聯。)此類通知郵件在程序通道中形成佇列,該通道轉而又將這些郵件在相應的目標通道中形成佇列 (7)。

程式碼範例 20-4 記錄:傳送到不存在的網域

19-JAN-1998 20:49:04 l            tcp_local    E 1
 adam@sesta.com rfc822;user@very.bogus.com user@very.bogus.com
 imta/queue/tcp_local/ZZ01ISKP0S0LVQ94DU0K.00
 <01ISKP0RYMAS94DU0K@SESTA.COM>

19-JAN-1998 20:49:33 tcp_local    process      E 1              (1)
 rfc822;adam@sesta.com adam@sesta.com                           (2)
 imta/queue/process/ZZ01ISKP0S0LVQ94DTZB.00
 <01ISKP22MW8894DTAS@SESTA.COM>,<01ISKP0RYMAS94DU0K@SESTA.COM>   (3)

19-JAN-1998 20:49:33 tcp_local    process      E 1               (4)
 rfc822;postmaster@sesta.com postmaster@sesta.com
 imta/queue/process/ZZ01ISKP0S0LVQ94DTZB.00
 <01ISKP22MW8894DTAS@SESTA.COM>,<01ISKP0RYMAS94DU0K@SESTA.COM>

19-JAN-1998 20:50:07 tcp_local                  R 1              (5)
 adam@sesta.com rfc822;user@very.bogus.com user@very.bogus.com
 imta/queue/tcp_local/ZZ01ISKP0S0LVQ94DU0K.00
 <01ISKP0RYMAS94DU0K@SESTA.COM>
 Illegal host/domain name found                                  (6)

19-JAN-1998 20:50:08 process      l            E 3               (7)
 rfc822;adam@sesta.com adam                                      (8)
 imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SESTA.COM>

19-JAN-1998 20:50:08 process      l            E 3
 rfc822;postmaster@sesta.com postmaster
 imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SESTA.COM>

19-JAN-1998 20:50:12 l                         D 3
 rfc822;adam@sesta.com adam
 imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SESTA.COM>

19-JAN-1998 20:50:12 l                         D 3
 rfc822;postmaster@sesta.com postmaster
 imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SIROE.COM>

程式碼範例 20-5 對嘗試傳送到遠端系統上的不正確位址進行了說明。此範例假定 MTA 選項設定為 LOG_FILENAME=1LOG_MESSAGE_ID=1,通道選項設定為 LOG_BANNER=1LOG_TRANSPORTINFO=1。請注意 (1) 中所示的拒絕項目 (R)。但與程式碼範例 20-4 中的拒絕項目相比,請注意此處的拒絕項目顯示已建立與遠端系統的連線,並顯示遠端 SMTP 伺服器發出的 SMTP 錯誤代碼,(2) 和 (3)。(2) 中所示的資訊是設定通道選項 LOG_BANNER=1LOG_TRANSPORTINFO=1 的結果。

程式碼範例 20-5 記錄:傳送給不存在的遠端使用者

20-JAN-1998 13:11:05 l            tcp_local    E 1
 adam@sesta.com rfc822;nonesuch@siroe.com nonesuch@siroe.com
 imta/queue/tcp_local/ZZ01ISLNBB1JOE94DUWH.00
 <01ISLNBAWV3094DUWH@sesta.com>

20-JAN-1998 13:11:08 tcp_local    process      E 1
 rfc822;adam@sesta.com adam@sesta.com
 imta/queue/process/ZZ01ISLNBB1JOE94DSGB.00
 <01ISLNBFKIDS94DUJ8@sesta.com>,<01ISLNBAWV3094DUWH@sesta.com>

20-JAN-1998 13:11:08 tcp_local    process      E 1
 rfc822;postmaster@sesta.com postmaster@sesta.com
 imta/queue/process/ZZ01ISLNBB1JOE94DSGB.00
 <01ISLNBFKIDS94DUJ8@sesta.com>,<01ISLNBAWV3094DUWH@sesta.com>

20-JAN-1998 13:11:11 tcp_local                  R 1      (1)
 adam@sesta.com rfc822;nonesuch@siroe.com nonesuch@siroe.com
 imta/queue/tcp_local/ZZ01ISLNBB1JOE94DUWH.00 
 <01ISLNBAWV3094DUWH@sesta.com>
 dns;thor.siroe.com
 (TCP|206.184.139.12|2788|192.160.253.66|25)             (2)
 (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694])
 smtp; 553 unknown or illegal user:nonesuch@siroe.com   (3)

20-JAN-1998 13:11:12 process      l            E 3
 rfc822;adam@sesta.com adam
 imta/queue/l/ZZ01ISLNBGND1094DQDP.00
 <01ISLNBFKIDS94DUJ8@sesta.com>

20-JAN-1998 13:11:12 process      l            E 3
 rfc822;postmaster@sesta.com postmaster
 imta/queue/l/ZZ01ISLNBGND1094DQDP.00
 <01ISLNBFKIDS94DUJ8@sesta.com>

20-JAN-1998 13:11:13 l                         D 3
 rfc822;adam@sesta.com adam@sesta.com
 imta/queue/l/ZZ01ISLNBGND1094DQDP.00
 <01ISLNBFKIDS94DUJ8@sesta.com>

20-JAN-1998 13:11:13 l                         D 3
 rfc822;postmaster@sesta.com postmaster@sesta.com
 imta/queue/l/ZZ01ISLNBGND1094DQDP.00
 <01ISLNBFKIDS94DUJ8@sesta.com>

程式碼範例 20-6 對當 MTA 拒絕遠端 提交郵件的嘗試時所產生的日誌檔項目種類進行了說明。(本範例假定未啟用 LOG_* 可選項,因此項目中僅記錄了基本欄位。請特別注意,啟用 LOG_CONNECTION 選項將導致在此類 J 項目中產生附加資訊欄位。)在這種情況下,此範例是針對已使用 ORIG_SEND_ACCESS 對映設定了 SMTP 轉送封鎖功能 (請參閱配置 SMTP 轉送封鎖) 的 MTA 的,該對映包括:

ORIG_SEND_ACCESS

! ...numerous entries omitted...
!
   tcp_local|*|tcp_local|*   $NRelaying$ not$ permitted

其中 alan@very.bogus.com 不是內部位址。因此遠端使用者 harold@varrius.com 嘗試透過 MTA 系統轉送到遠端使用者 alan@very.bogus.com 被拒絕。

程式碼範例 20-6 記錄:拒絕遠端提交郵件的嘗試

28-May-1998 12:02:23 tcp_local                  J 0         (1)
 harold@varrius.com rfc822; alan@very.bogus.com             (2)
 550 5.7.1 Relaying not permitted:alan@very.bogus.com     (3)

  1. 此日誌顯示了 MTA 拒絕遠端提交郵件的嘗試的日期與時間。拒絕以 J 記錄表示。(MTA 通道嘗試傳送被拒絕的郵件的情況以 R 記錄表示,如程式碼範例 20-4程式碼範例 20-5 所示。)
  2. 顯示了嘗試的訊息封 From: 和 To: 位址。在此例中,無可用的原來訊息封 To: 資訊,因此該欄位為空白。
  3. 此項目包括 MTA 發給遠端 (嘗試的寄件者) 的 SMTP 錯誤訊息。

程式碼範例 20-7 對由於無法在第一次嘗試中遞送郵件,因此 MTA 多次嘗試傳送該郵件時所產生的日誌檔項目種類進行了說明。本範例假定選項設定為 LOG_FILENAME=1LOG_MESSAGE_ID=1

程式碼範例 20-7 記錄:多次遞送嘗試

15-Jan-1998 10:31:05.18 tcp_internal   tcp_local   E 3    (1)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZZ01IS3D2ZP7FQ9UN54R.00 
 <01IRUD7SVA3Q9UN2D4@sesta.com>

15-Jan-1998 10:31:10.37 tcp_local                  Q 3    (2)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZZ01IS3D2ZP7FQ9UN54R.00             (3)
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 TCP active open:Failed connect()    Error:no route to host (4)

 ...several hours worth of entries...

15-Jan-1998 12:45:39.48 tcp_local                  Q 3     (5)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZY01IS3D2ZP7FQ9UN54R.00              (6)
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 TCP active open:Failed connect()    Error:no route to host

 ...several hours worth of entries...

15-Jan-1998 16:45:24.72 tcp_local                  Q 3
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZX01IS67NY4RRK9UN7GP.00                (7)
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 TCP active open:Failed connect () Error:connection refused (8)

 ...several hours worth of entries...

15-Jan-1998 20:45:51.55 tcp_local                  D 3       (9)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZX01IS67NY4RRK9UN7GP.00
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 dns;host.some.org (TCP|206.184.139.12|2788|192.1.1.1|25)
 (All set, fire away)
 smtp; 250 Ok

  1. 郵件進入 tcp_internal 通道 ─ 可能來自 POP 或 IMAP 用戶端,也可能來自使用 MTA 作為 SMTP 中繼的組織中的其他主機;MTA 將其在 tcp_local 外送通道中形成佇列。
  2. 第一次遞送嘗試失敗,如 Q 項目所示。
  3. ZZ* 檔案名稱可以看出這是第一次遞送嘗試。
  4. TCP/IP 套裝軟體找不到至遠端的路由時,此遞送嘗試將失敗。與程式碼範例 20-4 相反,DNS 並不反對目標網域名稱 some.org;相反,「no route to host」錯誤表示在傳送端和接收端之間出現某網路問題。
  5. 下一次 MTA 作為定期工作執行時,它再次嘗試遞送,但再次失敗。
  6. 此檔案名稱現在是 ZY*,表示這是第二次嘗試。
  7. 第三次失敗嘗試的檔案名稱是 ZX*
  8. 下一次定期工作再次嘗試遞送,遞送失敗,儘管這一次 TCP/IP 套裝軟體未對無法連通遠端 SMTP 伺服器表示不滿,但其實是遠端 SMTP 伺服器不接受連線。(可能遠端修正了其網路問題,但尚未備份其 SMTP 伺服器 ─ 或其 SMTP 伺服器正忙於處理其他郵件而無法在 MTA 嘗試連線時接受連線。)
  9. 最終郵件被移出佇列。

程式碼範例 20-8 對透過轉換通道路由郵件的情況進行了說明。假定此站點具有 CONVERSIONS 對映表,如:

CONVERSIONS

  IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT   Yes

本範例假定選項設定為 LOG_FILENAME=1LOG_MESSAGE_ID=1

程式碼範例 20-8 記錄:透過轉換通道路由送進的 SMTP 郵件

04-Feb-1998 00:06:26.72 tcp_local    conversion   E 9 (1)
 amy@siroe.edu rfc822;bert@sesta.com bert@sesta.com
 imta/queue/conversion/ZZ01IT5UAMZ4QW98518O.00
 <01IT5UALL14498518O@siroe.edu>

04-Feb-1998 00:06:29.06 conversion   l            E 9 (2)
 amy@siroe.edu rfc822;bert@sesta.com bert
 imta/queue/l/ZZ01IT5UAOXLDW98509E.00  <01IT5STUMUFO984Z8L@siroe.edu>

04-Feb-1998 00:06:29.31 conversion                D 9 (3)
 amy@siroe.edu rfc822;bert@sesta.com bert
 imta/queue/conversion/ZZ01IT5UAMZ4QW98518O.00
 <01IT5UALL14498518O@siroe.edu>

04-Feb-1998 00:06:32.62 l                         D 9 (4)
 amy@siroe.edu rfc822;bert@siroe.com bert
 imta/queue/l/ZZ01IT5UAOXLDW98509E.00
 <01IT5STUMUFO984Z8L@siroe.edu>

  1. 來自外部使用者 amy@siroe.edu 的郵件進入,其收件者位址為 l 通道收件者 bert@sesta.com 的位址。但是,CONVERSIONS 對映項目使郵件最初在轉換通道中形成佇列 (而不是直接進入 l 通道)。
  2. 轉換通道執行郵件並讓郵件在 l 通道中形成佇列。
  3. 然後轉換通道可將郵件移出佇列 (刪除舊郵件檔案)。
  4. 最後,l 通道將郵件移出佇列 (遞送)。

程式碼範例 20-9 說明了透過 LOG_CONNECTION=3 啟用連線記錄後外送郵件的日誌輸出。在本範例中還假定了 LOG_PROCESS=1LOG_MESSAGE_ID=1LOG_FILENAME=1。本範例顯示了使用者 adam@sesta.com 將同一郵件 (請注意每個郵件副本的郵件 ID 都相同) 傳送給三個收件者 bobby@hosta.sesta.comcarl@hosta.sesta.comdave@hostb.sesta.com 的情況。本範例假定郵件從標有 (如此類通道通常的那樣) single_sys 通道關鍵字的 tcp_local 通道發出。因此,如 (1)、(2) 和 (3) 中所示,系統將在磁碟上為不同主機名稱的每組收件者分別建立郵件檔案,其中 bobby@hosta.sesta.comcarl@hosta.sesta.com 收件者儲存在同一郵件檔案中,而 dave@hostb.sesta.com 收件者儲存在不同的郵件檔案中。

程式碼範例 20-9 記錄:外送連線記錄

 

19-Feb-1998 10:52:05.41 1e488.0 l            tcp_local    E 1

 adam@sesta.com rfc822;bobby@hosta.sesta.com bobby@hosta.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00                (1)

  <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:05.41 1e488.0 l            tcp_local    E 1

 adam@sesta.com rfc822;carl@hosta.sesta.com carl@hosta.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00                (2)

  <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:05.74 1e488.1 l            tcp_local    E 1

 adam@sesta.com rfc822;dave@hostb.sesta.com dave@hostb.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7C11FU000FCN.00                 (3)

  <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:10.79 1f625.2.0 tcp_local    -            O (4)

 TCP|206.184.139.12|5900|206.184.139.66|25

 SMTP/hostb.sesta.com/mailhub.sesta.com                       (5)

19-Feb-1998 10:52:10.87 1f625.3.0 tcp_local    -            O (6)

 TCP|206.184.139.12|5901|206.184.139.70|25

 SMTP/hosta.sesta.com/hosta.sesta.com                         (7)

19-Feb-1998 10:52:12.28 1f625.3.1 tcp_local                  D 1

 adam@sesta.com rfc822;bobby@hosta.sesta.com bobby@hosta.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00

  <01ITRF7BDHS6000FCN@SESTA.COM>

 hosta.sesta.com dns;hosta.sesta.com                          (8)

 (TCP|206.184.139.12|5901|206.184.139.70|25)

 (hosta.sesta.com -- Server ESMTP [iMS V5.0 #8790])

 (TCP|206.184.139.12|5901|206.184.139.70|25)

 smtp;250 2.1.5 bobby@hosta.sesta.com and options OK.

19-Feb-1998 10:52:12.28 1f625.3.1 tcp_local                  D 1

 adam@sesta.com rfc822;carl@hosta.sesta.com carl@hosta.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00

  <01ITRF7BDHS6000FCN@SESTA.COM>

 hosta.sesta.com dns;hosta.sesta.com

 (TCP|206.184.139.12|5901|206.184.139.70|25)

 (hosta.sesta.com -- Server ESMTP [iMS V5.0 #8790])

 (TCP|206.184.139.12|5901|206.184.139.70|25)

 smtp;250 2.1.5 carl@hosta.sesta.com and options OK.

19-Feb-1998 10:52:12.40 1f625.3.2 tcp_local      -            C (9)

 TCP|206.184.139.12|5901|206.184.139.70|25

 SMTP/hosta.sesta.com/hosta.sesta.com

19-Feb-1998 10:52:13.01 1f625.2.1 tcp_local                  D 1

 adam@sesta.com rfc822;dave@hostb.sesta.com dave@hostb.sesta.com

 imta/queue/tcp_local/ZZ01ITRF7C11FU000FCN.00

  <01ITRF7BDHS6000FCN@SESTA.COM>

 mailhub.sesta.com dns;mailhub.sesta.com

 (TCP|206.184.139.12|5900|206.184.139.66|25)

 (MAILHUB.SESTA.COM -- Server ESMTP [iMS V5.0 #8694])

 (TCP|206.184.139.12|5900|206.184.139.66|25)

 smtp;250 2.1.5 dave@hostb.sesta.com and options OK.

19-Feb-1998 10:52:13.05 1f625.2.2 tcp_local      -            C (10)

 TCP|206.184.139.12|5900|206.184.139.66|25

 SMTP/hostb.sesta.com/mailhub.sesta.com

  1. 郵件已形成佇列,準備傳送給第一個收件者...
  2. ....準備傳送給第二個收件者...
  3. ....準備傳送給第三個收件者。
  4. 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。減號 - 表示此項目指外送連線。O 表示此項目對應於連線的開啟作業。同時請注意,儘管此開啟作業由執行緒 2 和執行緒 3 來執行,但由於多執行緒的 TCP/IP 通道使用同一程序來開啟這些單獨的連線,因此此處的程序 ID 相同 (均為 1f625)。
  5. 由於要連線到兩個不同的遠端系統,因此不同執行緒中的多執行緒 SMTP 用戶端將開啟與每個系統的連線 ─ 第一個顯示在本項目中,第二個顯示在 7 中。項目的此部分顯示了傳送和目標 IP 號碼以及埠號碼,並顯示了初始主機名稱和透過進行 DNS 查詢找到的主機名稱。在 SMTP/initial-host/dns-host 子句中,請注意初始主機名稱和在初始主機名稱上執行 DNS MX 記錄查詢後所使用的主機名稱的顯示:mailhub.sesta.com 顯然是 hostb.sesta.com 的 MX 伺服器。
  6. 多執行緒的 SMTP 用戶端在不同的執行緒 (儘管程序相同) 中開啟與第二個系統的連線。
  7. 由於要連線到兩個不同的遠端系統,不同執行緒中的多執行緒 SMTP 用戶端將開啟與每個系統的連線 ─ 第二個顯示在本項目中,第一個顯示在上面的 5 中。項目的此部分顯示了傳送和目標 IP 號碼以及埠號碼,並顯示了初始主機名稱和透過進行 DNS 查詢找到的主機名稱。在本範例中,系統 hosta.sesta.com 顯然自己直接接收郵件。
  8. 除了產生特定的連線項目外,LOG_CONNECTION=3 還可將與連線相關的資訊包括進一般郵件項目中,如此處所示。
  9. 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。當所有郵件 (本範例中的 bobby 和 carl 郵件) 都被移出佇列後,系統將關閉連線,如此項目中的 C 所表示。
  10. 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。所有郵件 (本範例中的 dave 郵件) 移出佇列後,系統將關閉連線,如此項目中的 C 所表示。

程式碼範例 20-10 說明了透過 LOG_CONNECTION=3 啟用連線記錄後送進的 SMTP 郵件的日誌輸出。

程式碼範例 20-10 記錄:內送連線記錄

19-Feb-1998 17:02:08.70 tcp_local    +            O   (1)
 TCP|206.184.139.12|25|192.160.253.66|1244 SMTP       (2)

19-Feb-1998 17:02:26.65 tcp_local    l             E 1
 service@siroe.com rfc822;adam@sesta.com adam
 THOR.SIROE.COM (THOR.SIROE.COM [192.160.253.66])      (3)

19-Feb-1998 17:02:27.05 tcp_local    +             C   (4)
 TCP|206.184.139.12|25|192.160.253.66|1244 SMTP

19-Feb-1998 17:02:31.73 l                          D 1
 service@siroe.com rfc822;adam@sesta.com adam

  1. 遠端系統開啟一個連線。字元 O 表示此項目與連線的開啟有關;字元 + 表示此項目與送進的連線有關。
  2. 顯示連線的 IP 號碼和連接埠。在此項目中,接收系統 (建立日誌檔項目的系統) 的 IP 位址為 206.184.139.12 並且連線到連接埠 25;傳送系統的 IP 位址為 192.160.253.66 並從連接埠 1244 傳送。
  3. 在從送進的 TCP/IP 通道 (tcp_local) 到 l 通道收件者形成佇列的郵件的項目中,請注意由於啟用了 LOG_CONNECTION=3 而包含預設值以外的資訊。特別是,傳送系統在其 HELO 或 EHLO 線路上使用的名稱、在連線 IP 號碼上由 DNS 反向查詢找到的傳送系統名稱,以及傳送系統的 IP 位址均被記錄下來;如需有關對影響此行為的通道關鍵字的論述,請參閱第 12 章「配置通道定義」
  4. 內送連線已關閉。字元 C 表示此項目與連線的關閉有關;字元 + 表示此項目與送進的連線有關。

派送程式除錯和日誌檔

派送程式錯誤和除錯輸出 (如果已啟用) 將被寫入 MTA 日誌目錄中的 dispatcher.log 檔案。

可以使用派送程式配置檔案中的 DEBUG 選項,或在每個程序上使用 IMTA_DISPATCHER_DEBUG 環境變數 (UNIX) 啟用除錯輸出。

DEBUG 選項或 IMTA_DISPATCHER_DEBUG 環境變數 (UNIX) 將以十六進位定義 32 位元除錯遮罩。透過將選項設定為 -1,或透過將整個系統的邏輯或環境變數定義為值 FFFFFFFF,來啟用所有除錯。表格 20-7 中描述了每個位元的實際意義。

表格 20-7 派送程式除錯位元  

位元

十六進位值

十進位值

用法

 

0

x 00001

1

基本服務派送程式主模組除錯。

1

x 00002

2

附加服務派送程式主模組除錯。

2

x 00004

4

服務派送程式配置檔案記錄。

3

x 00008

8

基本服務派送程式其他除錯。

4

x 00010

16

基本服務除錯。

5

x 00020

32

附加服務除錯。

6

x 00040

64

程序相關服務除錯。

7

x 00080

128

未使用。

8

x 00100

256

基本服務派送程式和程序通訊除錯。

9

x 00200

512

附加服務派送程式和程序通訊除錯。

10

x 00400

1024

資料封包級別通訊除錯。

11

x 00800

2048

未使用。

12

x 01000

4096

基本工作程序除錯。

13

x 02000

8192

附加工作程序除錯。

14

x 04000

16384

其他工作程序除錯,特別是連線切換。

15

x 08000

32768

未使用。

16

x 10000

65536

基本工作程序到服務派送程式 I/O 除錯。

17

x 20000

131072

附加工作程序到服務派送程式 I/O 除錯。

20

x 100000

1048576

基本統計資料除錯。

21

x 200000

2097152

附加統計資料除錯。

24

x 1000000

16777216

將 PORT_ACCESS 拒絕情況記錄到 dispatcher.log 檔案中。

Solaris 上的系統參數

系統的堆疊大小 (datasize) 必須能夠滿足派送程式的執行緒堆疊使用。對每個派送程式服務計算 STACKSIZE*MAX_CONNS,然後把每項服務的計算值相加。系統的堆疊大小必須至少是此數量的兩倍。

派送程式配置檔案中提供的派送程式服務將影響各種系統參數的需求。

若要顯示堆疊大小 (即預設 datasize),請使用 csh 指令:

# limit

ksh 指令

# ulimit -a

或公用程式

# sysdef



上一個      目錄      索引      下一個     


Copyright 2004 Sun Microsystems, Inc.。版權所有。