通道為基本的 MTA 元件,用於處理郵件。通道表示與另一個電腦系統或一組系統的連線。實際的硬體連線和/或軟體傳輸可能會隨著通道的不同有很大差異。
通道可執行以下功能:
將郵件傳送到遠端系統並在傳送完成後將它們從佇列中刪除。
從遠端系統接受郵件,然後將它們置入相應的通道佇列中。
將郵件遞送至本地郵件儲存。
將郵件遞送至程式以進行特殊處理。
郵件在傳送至 MTA 時由通道形成佇列,並在從 MTA 傳出時移出佇列。通常情況下,郵件經由一個通道進入,而經由另一個通道傳出。通道可將郵件移出佇列,然後處理該郵件或將讓郵件在其他 MTA 通道中形成佇列。
一般來說 (並非總是如此),通道與兩個程式相關聯︰主要程式和從屬程式。從屬程式接受來自其他系統的郵件,並將它們增加至通道的郵件佇列。主要程式將來自通道的郵件傳送至其他系統。
例如,SMTP 通道有一個傳送郵件的主要程式和一個接收郵件的從屬程式。它們分別是 SMTP 用戶端和伺服器。
主要通道程式通常負責由 MTA 啟動的外寄連線。主要通道程式:
在出現本地處理請求時執行。
從通道郵件佇列中將郵件移出佇列。
如果目標格式與佇列中的郵件格式不同,依需要對位址、標頭和內容執行轉換。
啟動郵件的網路傳輸。
從屬通道程式通常接受送進的連線,即 MTA 回應外部請求。從屬通道程式:
在出現外部事件或本地請求時執行。
讓郵件在通道中形成佇列。目標通道透過對訊息封位址套用重寫規則來決定。
例如,圖 8–3 顯示兩個通道程式,Channel 1 和 Channel 2。Channel 1 中的從屬程式接收來自遠端系統的郵件。它查看位址,並依需要套用重寫規則,然後根據重寫位址讓郵件在相應的通道郵件佇列中形成佇列。
主要程式將郵件從佇列中移出,並啟動郵件的網路傳輸。請注意,主要程式僅能從它自己的通道佇列中將郵件移出佇列。
儘管典型的通道同時具有主程式和從屬程式,但可能會有某個通道僅包含從屬程式或主程式。例如,隨附 Messaging Server 提供的 ims-ms 通道僅包含主程式,因為此通道僅負責將郵件移出佇列至本機郵件儲存,如圖 8–4 中所示。
所有通道均有一個相關聯的郵件佇列。當郵件進入郵件傳送系統時,從屬程式決定讓郵件在哪個郵件佇列中形成佇列。已形成佇列的郵件儲存在通道佇列目錄中的郵件檔案中。依預設,這些目錄儲存在以下位置:msg_svr_base/data/queue/channel/*。有關訊息佇列大小的資訊可在「Sun Java System Communications Services 6 2005Q4 Deployment Planning Guide」中的「Disk Sizing for MTA Message Queues」中找到。
請勿在 MTA 佇列目錄 (即 imta_tailor 檔案中 IMTA_QUEUE 的值) 中增加任何檔案或目錄,否則將會導致出現問題。當為 MTA 佇列目錄使用單獨檔案系統時,在該掛載點下建立子目錄並指定該子目錄值為 IMTA_QUEUE。
通道定義顯示在 MTA 配置檔案 imta.cnf 的下半部分,位於重新寫入規則之後 (請參閱MTA 配置檔案中規則區段以及通道定義的開頭部分)。
通道定義包含通道名稱,這些名稱之後跟關鍵字可選擇清單以及唯一通道標記。前者定義通道配置,而重新寫入規則會使用後者將郵件路由至通道。通道定義以單一空白行分隔。通道定義內部可能存在註釋,但不存在空白行。
[blank line] ! sample channel definition Channel_Name keyword1 keyword2 Channel_Tag [blank line] |
所有通道定義總稱為通道主機表。個別通道定義稱為通道區段。例如,在以下範例中,通道主機表包含三個通道定義或通道區塊。
! test.cnf - An example configuration file. ! ! Rewrite Rules . . . ! BEGIN CHANNEL DEFINITIONS ! FIRST CHANNEL BLOCK l local-host ! SECOND CHANNEL BLOCK a_channel defragment charset7 usascii a-daemon ! THIRD CHANNEL BLOCK b_channel noreverse notices 1 2 3 b-daemon |
典型的通道項目如下所示:
tcp_intranet smtp mx single_sys subdirs 20 noreverse maxjobs 7 SMTP_POOL maytlsserver allowswitchchannel saslswitchchannel tcp_auth tcp_intranet-daemon |
第一個詞 (此例中為 tcp_intranet) 是通道名稱。最後一個詞 (此例中為 tcp_intranet-daemon) 稱為通道標記。通道標記是重寫規則用來導向郵件的名稱。通道名稱和通道標記之間的詞稱為通道關鍵字,它們指定如何處理郵件。數百個不同的關鍵字允許按照多種方式處理郵件。第 12 章, 配置通道定義中會列出並說明通道關鍵字的完整清單。
通道主機表定義 Messaging Server 可以使用的通道以及與每個通道關聯的系統名稱。
在 UNIX 系統上,檔案中的第一個通道區段通常說明本機通道 l。(異常是一個預設通道,可以在本機通道之前顯示。)本地通道用於作出路由決定和傳送由 UNIX 郵件工具傳送的郵件。
您也可以在 MTA 選項檔案 (option.dat) 中為通道設定全域選項,或在通道選項檔案中為特定通道設定選項。如需有關選項檔案的更多資訊,請參閱選項檔案和 TCP/IP (SMTP) 通道選項檔案。如需有關配置通道的詳細資訊,請參閱第 12 章, 配置通道定義。如需有關建立 MTA 通道的更多資訊,請參閱MTA 配置檔案。