Sun ONE Messaging Server 6.0 管理員指南 |
第 17 章
記錄和日誌分析Messaging Server 可以建立日誌檔,該日誌檔記錄與伺服器的管理、使用伺服器支援的任何協定 (SMTP、POP、IMAP 和 HTTP) 的通訊以及伺服器使用的其他程序相關的事件。透過檢查日誌檔,您可以監視伺服器作業的很多方面。
由於 MTA 使用了有別於其他服務的獨立記錄工具,所以您無法使用主控台來配置記錄服務以及檢視日誌。作為替代,您可以透過指定配置檔案中的資訊來配置 MTA 記錄。因此本章分為三個部分。第一部分描述一般介紹性資訊;第二部分描述郵件儲存和管理服務的記錄;第三部分描述 MTA 服務的記錄。
第 1 部分:介紹您可以自訂建立和管理 Messaging Server 日誌檔的策略。本章描述了日誌檔的類型和結構,並論述了如何管理以及如何檢視日誌檔。包含以下各節:
記錄服務
Messaging Server 為其支援的每個主要協定或服務都建立了獨立的日誌檔集。這些日誌檔位於 msg_svr_base/data/log 中。您可以個別地自訂和檢視每種日誌檔類型。表格 17-1 列示了可以記錄的服務,並描述了每種服務的日誌檔。
使用協力廠商工具分析日誌
對於超過 Messaging Server 功能範圍的日誌分析和報告產生,您需要使用其他工具。您可以自行使用文字編輯器或標準系統工具處理日誌檔。
使用支援常規表示式剖析的可編寫文字編輯器,您可以根據本章中論述的任何準則搜尋和擷取日誌項目,並可以對結果進行排序,甚至還可以產生總數或其他統計資料。
在 UNIX 環境中,您還可以修改和使用現有報告產生工具,這些工具是為處理 UNIX syslog 檔案而開發的。如果您希望使用公用網域 syslog 處理工具,請記住您可能需要修改此工具以解釋不同的日期/時間格式,以及顯示在 Messaging Server 日誌項目中但未顯示在 syslog 項目中的兩個附加元件 (工具和日誌級別)。
第 2 部分:服務日誌 (郵件儲存、管理伺服器和 MTA)本節描述了以下服務的記錄:POP、IMAP、HTTP、MTA、Admin 和 Default (請參見表格 17-1)。
對於這些服務,您可以使用主控台來指定日誌設定和檢視日誌。您指定的設定將影響所記錄的事件以及事件的數量。分析日誌檔時,您可以使用這些設定和其他特性來完善對記錄事件的搜尋。如需有關 MTA 的服務日誌的其他資訊,請參閱第 3 部分:服務日誌 (MTA)。
第 2 部分包含以下各節:
日誌特性
本節描述了郵件儲存和管理服務的以下日誌特性:記錄級別、記錄事件的類別、日誌的檔案名稱慣例和日誌檔目錄。
記錄級別
記錄的級別或優先順序定義了記錄作業的詳細程度或冗長度。高優先順序意味著較簡略;它意味著僅記錄具有高優先順序 (高嚴重程度) 的事件。低級別意味著更為詳細;它意味著將在日誌檔中記錄更多事件。
您可以透過設定 logfile.service.loglevel 配置參數來為每種服務 (POP、IMAP、HTTP、Admin 和 Default) 單獨設定記錄級別 (請參閱定義和設定記錄選項)。您還可以使用記錄級別來過濾對日誌事件的搜尋。表格 17-2 對可用級別進行了描述。這些記錄級別是由 UNIX syslog 工具定義的那些級別的子集。
當選取特定記錄級別時,與該級別以及高於該級別 (較低冗長度) 的所有級別相對應的事件均被記錄。記錄的預設級別為通知。
註
指定的記錄越冗長,日誌檔將佔用的磁碟空間就越大;有關指南,請參閱定義和設定記錄選項。
記錄事件的類別
在每個支援的服務或協定中,Messaging Server 將根據記錄事件所發生的工具或功能區對記錄事件進一步進行分類。每個記錄事件都包含產生該事件的工具的名稱。這些類別將有助於在搜尋過程中過濾事件。表格 17-3 列示了 Messaging Server 可辨識的用於進行記錄的類別。
如需在日誌搜尋中將類別用作過濾器的範例,請參閱搜尋和檢視日誌。
郵件儲存和管理日誌的檔案名稱慣例
POP、IMAP、HTTP、Admin 和 Default 服務的日誌檔使用完全相同的命名慣例。每個日誌檔都具有以下形式的檔案名稱:
服務.序列號.時間標記
表格 17-4 列示了郵件儲存日誌檔名稱慣例。
例如,名為 imap.63.915107696 的日誌檔是指 IMAP 日誌檔目錄中建立的第 63 個日誌檔,建立於 1998 年 12 月 31 日下午 12:34:56。
開放式序列號與時間標記的組合讓您在循環、終止和選取用於分析的檔案時具有更大的靈活性。如需更多具體的建議,請參閱定義和設定記錄選項。
日誌檔目錄
每項記錄服務均被指定了單一的目錄,其中儲存該服務的日誌檔。所有 IMAP 日誌檔均儲存在一起,所有 POP 日誌檔及其他服務的日誌檔也是如此。您可以定義每個目錄的位置,也可以定義目錄的最大空間以及該空間中允許存在的日誌檔的最大數量。
請確定儲存容量足夠容納所有日誌檔。日誌資料可能量很大,尤其是在較低 (較高冗長度) 的記錄級別中。
同時,定義適當的記錄級別、日誌循環、日誌有效期和伺服器備份策略也很重要,這可以備份所有日誌檔目錄並使這些目錄都不會過載;否則,就可能遺失資訊。請參閱定義和設定記錄選項。
日誌檔格式
由 Messaging Server 建立的所有郵件儲存和管理服務日誌檔都具有完全相同的內容格式。日誌檔是多行文字檔案,其中每行描述一個記錄事件。對於每項支援的服務,所有事件描述都具有通用格式:
dateTime hostName processName[pid]:category logLevel:eventMessage
表格 17-5 列示了日誌檔元件。請注意,除了日期/時間格式不同以及此格式包括兩個附加元件 (類別和日誌級別) 以外,此事件描述的格式與 UNIX syslog 工具定義的格式完全相同。
表格 17-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。
類別
事件所屬的類別:例如,一般 (請參見表格 17-3)。
日誌級別
事件所代表的記錄級別:例如,通知 (請參見表格 17-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 connect03/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 0IMAP 和 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 值
其中 service是 admin、pop、imap、imta 或 http,值 是 user、mail、daemon、local0 至 local7 或 none。
如果設定了值,則系統會將訊息記錄到與設定值相應的系統日誌工具並忽略所有其他日誌檔服務選項。如果未設定此選項或值為 none,則記錄將使用 Messaging Server 日誌檔。
- 開啟要設定其日誌檔選項的 Messaging Server。
- 按一下 [配置] 標籤,開啟左側窗格中的 [日誌檔] 資料夾,並選取某服務 (如 IMAP、HTTP 或 Admin) 的日誌檔。
- 從 [詳細資訊級別] 下拉式清單中,選擇記錄級別。
- 在 [日誌檔的目錄路徑] 欄位中,輸入要儲存日誌檔的目錄之名稱。
- 在 [每個日誌的檔案大小] 欄位中,輸入最大日誌檔大小。
- 在 [建立新日誌,每隔] 欄位中,為日誌循環排程輸入一個數字。
- 在 [每個目錄的日誌數量] 和 [當日誌存在時間超過] 欄位中,輸入日誌檔的最大數量和最長存在時間,以與您的備份排程協調。
- 在 [當總日誌大小超過] 欄位中,輸入您想要的總儲存空間限制。
- 在 [當可用磁碟空間低於] 欄位中,輸入您想要保留的最小可用磁碟空間容量。
指令行 若要在指令行設定記錄選項,請使用以下範例中所示的 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
其中服務是 admin、pop、imap、imta 或 http,日誌級別是 Nolog、Critical、Error、Warning、Notice、Information 或 Debug。
若要指定日誌檔的目錄路徑,請輸入:
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 數字
其中數字指定了一個以秒為單位的數量。
搜尋和檢視日誌
主控台提供了用於檢視郵件儲存和管理日誌資料的基本介面。它允許選取單個日誌檔,並允許對那些檔案中的日誌項目執行靈活的過濾搜尋。
對於給定的服務,日誌檔以時間先後次序列示。選擇要搜尋的日誌檔後,您可以透過指定搜尋參數來縮小對單個事件的搜尋範圍。
搜尋參數
以下是可以指定用於檢視日誌資料的搜尋參數:
- 時間段。您可以指定特定時間段的起始和結束時間以從該時間段中擷取事件,也可以指定天數 (目前日期之前) 進行搜尋。通常,您可以指定一個範圍以查看導致伺服器當機的記錄事件或在已知時間發生的其他事件。或者,您可以指定一天的範圍以僅查看目前日誌檔中今天的事件。
- 記錄的級別。您可以指定記錄級別 (請參閱記錄級別)。您可以選取特定的級別來揭露特定的問題;例如,選取 [緊急] 以查看伺服器當機的原因,或選取 [錯誤] 以查找失敗的協定呼叫。
- 工具。您可以指定工具 (請參閱記錄事件的類別)。如果您知道包含問題的功能區,則可以選取特定的工具;例如,如果確信伺服器當機涉及磁碟錯誤,則選取 [儲存],或如果問題在於 IMAP 協定指令錯誤,則選取 [協定]。
- 文字搜尋模式。您可以提供文字搜尋模式以進一步縮小搜尋範圍。您可以包括可表示為萬用字元類型搜尋的事件的任何元件 (請參閱日誌檔格式),如已知定義要擷取的某個事件或多個事件的事件時間、程序名稱、程序 ID 和事件訊息的任何部分 (如遠端主機名稱、功能名稱、錯誤編號等等)。
注意:搜尋區分大小寫。
檢視記錄時,組合記錄級別和工具的範例可能包括以下幾種:
指定搜尋和檢視結果
請按以下步驟使用給定服務的特定特性來搜尋記錄事件:
- 在主控台中,開啟希望檢查其日誌檔的 Messaging Server。
- 請執行以下任一步驟以顯示給定記錄服務的日誌檔 [內容] 標籤:
- 系統將顯示該記錄服務的 [內容] 標籤。
- 在 [日誌檔名稱] 欄位中,選取您要檢查的日誌檔。
- 按一下 [檢視選取的日誌] 按鈕以開啟 [日誌檢視器] 視窗。
- 在 [日誌檢視器] 視窗中,指定所需的搜尋參數 (已在前一節搜尋參數中描述)。
- 按一下 [更新] 以執行搜尋並將結果顯示在 [日誌項目] 欄位中。
第 3 部分:服務日誌 (MTA)MTA 提供了用於記錄形成佇列和移出佇列的每封郵件的工具。還提供了派送程式錯誤和除錯輸出。第 3 部分包含以下各節:
您可以控制每個通道上的記錄,也可以指定要記錄的所有通道上的郵件作業。在初始配置中,記錄在所有通道上均被停用。
啟用記錄使得 MTA 在每次郵件經由 MTA 通道時,都將一個項目寫入 mail.log* 檔案。如果您希望獲得有關正在經由 MTA (或經由特定通道) 的郵件數量的統計資料,或者研究其他問題 (如是否及何時傳送或遞送郵件) 時,此類日誌項目會很有用。
如果僅對收集有關經由少數特定 MTA 通道的郵件數量的統計資料感興趣,則可能希望僅啟用主要感興趣的那些 MTA 通道上的記錄通道關鍵字。許多站點傾向於在所有 MTA 通道上啟用記錄。特別是,如果您要嘗試追蹤問題,診斷某些問題的第一步是注意到郵件未進入您期望或預計的通道,對所有通道啟用記錄將有助於您研究此類問題。
啟用 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」。
- LOG_MESSAGE_ID。此選項提供項目與郵件的關聯關係。
- LOG_FILENAME。此選項便於立即發現特定郵件檔案遞送的重試次數,並在瞭解 MTA 是否將傳送給多個收件者的郵件分隔為磁碟上獨立的郵件檔案副本時會很有用。
- LOG_CONNECTION。此選項可使 MTA 記錄 TCP/IP 連線以及郵件通訊。依預設,系統將連線日誌項目寫入 mail.log* 檔案中,或者可以選擇將其寫入 connection.log* 檔案中;請參閱 SEPARATE_CONNECTION_LOG 選項。
- SEPARATE_CONNECTION_LOG。而此選項可用來指定將連線日誌項目寫入 connection.log 檔案中。
- LOG_PROCESS。與 LOG_CONNECTION 結合使用時,此選項按照程序 ID 提供連線項目與郵件項目的對應關係。
- LOG_USERNAME。此選項控制是否將與使郵件形成佇列的程序相關聯的使用者名稱儲存在 mail.log 檔案中。對於使用了 SASL (SMTP AUTH) 的 SMTP 提交,使用者名稱欄位將是經過認證的使用者名稱 (帶有星號字元字首)。
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
日誌項目顯示:
- 建立項目的日期與時間 (範例:19-Jan-1998 19:16:57.64)。
- 源通道的通道名稱 (在此範例中為 l)。
- 目標通道的通道名稱 (在此範例中為 tcp_local)。(對於 SMTP 通道,當啟用 LOG_CONNECTION 時,加號 (+) 表示內送到 SMTP 伺服器;減號 (-) 表示透過 SMTP 用戶端外送。)
- 項目的類型 (E);請參見表格 17-6。
- 郵件的大小 (1)。依預設以千位元組為單位表示,儘管使用 MTA 選項檔案中的 BLOCK_SIZE 關鍵字可以變更此預設值。
- 訊息封 From: 位址 (adam@sesta.com)。請注意帶有空訊息封 From: 位址的郵件 (如通知郵件),此欄位將為空白。
- 訊息封 To: 位址 (marlowe@siroe.com) 原始形式。
- 訊息封 To: 位址 (marlowe@siroe.com) 使用中 (目前) 形式。
- 遞送狀態 (僅適用於 SMTP 通道)。
表格 17-6 描述了記錄項目代碼。
LOG_CONNECTION、LOG_FILENAME、LOG_MESSAGE_ID、LOG_NOTARY、LOG_PROCESS 和 LOG_USERNAME 全部啟用後,格式將發生變化,如以下範例所示。(此範例日誌項目行已因印刷排版原因而換行;實際日誌項目將顯示在一個自然行上。)
除了上面已論述的那些欄位外,其中的附加欄位是:
- 執行通道程序的節點的名稱 (在本範例中為 HOSTA)。
- 程序 ID (以十六進位表示),其後是句號 (點) 字元和計數。如果這是多執行緒的通道項目 (例如 tcp_* 通道項目),則在程序 ID 和計數之間還會顯示執行緒 ID。在本範例中,程序 ID 是 2e2d.2.1。
- 郵件的 NOTARY (遞送收件者請求) 旗標,以整數表示 (在本範例中為 276)。
- MTA 佇列區域中的檔案名稱 (在本範例中為 /imta/queue/l/ZZ01IWFY9ELGWM00094D.00)。
- 郵件 ID (在本範例中為 <01IWFVYLGTS499EC9Y@siroe.com>)。
- 正在執行的程序的名稱 (在本範例中為 inetmail)。在 UNIX 上,對於派送程式程序 (如 SMTP 伺服器),此名稱通常為 inetmail (除非已使用 SASL)。
- 連線資訊 (在本範例中為 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_PROCESS 和 LOG_CONNECTION 的某級別。
以下範例顯示在本地使用者透過外送 TCP/IP 通道向外傳送郵件 (例如傳送到網際網路) 的情況下,可能看到的日誌項目種類的相當基本的範例。在本範例中,啟用了 LOG_CONNECTION。標有 (1) 和 (2) 的行是一個項目 - 它們在實際日誌檔中將顯示在一個自然行上。同樣,標有 (3) - (7) 的行是一個項目並將顯示在一個自然行上。
程式碼範例 17-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) 封郵件從 l 通道到 tcp_local 通道形成佇列 (E) 的日期與時間。
- 此行是與 (1) 位於同一日誌檔自然行的一部分,為了印刷排版方便而在此處分行顯示。此行顯示了訊息封 From: 位址 (在本例中為 adam@sesta.com) 以及原來版本和目前版本的訊息封 To: 位址 (在本例中為 marlowe@siroe.com)。
- 此行顯示了一 (1) 封郵件從 tcp_local 通道移出佇列 (D) 的日期與時間 - 即,由 tcp_local 通道成功傳送到某遠端 SMTP 伺服器。
- 此行顯示了訊息封 From: 位址、原來訊息封 To: 位址和訊息封 To: 位址的目前形式。
- 此行顯示了與之建立連線的 DNS 中的實際系統名為 thor.siroe.com,本地傳送系統具有 IP 位址 206.184.139.12 並從連接埠 2788 傳送,遠端目標系統具有 IP 位址 192.160.253.66 並且遠端目標系統的連線連接埠是連接埠 25。
- 此行顯示了遠端 SMTP 伺服器的 SMTP 大標題行。
- 此行顯示了傳回的此位址的 SMTP 狀態代碼;250 是基本的 SMTP 成功代碼,而且,此遠端 SMTP 伺服器使用延伸的 SMTP 狀態代碼和某附加文字進行回應。
程式碼範例 17-2 顯示了類似於程式碼範例 17-3 中所示的日誌項目,但透過設定顯示檔案名稱和郵件 ID 的 LOG_FILENAME=1 和 LOG_MESSAGE_ID=1 記錄了附加資訊;請參閱 (1) 和 (2)。特別是郵件 ID 可用於建立項目與郵件的關聯關係。
程式碼範例 17-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.
程式碼範例 17-3 對啟用 LOG_FILENAME=1、LOG_MESSAGE_ID=1 和 LOG_CONNECTION=1 將郵件傳送給多個收件者進行了說明。此處已將使用者 adam@sesta.com 傳送給 MTA 郵件收件人清單 test-list@sesta.com,此郵件收件人清單已擴展到 bob@sesta.com、carol@varrius.com 和 david@varrius.com。請注意每個收件者的原來訊息封 To: 位址是 test-list@sesta.com,儘管目前訊息封 To: 位址是每個收件者各自的位址。請注意,儘管涉及兩個單獨的檔案 (一個針對 l 通道而另一個針對外送 tcp_local 通道),郵件 ID 卻始終保持一致。
程式碼範例 17-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.
程式碼範例 17-4 對嘗試傳送到不存在的網域 (此處為 very.bogus.com) 進行了說明;即,傳送到未被 MTA 的重寫規則注意到其不存在的、並且被 MTA 匹配到外送 TCP/IP 通道的網域名稱。此範例假定 MTA 選項設定為 LOG_FILENAME=1 和 LOG_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)。
程式碼範例 17-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>
程式碼範例 17-5 對嘗試傳送到遠端系統上的不正確位址進行了說明。此範例假定 MTA 選項設定為 LOG_FILENAME=1 和 LOG_MESSAGE_ID=1,通道選項設定為 LOG_BANNER=1 和 LOG_TRANSPORTINFO=1。請注意 (1) 中所示的拒絕項目 (R)。但與程式碼範例 17-4 中的拒絕項目相比,請注意此處的拒絕項目顯示已建立與遠端系統的連線,並顯示遠端 SMTP 伺服器發出的 SMTP 錯誤代碼,(2) 和 (3)。(2) 中所示的資訊是設定通道選項 LOG_BANNER=1 和 LOG_TRANSPORTINFO=1 的結果。
程式碼範例 17-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>
程式碼範例 17-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 被拒絕。
程式碼範例 17-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)
- 此日誌顯示了 MTA 拒絕遠端提交郵件的嘗試的日期與時間。拒絕以 J 記錄表示。(MTA 通道嘗試傳送被拒絕的郵件的情況以 R 記錄表示,如程式碼範例 17-4 和程式碼範例 17-5 所示。)
- 顯示了嘗試的訊息封 From: 和 To: 位址。在此例中,無可用的原來訊息封 To: 資訊,因此該欄位為空白。
- 此項目包括 MTA 發給遠端 (嘗試的寄件者) 的 SMTP 錯誤訊息。
程式碼範例 17-7 對由於無法在第一次嘗試中遞送郵件,因此 MTA 多次嘗試傳送該郵件時所產生的日誌檔項目種類進行了說明。本範例假定選項設定為 LOG_FILENAME=1 和 LOG_MESSAGE_ID=1。
程式碼範例 17-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
- 郵件進入 tcp_internal 通道 可能來自 POP 或 IMAP 用戶端,也可能來自使用 MTA 作為 SMTP 中繼器的組織中的其他主機;MTA 將其在 tcp_local 外送通道中形成佇列。
- 第一次遞送嘗試失敗,如 Q 項目所示。
- 從 ZZ* 檔案名稱可以看出這是第一次遞送嘗試。
- TCP/IP 套裝軟體找不到至遠端的路由時,此遞送嘗試將失敗。與程式碼範例 17-4 相反,DNS 並不反對目標網域名稱 some.org;相反,「no route to host」錯誤表示在傳送端和接收端之間出現某網路問題。
- 下一次 MTA 作為定期工作執行時,它再次嘗試遞送,但再次失敗。
- 此檔案名稱現在是 ZY*,表示這是第二次嘗試。
- 第三次失敗嘗試的檔案名稱是 ZX*。
- 下一次定期工作再次嘗試遞送,遞送失敗,儘管這一次 TCP/IP 套裝軟體未對無法連通遠端 SMTP 伺服器表示不滿,但其實是遠端 SMTP 伺服器不接受連線。(可能遠端修正了其網路問題,但尚未備份其 SMTP 伺服器 - 或其 SMTP 伺服器正忙於處理其他郵件而無法在 MTA 嘗試連線時接受連線。)
- 最終郵件被移出佇列。
程式碼範例 17-8 對透過轉換通道路由郵件的情況進行了說明。假定此站點具有 CONVERSIONS 對映表,如:
CONVERSIONS
IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT Yes
本範例假定選項設定為 LOG_FILENAME=1 和 LOG_MESSAGE_ID=1。
程式碼範例 17-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>
程式碼範例 17-9 說明了透過 LOG_CONNECTION=3 啟用連線記錄後外送郵件的日誌輸出。在本範例中還假定了 LOG_PROCESS=1、LOG_MESSAGE_ID=1 和 LOG_FILENAME=1。本範例顯示了使用者 adam@sesta.com 將同一郵件 (請注意每個郵件副本的郵件 ID 都相同) 傳送給三個收件者 bobby@hosta.sesta.com、carl@hosta.sesta.com 和 dave@hostb.sesta.com 的情況。本範例假定郵件從標有 (如此類通道通常的那樣) single_sys 通道關鍵字的 tcp_local 通道發出。因此,如 (1)、(2) 和 (3) 中所示,系統將在磁碟上為不同主機名稱的每組收件者分別建立郵件檔案,其中 bobby@hosta.sesta.com 和 carl@hosta.sesta.com 收件者儲存在同一郵件檔案中,而 dave@hostb.sesta.com 收件者儲存在不同的郵件檔案中。
程式碼範例 17-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
- 郵件已形成佇列,準備傳送給第一個收件者...
- ....準備傳送給第二個收件者...
- ....準備傳送給第三個收件者。
- 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。減號 - 表示此項目指外送連線。O 表示此項目對應於連線的開啟作業。同時請注意,儘管此開啟作業由執行緒 2 和執行緒 3 來執行,但由於多執行緒的 TCP/IP 通道使用同一程序來開啟這些單獨的連線,因此此處的程序 ID 相同 (均為 1f625)。
- 由於要連線到兩個不同的遠端系統,因此不同執行緒中的多執行緒 SMTP 用戶端將開啟與每個系統的連線 第一個顯示在本項目中,第二個顯示在 7 中。項目的此部分顯示了傳送和目標 IP 號碼以及連接埠號,並顯示了初始主機名稱和透過進行 DNS 查找找到的主機名稱。在 SMTP/initial-host/dns-host 子句中,請注意初始主機名稱和在初始主機名稱上執行 DNS MX 記錄查找後所使用的主機名稱的顯示:mailhub.sesta.com 顯然是 hostb.sesta.com 的 MX 伺服器。
- 多執行緒的 SMTP 用戶端在不同的執行緒 (儘管程序相同) 中開啟與第二個系統的連線。
- 由於要連線到兩個不同的遠端系統,不同執行緒中的多執行緒 SMTP 用戶端將開啟與每個系統的連線 第二個顯示在本項目中,第一個顯示在上面的 5 中。項目的此部分顯示了傳送和目標 IP 號碼以及連接埠號,並顯示了初始主機名稱和透過進行 DNS 查找找到的主機名稱。在本範例中,系統 hosta.sesta.com 顯然自己直接接收郵件。
- 除了產生特定的連線項目外,LOG_CONNECTION=3 還可將與連線相關的資訊包括進一般郵件項目中,如此處所示。
- 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。當所有郵件 (本範例中的 bobby 和 carl 郵件) 都被移出佇列後,系統將關閉連線,如此項目中的 C 所表示。
- 設定 LOG_CONNECTION=3 將使 MTA 寫入此項目。所有郵件 (本範例中的 dave 郵件) 移出佇列後,系統將關閉連線,如此項目中的 C 所表示。
程式碼範例 17-10 說明了透過 LOG_CONNECTION=3 啟用連線記錄後進來 SMTP 郵件的日誌輸出。
程式碼範例 17-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
- 遠端系統開啟一個連線。字元 O 表示此項目與連線的開啟有關;字元 + 表示此項目與進來的連線有關。
- 顯示連線的 IP 號碼和連接埠。在此項目中,接收系統 (建立日誌檔項目的系統) 的 IP 位址為 206.184.139.12 並且連線到連接埠 25;傳送系統的 IP 位址為 192.160.253.66 並從連接埠 1244 傳送。
- 在從進來的 TCP/IP 通道 (tcp_local) 到 l 通道收件者形成佇列的郵件的項目中,請注意由於啟用了 LOG_CONNECTION=3 而包含預設值以外的資訊。特別是,傳送系統在其 HELO 或 EHLO 線路上使用的名稱、在連線 IP 號碼上由 DNS 反向查找找到的傳送系統名稱,以及傳送系統的 IP 位址均被記錄下來;如需有關對影響此行為的通道關鍵字的論述,請參閱第 10 章「配置通道定義」。
- 內送連線已關閉。字元 C 表示此項目與連線的關閉有關;字元 + 表示此項目與進來的連線有關。
派送程式除錯和日誌檔
派送程式錯誤和除錯輸出 (如果已啟用) 將被寫入 MTA 日誌目錄中的 dispatcher.log 檔案。
可以使用派送程式配置檔案中的 DEBUG 選項,或在每個程序上使用 IMTA_DISPATCHER_DEBUG 環境變數 (UNIX) 啟用除錯輸出。
DEBUG 選項或 IMTA_DISPATCHER_DEBUG 環境變數 (UNIX) 將以十六進位定義 32 位元除錯遮罩。透過將選項設定為 -1,或透過將整個系統的邏輯或環境變數定義為值 FFFFFFFF,來啟用所有除錯。表格 17-7 中描述了每個位元的實際意義。
表格 17-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