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

附錄 A SNMP 支援

Messaging Server 支援透過簡易網路管理協定 (SNMP) 進行系統監視。使用 SNMP 用戶端 (有時稱為網路管理員),如 Sun Net Manager 或 HP OpenView (本產品未隨附),可以監視 Messaging Server 的某些部分。如需有關監視 Messaging Server 的更多資訊,請參閱第 23 章, 監視 Messaging Server

本章說明如何啟用 Messaging Server SNMP 支援。它還簡要介紹了 SNMP 提供的資訊類型。請注意,本章未說明如何從 SNMP 用戶端檢視此資訊。請參閱您的 SNMP 用戶端說明文件,以取得有關如何使用此用戶端檢視基於 SNMP 之資訊的詳細資訊。本文件還說明可從 Messaging Server SNMP 實作中取得的某些資料,但完整的 MIB 詳細資訊可從 RFC 2788RFC 2789 取得。

本章包含以下各節:

SNMP 實作

Messaging Server 實作兩種標準化的 MIB,即網路服務監視 MIB (RFC 2788) 和郵件監視 MIB (RFC 2789)。網路服務監視 MIB 提供對網路服務 (例如 POP、IMAP、HTTP 和 SMTP 伺服器) 的監視。郵件監視 MIB 提供對 MTA 的監視。郵件監視 MIB 允許監視每個 MTA 通道的使用中狀態和歷史狀態。使用中資訊主要是指目前形成佇列的郵件和開放式網路連線 (例如,形成佇列的郵件之計數,以及開放式網路連線的源 IP 位址),而歷史資訊則提供累計的總數 (例如,已處理的郵件總數,以及內送連線總數)。


備註 –

如需 Messaging Server SNMP 監視資訊的完整清單,請參閱 RFC 2788 和 RFC 2789。


執行 Solaris 8 和 9 的平台以及 Java Enterprise System 支援的所有 Microsoft Windows 版本均支援 SNMP。以後的版本中將有其他平台的支援。Solaris 上的 SNMP 支援使用原生 Solaris SNMP 技術 Solstice Enterprise Agents (SEA)。用戶不需要在 Solaris 8 系統上安裝 SEA:必要的執行階段程式庫已經存在。

Messaging Server SNMP 支援的限制如下:

Messaging Server 中的 SNMP 作業

在 Solaris 平台上,Messaging Server SNMP 程序是一個 SNMP 子代理程式,可以在啟動時將自身註冊到平台的原生 SNMP 主代理程式中。來自用戶端的 SNMP 請求將進入主代理程式。然後主代理程式將以 Messaging Server 為目標的所有請求轉寄至 Messaging Server 子代理程式程序。然後,Messaging Server 子代理程式程序會處理這些請求,並將回應透過主代理程式轉送回用戶端。此程序如圖 A–1 所示。

圖 A–1 SNMP 資訊流程

本圖顯示 SNMP 資訊流程。

在 Solaris 8 上,配置 Messaging Server SNMP 支援

儘管 SNMP 監視佔用的經常性耗用時間很短,但 Messaging Server 在出廠時仍停用了 SNMP 支援。若要啟用 SNMP 支援,請執行以下指令:


# su user-id-for-ims
# configutil -o local.snmp.enable -v 1
# start-msg snmp

一旦啟用 SNMP,start-msg 指令 (不指定任何參數) 將自動啟動 SNMP 子代理程式程序和其他 Messaging Server 程序。

請注意,Solaris 原生 SNMP 主代理程式必須處於執行狀態,以便 Messaging Server SNMP 子代理程式進行作業。Solaris 原生 SNMP 主代理程式是 snmpdx 常駐程式,通常做為 Solaris 啟動程序的一部分啟動。

SNMP 子代理程式將自動選取在其上偵聽的 UDP 連接埠。如果需要,您可以使用以下指令將固定的 UDP 連接埠指定給子代理程式:

# configutil -o local.snmp.port -v port-number

之後,您可以透過將連接埠號碼指定為零來還原此設定。零值 (預設設定) 告訴 Messaging Server 允許子代理程式自動選取任何可用的 UDP 連接埠。

/etc/snmp/conf 目錄中,有兩個 SNMP 子代理程式配置檔案:ims.acl (包含 SNMP 存取控制資訊) 和 ims.reg (包含 SNMP MIB OID 註冊資訊)。

通常無需編輯這兩個檔案。Messaging Server 實作的 MIB 是唯讀的,且無需在 ims.reg 檔案中指定連接埠號碼。如果您指定了連接埠號碼,則將使用該連接埠號碼,除非您還使用 configutil 公用程式設定了另一個連接埠號碼。在這種情況下,使用 configutil 設定的連接埠號碼是子代理程式將要使用的連接埠號碼。如果您要編輯這兩個檔案,則需要停止並重新啟動 SNMP 子代理程式,以使您的變更生效:


# stop-msg snmp
# start-msg snmp

備註 –

Messaging Server 如有啟用 SNMP 支援,則任何在 Solaris 10 作業系統上透過 SNMP 進行的查詢,均須連線至預設連接埠 16161。例如,若是使用開放原始碼 SNMP 工具 snmpwalk 查詢 Messaging Server 的網路/郵件統計,便應使用選項 -p 16161


從 SNMP 用戶端監視

RFC 2788RFC 2789 的基本 OID 為

mib-2.27 = 1.3.6.1.2.1.27

mib-2.28 = 1.3.6.1.2.1.28

將您的 SNMP 用戶端指向這兩個 OID 並將其做為「公用」SNMP 社群進行存取。

如果您要將 MIB 的副本載入您的 SNMP 用戶端,則應在 msg_svr_base/lib/config-templates 目錄中的 rfc2788.mibrfc2789.mib 檔案名稱下找出 MIB 的 ASCII 副本。如需有關將這些 MIB 載入您的 SNMP 用戶端軟體的指示,請參閱 SNMP 用戶端軟體說明文件。在這些 MIB 中使用的 SnmpAdminString 資料類型可能無法被某些較舊的 SNMP 用戶端識別。在這種情況下,請使用同一目錄中的等效檔案 rfc2248.mibrfc2249.mib

在 Unix 平台上與其他 Sun Java System 產品共同存在

其他可提供 SNMP 支援的 Netscape 或 Sun Java System 產品,也可以透過取代平台的原生 SNMP 主代理程式來做到這一點。如果您想在安裝 Messaging Server 的同一主機上執行這些 Sun Java System 產品並且希望透過 SNMP 同時監視它們,請按照「Managing Servers with iPlanet Console」第 11 章中的說明配置 Sun Java System 代理伺服器 SNMP 代理程式。這樣可允許 Messaging Server SNMP 子代理程式 (原生 SNMP 子代理程式) 與其他 Sun Java System 產品中的非原生 Sun Java System SNMP 子代理程式共同存在。

Messaging Server 的 SNMP 資訊

本小節簡要介紹透過 SNMP 提供的 Messaging Server 資訊。如需詳細資訊,請參閱 RFC 2788RFC 2789 中單獨的 MIB 表。請注意,RFC/MIB 術語將郵件傳送服務 (MTA、HTTP 等) 稱為應用程式 (appl),將 Messaging Server 網路連線稱為關聯 (assoc),將 MTA 通道稱為 MTA 群組 (mtaGroups)。

請注意,在可能有多個 Messaging Server 實例被同時監視的平台上,在 applTable 中可能有多組 MTA 和伺服器,在其他表格中有多個 MTA。


備註 –

重新啟動後,MIB 中報告的累計值 (例如已遞送的郵件總數、連線的 IMAP 總數等) 將被重設為零。


每個網站均有不同的臨界值和重要的監視值。運轉正常的 SNMP 用戶端可讓您進行趨勢分析,並可在歷史趨勢發生突然偏差時發出警示。

applTable

applTable 提供伺服器資訊。它是一維表格,其中一列用於 MTA,其他每一列用於以下每台伺服器 (如果已啟用):WebMail HTTP、IMAP、POP、SMTP 和 SMTP Submit。此表格提供版本資訊、正常執行時間、目前作業狀態 (up、down 和 congested)、目前連線數目、累計連線總數以及其他相關資料。

以下為 applTable (mib-2.27.1.1) 資料的範例:


            
applTable:

    applName.1  = mailsrv-1  MTA on mailsrv-1.west.sesta.com      (1)
    applVersion.1 = 5.1
    applUptime.1 = 7322                         (2)
    applOperStatus.1 = up                       (3)
    applLastChange.1 = 7422                     (2)
    applInboundAssociations.1 =                 (5)
    applOutboundAssociations.1 =                (2)
    applAccumulatedInboundAssociations.1 = 873
    applAccumulatedOutboundAssociations.1 = 234
    applLastInboundActivity.1 = 1054822          (2)
    applLastOutboundActivity.1 = 1054222         (2)
    applRejectedInboundAssociations.1 = 0        (4)
    applFailedOutboundAssociations.1 = 17
    applDescription.1 = Sun Java System Messaging Server 6.1
    applName.2 1 = mailsrv-1 HTTP WebMail svr. mailsrv-1.sesta.com (1)
    ...
    applName.3 = mailsrv-1 IMAP server on mailsrv-1.west.sesta.com
    ...
    applName.4 = mailsrv-1 POP server on mailsrv-1.west.sesta.com
    ...
    applName.5 = mailsrv-1 SMTP server on mailsrv-1.west.sesta.com
    ...
    applName.6 = mailsrv-1 SMTP Submit server on mailsrv-1.west.sesta.com
    ...

注意:

  1. 應用程式 (.appl*) 字尾 (.1 .2 等) 為列編號 applIndexapplIndex 具有值 1 表示 MTA,值 2 表示 HTTP 伺服器等等,因此在此範例中,表格的第一列提供 MTA 的資料,第二列提供 POP 伺服器的資料等等。

    等號後面的名稱是正在被監視的 Messaging Server 實例的名稱。在此範例中,實例名稱為 mailsrv-1。

  2. 這些是 SNMP 時間戳記值,也是事件發生時的 sysUpTime 值。sysUpTime 依次為自啟動 SNMP 主代理程式後以百分之一秒為單位的計數。

  3. HTTP、IMAP、POP、SMTP 和 SMTP Submit 伺服器的作業狀態,由透過它們的已配置 TCP 連接埠與這些伺服器的實際連線,以及使用相應協定 (例如,HTTP 的 HEAD 請求和回應、SMTP 的 HELO 指令和回應等) 執行的簡單作業來確定。透過此連線嘗試,可以確定每台伺服器的狀態為 (up [1]、down [2] 或 congested [4])。

    請注意,這些探測表面上是至伺服器的一般內送連線,並為每台伺服器提供 applAccumulatedInboundAssociations MIB 變數的值。

    對於 MTA,作業狀態即是工作控制器的作業狀態。如果 MTA 顯示為開啟,則工作控制器也為開啟。如果 MTA 顯示為關閉,則工作控制器也為關閉。此 MTA 作業狀態與 MTA 的服務派送程式的狀態無關。MTA 的作業狀態僅具有 up 值或 down 值。儘管工作控制器有「congested」的概念,但 MTA 狀態中沒有此概念。

  4. 對於 HTTP、IMAP 和 POP 伺服器,applRejectedInboundAssociations MIB 變數表示登入嘗試失敗的次數,而不是內送連線嘗試被拒絕的次數。

applTable 用法

監視每個列出應用程式的伺服器狀態 (applOperStatus) 是監視每台伺服器的關鍵。

如果自 MTA 最後一次內送活動 (由 applLastInboundActivity 表示) 至今已有很長一段時間,則可能是由於出現故障,從而無法進行連線。如果 applOperStatus=2 (down),則因為受監視的服務中斷。如果 applOperStatus=1 (up),則可能因為其他地方出現了問題。

assocTable

此表提供至 MTA 的網路連線資訊。它是二維表格,提供有關每個使用中網路連線的資訊。不提供其他伺服器的連線資訊。

以下為 applTable 資料的範例 (mib-2.27.2.1)。


assocTable:

    assocRemoteApplication.1.1  = 129.146.198.167        (1)
    assocApplicationProtocol.1.1 = applTCPProtoID.25     (2)
    assocApplicationType.1.1 = peerinitiator(3)          (3)
    assocDuration.1.1 = 400                              (4)
...

         

注意:

.x.y 字尾 (1.1) 中,x 是應用程式索引 (applIndex),表示 applTable 中正在被報告的應用程式。在此範例中為 MTA。y 用於列舉正在被報告的應用程式的每個連線。

  1. 遠端 SMTP 用戶端的源 IP 位址。

  2. 這是一個 OID,表示網路連線所使用的協定。aplTCPProtoID 表示 TCP 協定。.n 字尾表示使用中的 TCP 連接埠,.25 表示 SMTP 協定透過 TCP 連接埠 25 通訊。

  3. 無法瞭解遠端 SMTP 用戶端是使用者代理程式 (UA) 還是其他 MTA。因此,子代理程式始終報告 peer-initiator;而從不報告 ua-initiator

  4. 這是 SNMP TimeInterval,單位為百分之一秒。在此範例中,連線已開啟 4 秒鐘。

assocTable 用法

此表格用於診斷目前的問題。例如,如果您突然有 200,000 個內送連線,則此表格可讓您瞭解這些連線的來源。

mtaTable

這是一個一維表格,每一列均對應 applTable 中的每個 MTA。每列為 mtaGroupTable 中的選定變數提供該 MTA 中所有通道 (稱為群組) 的總數。

以下為 applTable (mib-2.28.1.1) 資料的範例:


mtaTable:

    mtaReceivedMessages.1 = 172778        
    mtaStoredMessages.1 = 19
    mtaTransmittedMessages.1 = 172815
    mtaReceivedVolume.1 = 3817744
    mtaStoredVolume.1 = 34
    mtaTransmittedVolume.1 = 3791155
    mtaReceivedRecipients.1 = 190055
    mtaStoredRecipients.1 = 21
    mtaTransmittedRecipients.1 = 3791134
    mtaSuccessfulConvertedMessages.1 = 0 (1)
    mtaFailedConvertedMessages.1 = 0
    mtaLoopsDetected.1 = 0               (2)

         

注意:

.x 字尾 (.1) 提供此應用程式在 applTable 中的列數。在此範例中,.1 表示此資料屬於 applTable 中的第一個應用程式。因此,這是 MTA 中的資料。

  1. 僅對轉換通道使用非零值。

  2. 計數目前儲存在 MTA 郵件佇列中的 .HELD 郵件檔案的數目。

mtaTable 用法

如果 mtaLoopsDetected 為非零值,則會出現迴圈郵件問題。找到並診斷 MTA 佇列中的 .HELD 檔案以解決該問題。

如果系統對轉換通道進行病毒掃描,並拒絕被感染的郵件,則 mtaSuccessfulConvertedMessages 除了提供其他轉換失敗的計數以外,還提供被感染郵件的計數。

mtaGroupTable

此二維表格提供 applTable 中每個 MTA 的通道資訊。此資訊包括儲存的 (即形成佇列) 和遞送的郵件訊息計數資料。監視每個通道的已儲存郵件計數 mtaGroupStoredMessages 很重要:當此值變得異常大時,說明正在佇列中備份郵件。

以下為 mtaGroupTable (mib-2.28.2.1) 資料的範例。


mtaGroupTable:

mtaGroupName.1.1 = tcp_intranet                1
        ...
mtaGroupName.1.2 = ims-ms
        ...
mtaGroupName.1.3 = tcp_local
    mtaGroupDescription.1.3 = mailsrv-1 MTA tcp_local channel
    mtaGroupReceivedMessages.1.3 = 12154
    mtaGroupRejectedMessages.1.3 = 0
    mtaGroupStoredMessages.1.3 = 2
    mtaGroupTransmittedMessages.1.3 = 12148
    mtaGroupReceivedVolume.1.3 = 622135
    mtaGroupStoredVolume.1.3 = 7
    mtaGroupTransmittedVolume.1.3 = 619853
    mtaGroupReceivedRecipients.1.3 = 33087
    mtaGroupStoredRecipients.1.3 = 2
    mtaGroupTransmittedRecipients.1.3 = 32817
    mtaGroupOldestMessageStored.1.3 = 1103
    mtaGroupInboundAssociations.1.3 = 5
    mtaGroupOutboundAssociations.1.3 = 2
    mtaGroupAccumulatedInboundAssociations.1.3 = 150262
    mtaGroupAccumulatedOutboundAssociations.1.3 = 10970
    mtaGroupLastInboundActivity.1.3 = 1054822
    mtaGroupLastOutboundActivity.1.3 = 1054222
    mtaGroupRejectedInboundAssociations.1.3 = 0
    mtaGroupFailedOutboundAssociations.1.3 = 0
    mtaGroupInboundRejectionReason.1.3 =
    mtaGroupOutboundConnectFailureReason.1.3 =
    mtaGroupScheduledRetry.1.3 = 0
    mtaGroupMailProtocol.1.3 = applTCPProtoID.25
    mtaGroupSuccessfulConvertedMessages.1.3 = 03     2
    mtaGroupFailedConvertedMessages.1.3 = 0
    mtaGroupCreationTime.1.3 = 0
    mtaGroupHierarchy.1.3 = 0
    mtaGroupOldestMessageId.1.3 = <01IFBV8AT8HYB4T6UA@red.iplanet.com>
    mtaGroupLoopsDetected.1.3 = 0                    3
    mtaGroupLastOutboundAssociationAttempt.1.3 = 1054222

         

注意:

.x.y 字尾 (例如:1.1, 1.2. 1.3) 中,x 為應用程式索引 (applIndex),表示 applTable 中正在被報告的應用程式。在此範例中為 MTA。y 用於列舉 MTA 中的每個通道。此列舉索引 (mtaGroupIndex) 還可用在 mtaGroupAssociationTablemtaGroupErrorTable 表格中。

  1. 所報告的通道名稱。在此範例中為 tcp_intranet 通道。

  2. 僅對轉換通道使用非零值。

  3. 計數目前儲存在此通道的郵件佇列中之 .HELD 郵件檔案的數目。

mtaGroupTable 用法

對 *Rejected* 和 *Failed* 的趨勢分析,可能有助於確定潛在的通道問題。

mtaGroupStoredVolume 對 mtaGroupStoredMessages 比率的突然增大意味著佇列附近正在退回大型垃圾郵件。

mtaGroupStoredMessages 的突然增大可能表示正在傳送未經請求的垃圾電子郵件,或該傳送由於某些原因而失敗。

如果 mtaGroupOldestMessageStored 的值大於無法遞送的郵件通知次數 (notices 通道關鍵字) 的值,則可能表示即使透過退回處理也無法處理該郵件。請注意,退回在每晚進行,因此您需要使用 mtaGroupOldestMessageStored > (最長存在時間 + 24 小時) 做為測試。

如果 mtaGroupLoopsDetected 大於 0,說明系統已偵測到郵件迴圈。

mtaGroupAssociationTable

這是三維表格,其項目是 assocTable 的索引。對於 applTable 中的每個 MTA,均有一個二維子表格。此二維子表格的每列分別用於相應 MTA 中的每個通道。對於每個通道,通道目前正在使用的每個使用中網路連線均有一個項目。該項目的值是 assocTable 的索引 (由項目的值以及正在被查看的 MTA 索引 applIndex 進行索引)。這表示 assocTable 中的項目是通道所擁有的網路連線。

簡單的說,mtaGroupAssociationTable 表格將 assocTable 中顯示的網路連線與 mtaGroupTable 中的相應通道相關聯。

以下為 mtaGroupAssociationTable (mib-2.28.3.1) 資料的範例。


mtaGroupAssociationTable:

    mtaGroupAssociationIndex.1.3.1 = 1 1
    mtaGroupAssociationIndex.1.3.2 = 2
    mtaGroupAssociationIndex.1.3.3 = 3
    mtaGroupAssociationIndex.1.3.4 = 4
    mtaGroupAssociationIndex.1.3.5 = 5
    mtaGroupAssociationIndex.1.3.6 = 6
    mtaGroupAssociationIndex.1.3.7 = 7

         

注意:

.x.y.z 後綴中,x 是應用程式索引 (applIndex),表示 applTable 中正在被報告的應用程式。在此範例中為 MTA。y 表示所報告的 mtaGroupTable 通道。在此範例中,3 表示 tcp_local 通道。z 用於列舉向通道開啟或來自通道的關聯。

  1. 此處的值是 assocTable 的索引。尤其是,x 和此值將分別成為 applIndexassocIndexassocTable 中的索引值。或者,這表示 (忽略 applIndex) assocTable 的第一列說明由 tcp_local 通道控制的網路連線。

mtaGroupErrorTable

這是另一個三維表格,它給出在嘗試傳送郵件時,每個 MTA 的每個通道遇到的臨時錯誤和永久性錯誤的計數。索引值為 4000000 的項目是臨時錯誤,索引值為 5000000 的項目是永久性錯誤。臨時錯誤導致將郵件重新形成佇列,以便稍後嘗試遞送;永久性錯誤導致郵件被拒絕或作為無法遞送的郵件被傳回。

以下為 mtaGroupErrorTable (mib-2.28.5.1) 資料的範例。


mtaGroupErrorTable:

    mtaGroupInboundErrorCount.1.1.4000000 1 = 0
    mtaGroupInboundErrorCount.1.1.5000000 = 0
    mtaGroupInternalErrorCount.1.1.4000000 = 0
    mtaGroupInternalErrorCount.1.1.5000000 = 0
    mtaGroupOutboundErrorCount.1.1.4000000 = 0
    mtaGroupOutboundErrorCount.1.1.5000000 = 0

    mtaGroupInboundErrorCount.1.2.4000000 1 = 0
    ...

    mtaGroupInboundErrorCount.1.3.4000000 1 = 0
    ...         

注意:

  1. .x.y.z 後綴中,x 是應用程式索引 (applIndex),表示 applTable 中正在被報告的應用程式。在此範例中為 MTA。y 表示所報告的 mtaGroupTable 通道。在此範例中,1 指定 tcp_intranet 通道,2 指定 ims-ms 通道,3 指定 tcp_local 通道。最後,z 為 4000000 或 5000000,分別表示嘗試傳送郵件時此通道所遇到的臨時錯誤和永久性錯誤的計數。

mtaGroupErrorTable 用法

錯誤計數的突然增大可能表示出現異常的遞送問題。例如,tcp_ 通道錯誤計數的突然增大可能表示出現 DNS 或網路問題。ims_ms 通道錯誤計數的突然增大可能表示郵件儲存出現傳送問題 (例如,分割區已滿、stored 問題等)。