除了 imta.cnf 檔案之外,Messaging Server 提供多個其他配置檔案以協助您配置 MTA 服務。表 10–5 中概述了這些檔案。
如果對 reverse、forward 或一般資料庫進行變更,則請執行指令 imsimta reload 使變更生效。如果對不會影響 job_controller 的 imta.cnf、mappings 檔案、aliases、conversions 或 option.dat 檔案進行變更,則應在 imsimta restart smtp 之後執行 imsimta cnbuild。如果您對 dispatcher.cnf 進行變更,則需要執行 imsimta restart dispatcher。如果對包括在已編譯的配置 (影響工作控制器,但不影響 SMTP 伺服器) 中的配置檔案進行變更,在多數情況下,應執行以下指令︰imsimta cnbuild 和 imsimta restart job_controller。
如需這些指令的詳細資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「MTA Commands」。
表 10–5 MTA 配置檔案
檔案 |
說明 |
---|---|
Alias 檔案 (強制性) |
實作不存在於目錄中的別名。msg_svr_base/config/aliases |
TCP/IP (SMTP) 通道選項檔案 SMTP 選項檔案) |
設定通道專用的選項。msg_svr_base/config/channel_option |
由 conversion 通道用於控制郵件內文部分的轉換。msg_svr_base/config/conversions |
|
派送程式配置檔案 (強制性) |
派送程式的配置檔案。msg_svr_base/config/dispatcher.cnf |
工作控制器檔案 (強制性) |
Job Controller 使用的配置檔案。/msg_svr_base/config/job_controller.cnf |
MTA 配置檔案 (強制) |
用於位址重寫、路由以及通道定義。/msg_svr_base/config/imta.cnf |
對映檔案 (強制性) |
對映表的儲存庫。/msg_svr_base/config/mappings |
全域 MTA 選項的檔案。/msg_svr_base/config/option.dat |
|
調校檔案 (強制性) |
指定位置和某些調校參數的檔案。/msg_svr_base/config/imta_tailor |
一般查詢表格 (可選擇) |
一般查詢功能與一般資料庫等效。可重新載入的已編譯配置的一部分。 指定位置和某些調校參數的檔案。/msg_svr_base/config/general.txt |
正向查詢表格 (可選擇) |
用於 To: 位址。與正向資料庫等效。可重新載入的已編譯配置的一部分。 /msg_svr_base/config/forward.txt |
反向查詢表格 (可選擇) |
用於 From: 位址。與反向資料庫等效。可重新載入的已編譯配置的一部分/msg_svr_base/config/reverse.txt |
alias 檔案 aliases 用於設定未在目錄中設定的別名。特別是,根的位址是個很好的範例。如果目錄中存在相同的別名,則將忽略該檔案中設定的別名。如需有關 aliases 和 aliases 檔案的更多資訊,請參閱別名。
變更 aliases 檔案後,必須重新啟動 MTA 或執行指令 imsimta reload。
TCP/IP 通道選項檔案用於控制 TCP/IP 通道的各種特性。通道選項檔案必須儲存在 MTA 配置目錄中,並且命名為 x_option (其中 x 是通道的名稱)。例如,msg_svr_base/config/imta/tcp_local_option。如需更多資訊,請參閱配置 SMTP 通道選項。如需有關所有通道選項關鍵字和語法的完整資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」。
配置檔案 conversions 指定 conversion 通道如何在郵件流量上透過 MTA 執行轉換。可以選取 MTA 通訊的任何子集來進行轉換,並可以使用任何一組程式或指令程序來執行轉換處理。MTA 將查看轉換檔案,以為每個內文部分選擇適當的轉換。
如需此檔案語法的更多資訊,請參閱轉換通道
派送程式配置檔案 dispatcher.cnf 用於指定派送程式配置資訊。預設配置檔案在安裝時建立,您無需進行變更即可使用。但是,如果出於安全性或效能原因,需要修改預設配置檔案,則可以透過編輯 dispatcher.cnf 檔案來完成修改。(如需概念資訊,請參閱派送程式
派送程式配置檔案的格式與其他 MTA 配置檔案的格式類似。指定選項的行具有以下格式:
option=value
option 是選項的名稱,value 是為選項設定的字串或整數。如果 option 接受整數值,則可使用 b%v 格式的表示法指定基數,其中,b 是以10 為基礎表示的基數,而 v 是以基數 b 表示的實際值。此類選項規格根據服務群組為不同的部分,服務將套用使用以下格式的行:
[SERVICE=service-name ]
service-name 是服務的名稱。顯示在任何此類區段標記之前的初始選項規格將全域套用至所有區段。
以下是派送程式配置檔案 (dispatcher.cnf) 範例。
! The first set of options, listed without a [SERVICE=xxx] ! header, are the default options that will be applied to all ! services. ! MIN_PROCS=0 MAX_PROCS=5 MIN_CONNS=5 MAX_CONNS=20 MAX_LIFE_TIME=86400 MAX_LIFE_CONNS=100 MAX_SHUTDOWN=2 ! ! Define the services available to Dispatcher ! [SERVICE=SMTP] PORT=25 IMAGE=msg_svr_base/lib/tcp_smtp_server LOGFILE=msg_svr_base/log/tcp_smtp_server.log |
如需有關此檔案之參數的更多資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」。
mappings 檔案定義 MTA 如何將輸入字串對映至輸出字串。
許多 MTA 元件使用針對表查詢的資訊。一般而言,此類表格用於將輸入字串變換為 (即對映至) 輸出字串。此類表格 (稱為對映表) 通常顯示為兩欄,第一欄 (左側) 給出可能的輸入字串,第二欄 (右側) 給出與輸入關聯的結果輸出字串。大多數 MTA 資料庫是此類對映表的實例。但是,MTA 資料庫檔案不提供萬用字元查詢功能,因為該功能本身效率較低,必須掃描整個資料庫以查詢與萬用字元匹配的項目。
mappings 檔案為 MTA 提供支援多個對映表的工具。它還提供了完整的萬用字元工具,以及多步和反覆式對映方法。此方法的計算量比使用資料庫要大,特別是當項目很多時。但是,其靈活性帶來的實際好處是您不需要同等資料庫中的大多數項目,從而使整體開銷降低。
可以使用 imsimta test -mapping 指令測試對映表。如需有關 mappings 檔案語法和 test -mapping 指令的更多資訊,請參閱對映檔案和「Sun Java System Messaging Server 6 2005Q4 Administration Reference」
變更 mappings 檔案後,必須重新啟動 MTA 或執行指令 imsimta reload。
選項檔案 option.dat 指定與通道專用選項相對的全域 MTA 選項。
您可以使用選項檔案置換作為整體套用至 MTA 的各種參數的預設值。特別是,選項檔案可用於建立讀入配置檔案和 Alias 檔案的各種大小的表格。您還可以使用選項檔案限制 MTA 接受的郵件的大小、指定 MTA 配置中允許的通道數目,以及設定重寫規則允許的數目等。
在 option.dat 中,以 #、! 或 ; 開頭的行被視為註釋行,即使上一行有尾隨 \,也只表示此行將繼續。這意味著長選項 (尤其是遞送選項) 可能會包含這些字元,使用時應小心。
對於出現連續多行均以 # 或! 開頭的原始配置的傳送選項,有一種安全且方便的解決方法。
如需有關選項檔案語法的更多資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」。
調校檔案 imta_tailor 用於設定各種 MTA 元件的位置。為使 MTA 正常運作,imta_tailor 檔案必須始終位於 msg_svr_base/config 目錄中。
雖然您可以編輯此檔案以反映特定安裝中的變更,但在編輯時必須十分小心。變更該檔案之後,您必須重新啟動 MTA。最好是在 MTA 關閉時進行變更。
除非絕對必要,否則請勿編輯該檔案。
如需有關此檔案的完整資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」。
工作控制器用於建立和管理遞送郵件的通道工作。這些通道工作在工作控制器內的處理區中執行。可以認為池是通道工作執行的「地方」。儲存區提供一個運算區域,可供一組工作在其中作業,而無需與儲存區外部的工作競爭資源。(如需有關工作控制器概念和通道關鍵字配置的資訊,請參閱工作控制器、通道執行工作的處理儲存區以及服務工作限制。
工作控制器檔案 job_controller.cnf 用於指定以下通道處理資訊︰
定義各種處理區
為所有通道指定主要程式名稱和從屬程式名稱 (如果適用)
在imta.cnf file 中,您可以使用 pool 關鍵字指定處理池 (在 job_controller.cnf 中定義) 的名稱。例如,以下 job_controller.cnf 範例檔案的片段定義了池 MY_POOL:
[POOL=MY_POOL] job_limit = 12
以下 imta.cnf 範例檔案的片段指定了通道區塊中的池 MY_POOL:
channel_x pool MY_POOL channel_x-daemon
如果要修改與預設池配置相關聯的參數或增加其他池,則可以透過編輯 job_controller.cnf 檔案,然後停止並重新啟動工作控制器來完成。
工作控制器配置檔案中的第一個處理區用於不指定處理區名稱的所有請求。MTA 配置檔案 (imta.cnf) 中定義的 MTA 通道,可以透過使用後跟池名稱的 pool 通道關鍵字,將它們的處理請求導向特定池。該處理區的名稱必須匹配工作控制器配置中的處理區名稱。如果工作控制器無法識別請求的處理區名稱,則該請求會被忽略。
在初始配置中定義了以下處理區:DEFAULT、LOCAL_POOL、IMS_POOL 和 SMTP_POOL。
通常,如果您要將某些通道的處理與其他通道的處理區分開,可以將附加的處理區定義新增至工作控制器配置。您還可以選擇使用具有不同特性的處理區。例如,您可能需要控制某些通道可以處理的同步請求數目。可以透過建立具有工作限制的新池來完成此作業,然後使用 pool 通道關鍵字將這些通道導入更合適的新池。
除了池定義以外,工作控制器配置檔案還包含 MTA 通道表以及工作控制器用於為每個通道處理請求所必需的指令。兩種類型的請求分別稱為「主」和「從屬」。通常,當通道的 MTA 郵件佇列中儲存有郵件時,會呼叫通道主要程式。主程式將郵件移出佇列。
呼叫從屬程式以輪詢通道並挑選該通道上任何內送郵件。由於幾乎所有 MTA 通道均具有主程式,因此大多數通道不具有或不需要從屬程式。例如,經由 TCP/IP 處理 SMTP 的通道就不使用從屬程式,因為網路服務 (SMTP 伺服器) 將根據任何 SMTP 伺服器的請求接收內送 SMTP 郵件。SMTP 通道的主程式是 MTA 的 SMTP 用戶端。
如果與通道關聯的目標系統一次無法處理多封郵件,您需要建立一個工作限制為一的新型處理區:
[POOL=single_job] job_limit=1
另一方面如果目標系統具有足夠的平行處理能力,您可以將工作限制設定為較高的值。
範例 10–1 顯示工作控制器配置檔案範例。表 10–6 顯示可用選項。
!MTA Job Controller configuration file ! !Global defaults tcp_port=27442 (1) secret=never mind slave_command=NULL (2) max_life_age=3600 (3) ! ! !Pool definitions ! [POOL=DEFAULT] (4) job_limit=10 (5) ! [POOL=LOCAL_POOL] job_limit=10 ! [POOL=IMS_POOL] job_limit=1 ! [POOL=SMTP_POOL] job_limit=1 ! !Channel definitions ! ! [CHANNEL=l] (6) master_command=msg_svr_base/lib/l_master ! [CHANNEL=ims-ms] master_command=msg_svr_base/lib/ims_master ! [CHANNEL=tcp_*] (7) anon_host=0 master_command=msg_svr_base/lib/tcp_smtp_client |
上述範例中的主要項目 (編號位於括號中並以粗體表示) 為:
此全域選項定義了工作控制器在其上偵聽請求的 TCP 連接埠號碼。
為後續 [CHANNEL] 區段設定預設的 MAX_LIFE_AGE。
此 [POOL] 區段定義名為 DEFAULT 的池。
此 [CHANNEL] 區段適用於名為 l 的通道和 UNIX 本機通道。此區段中需要的唯一定義為 master_command,工作控制器會執行該指令來執行此通道。由於通道名稱中沒有萬用字元,所以通道必須完全匹配。
此 [CHANNEL] 區段適用於名稱以 tcp_* 開頭的任何通道。由於該通道名稱中包含萬用字元,它將匹配名稱以 tcp_ 開頭的任何通道。
工作控制器用於建立和管理遞送郵件的通道工作。這些通道工作在工作控制器內的處理區中執行。可以認為池是通道工作執行的「地方」。儲存區提供一個運算區域,可供一組工作在其中作業,而無需與儲存區外部的工作競爭資源。請注意,job_controller 中設定的工作限制是針對每個池的。因此,例如,如果您將 SMTP_POOL 的 job_limit 定義為 10,則在任一給定時間內,僅能有 10 個 tcp_smtp 用戶端程序在該池中執行。
在某些情況下,可能需要建立額外的 tcp_* 通道 (例如,用於特別緩慢的郵件站點的 tcp 通道)。最好是讓這些通道在不同的處理區中執行。原因為,如果建立了十個不同的 tcp_* 通道且均在 SMTP_POOL 中執行,則在任一給定時間內,每個 tcp_* 通道上可能僅有一個 tcp_smtp 用戶端在執行 (取決於是否存在有目標為所有 tcp_* 通道的郵件,並且是否給定 SMTP_POOL 的 job_limit 定義為 10)。如果系統負載很重,並且所有佇列中均有郵件等待透過各個 tcp_* 通道傳送出去,則效率會很低。您很可能會為其他 tcp_* 通道定義額外的池,以防止出現競爭槽的情況。
例如,假定我們設定了以下 tcp_* 通道:
tcp_yahoo smtp mx pool yahoo_pool keyword keyword keyword tcp-yahoo-daemon tcp_aol smtp mx keyword keyword keyword pool aol_pool tcp-aol-daemon tcp_hotmail smtp mx pool hotmail_pool keyword keyword keyword tcp-hotmail-daemon ... tcp_sun smtp mx pool sun_pool keyword keyword keyword tcp-sun-daemon |
為使每個新通道有十個 tcp_smtp_client 程序,我們將在 job_controller.cnf 檔案中增加以下內容:
[POOL=yahoo_pool] job_limit=10 [POOL=aol_pool] job_limit=10 [POOL=hotmail_pool] job_limit=10 ... [POOL=sun_pool] job_limit=10 |
如需有關池的更多資訊,請參閱通道執行工作的處理儲存區 (請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」)。
表 10–6 工作主控台配置檔案選項