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

其他 MTA 配置檔案

除了 imta.cnf 檔案之外,Messaging Server 提供多個其他配置檔案以協助您配置 MTA 服務。表 10–5 中概述了這些檔案。

如果對 reverseforward 或一般資料庫進行變更,則請執行指令 imsimta reload 使變更生效。如果對不會影響 job_controller 的 imta.cnfmappings 檔案、aliasesconversionsoption.dat 檔案進行變更,則應在 imsimta restart smtp 之後執行 imsimta cnbuild。如果您對 dispatcher.cnf 進行變更,則需要執行 imsimta restart dispatcher。如果對包括在已編譯的配置 (影響工作控制器,但不影響 SMTP 伺服器) 中的配置檔案進行變更,在多數情況下,應執行以下指令︰imsimta cnbuildimsimta 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 檔案

alias 檔案 aliases 用於設定未在目錄中設定的別名。特別是,根的位址是個很好的範例。如果目錄中存在相同的別名,則將忽略該檔案中設定的別名。如需有關 aliases 和 aliases 檔案的更多資訊,請參閱別名

變更 aliases 檔案後,必須重新啟動 MTA 或執行指令 imsimta reload

TCP/IP (SMTP) 通道選項檔案

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 通道關鍵字,將它們的處理請求導向特定池。該處理區的名稱必須匹配工作控制器配置中的處理區名稱。如果工作控制器無法識別請求的處理區名稱,則該請求會被忽略。

在初始配置中定義了以下處理區:DEFAULTLOCAL_POOLIMS_POOLSMTP_POOL

使用範例

通常,如果您要將某些通道的處理與其他通道的處理區分開,可以將附加的處理區定義新增至工作控制器配置。您還可以選擇使用具有不同特性的處理區。例如,您可能需要控制某些通道可以處理的同步請求數目。可以透過建立具有工作限制的新池來完成此作業,然後使用 pool 通道關鍵字將這些通道導入更合適的新池。

除了池定義以外,工作控制器配置檔案還包含 MTA 通道表以及工作控制器用於為每個通道處理請求所必需的指令。兩種類型的請求分別稱為「主」和「從屬」。通常,當通道的 MTA 郵件佇列中儲存有郵件時,會呼叫通道主要程式。主程式將郵件移出佇列。

呼叫從屬程式以輪詢通道並挑選該通道上任何內送郵件。由於幾乎所有 MTA 通道均具有主程式,因此大多數通道不具有或不需要從屬程式。例如,經由 TCP/IP 處理 SMTP 的通道就不使用從屬程式,因為網路服務 (SMTP 伺服器) 將根據任何 SMTP 伺服器的請求接收內送 SMTP 郵件。SMTP 通道的主程式是 MTA 的 SMTP 用戶端。

如果與通道關聯的目標系統一次無法處理多封郵件,您需要建立一個工作限制為一的新型處理區:

[POOL=single_job]
job_limit=1

另一方面如果目標系統具有足夠的平行處理能力,您可以將工作限制設定為較高的值。

範例 10–1 顯示工作控制器配置檔案範例。表 10–6 顯示可用選項。


範例 10–1 UNIX 中的工作控制器配置檔案範例


!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

上述範例中的主要項目 (編號位於括號中並以粗體表示) 為:

  1. 此全域選項定義了工作控制器在其上偵聽請求的 TCP 連接埠號碼。

  2. 為後續 [CHANNEL] 區段設定預設 SLAVE_COMMAND

  3. 為後續 [CHANNEL] 區段設定預設的 MAX_LIFE_AGE

  4. 此 [POOL] 區段定義名為 DEFAULT 的池。

  5. 將此池的 JOB_LIMIT 設定為 10

  6. 此 [CHANNEL] 區段適用於名為 l 的通道和 UNIX 本機通道。此區段中需要的唯一定義為 master_command,工作控制器會執行該指令來執行此通道。由於通道名稱中沒有萬用字元,所以通道必須完全匹配。

  7. 此 [CHANNEL] 區段適用於名稱以 tcp_* 開頭的任何通道。由於該通道名稱中包含萬用字元,它將匹配名稱以 tcp_ 開頭的任何通道。

新增額外處理區的範例

工作控制器用於建立和管理遞送郵件的通道工作。這些通道工作在工作控制器內的處理區中執行。可以認為池是通道工作執行的「地方」。儲存區提供一個運算區域,可供一組工作在其中作業,而無需與儲存區外部的工作競爭資源。請注意,job_controller 中設定的工作限制是針對每個池的。因此,例如,如果您將 SMTP_POOLjob_limit 定義為 10,則在任一給定時間內,僅能有 10 個 tcp_smtp 用戶端程序在該池中執行。

在某些情況下,可能需要建立額外的 tcp_* 通道 (例如,用於特別緩慢的郵件站點的 tcp 通道)。最好是讓這些通道在不同的處理區中執行。原因為,如果建立了十個不同的 tcp_* 通道且均在 SMTP_POOL 中執行,則在任一給定時間內,每個 tcp_* 通道上可能僅有一個 tcp_smtp 用戶端在執行 (取決於是否存在有目標為所有 tcp_* 通道的郵件,並且是否給定 SMTP_POOLjob_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 工作主控台配置檔案選項

選項 

說明 

一般選項 

說明 

INTERFACE_ADDRESS=adapter

指定工作控制器應連結至的 IP 位址介面。指定的值 (配接卡) 可以是 ANYALLLOCALHOST 中的任何一個,也可以是 IP 位址。依預設,工作控制器連結至所有位址 (相當於指定 ALLANY)。指定 INTERFACE_ADDRESS=LOCALHOST 意味著工作控制器僅接受來自本地機器內的連線。這不會影響正常作業,因為工作控制器不支援機器之間的作業。但是,這在 HA 環境中可能並不適合,因為 HA 代理程式可能正在檢查工作控制器是否回應。如果正在執行 Messaging Server 的機器處於 HA 環境中,並具有一個「內部網路」配接卡和一個「外部網路」配接卡,並且您不信任防火牆對連線至高連接埠號碼的阻斷功能,您應考量指定「內部網路」配接卡的 IP 位址。

MAX_MESSAGES=integer

工作控制器將以內部記憶體結構保留有關郵件的資訊。如果建立大型儲存區,則可能需要限制此結構的大小。如果儲存區中的郵件數目超過了此處指定的參數,則有關後續郵件的資訊將不會保留在記憶體中。因為郵件始終被寫入磁碟,因此不會丟失,但是在工作控制器已知的郵件數目下降至此數目的一半之前,它們不會被遞送。此時,工作控制器將模擬 imsimta cache -sync 指令,掃描佇列目錄。

預設為 100000。 

SECRET=file_spec

用於保護傳送至工作控制器的請求的共用機密。 

SYNCH_TIME=time_spec

工作控制器有時會掃描磁碟上的佇列檔案以檢查是否有遺漏的檔案。依預設,此作業在工作控制器啟動四小時後開始,每隔四小時執行一次。time_spec 的格式為 HH:MM/ hh:mm/ hh:mm。變數 hh.mm 是事件的間隔時間 (以小時 [h] 和分鐘 [ m] 為單位)。變數 HH:MM 是事件在一天中第一次發生的時間。例如,指定 15:45/7:15 表示事件在 15:45 開始,並從此刻起每七小時十五分鐘發生一次。

TCP_PORT=integer

指定工作控制器應在其上偵聽請求封包的 TCP 連接埠。請勿變更此選項,除非該預設與您系統上的其他 TCP 應用程式發生衝突。如果確實要變更此選項,請變更 MTA 調校檔案 msg_svr_base/config/imta_tailor 中相應的 IMTA_JBC_SERVICE 選項,以便它可以匹配。TCP_PORT 選項將在全域套用,如果它顯示在 [CHANNEL] 或 [POOL] 區段中,則將被忽略。

池選項

說明

JOB_LIMIT=integer

指定處理區可以同時 (平行) 使用的程序的最大數目。JOB_LIMIT 將分別套用至每個池;工作的最大總數是所有池的 JOB_LIMIT 參數的總和。如果在區段外設定,則可以由未指定 JOB_LIMIT 的任何 [POOL] 區段用做預設。在 [CHANNEL] 區段中會忽略此選項。

通道選項

說明

MASTER_COMMAND=file_spec

指定工作控制器建立的 UNIX 系統程序要執行的指令的完整路徑 (執行通道並將該通道上的外寄郵件移出佇列)。如果在區段外設定,則可以由未指定 MASTER_COMMAND 的任何 [CHANNEL] 區段用做預設。在 [POOL] 區段中會忽略此選項。

MAX_LIFE_AGE=integer

指定通道主要工作的最長存在時間 (以秒為單位)。如果沒有為通道指定該參數,則使用全域預設值。如果未指定預設值,則使用 14400 (240 分鐘)。 

MAX_LIFE_CONNS=integer

除了最長存在時間參數以外,通道主要工作的存在期限還受其詢問工作控制器是否有郵件的次數的限制。如果沒有為通道指定該參數,則使用全域預設值。如果未指定預設值,則使用 300。 

SLAVE_COMMAND=file_spec

指定工作控制器建立的 UNIX 系統程序要執行的指令的完整路徑 (執行通道並輪詢通道上內送的所有郵件)。大多數 MTA 通道不具有 SLAVE_COMMAND。如果是這種情況,則應指定保留值 NULL。如果在區段外設定,則可以由未指定 SLAVE_COMMAND 的任何 [CHANNEL] 區段用做預設。在 [POOL] 區段中會忽略此選項。