每次修改 MTA 配置檔案 (例如 imta.cnf、mappings、aliases 或 option.dat) 之後,均必須重新編譯配置。此重新編譯會將配置檔案編譯為共用記憶體中的單一影像 (在 UNIX 上) 或動態連結程式庫 (NT)。
已編譯的配置具有靜態和動態的可重新載入部分。如果動態部分已變更,而您執行 imsimta reload,則正在執行的程式將重新載入動態資料。動態部分包括對映表、別名和查詢表。
編譯配置資訊的主要目的是提昇效能。使用已編譯配置的另一個功能是可更方便地測試配置變更,因為在使用已編譯配置時,配置檔案本身未處於「使用中」。
若 MTA 元件 (如通道程式) 必須讀取配置檔案,它將首先檢查是否存在已編譯配置。如果存在已編譯配置,則影像將附加至執行中的程式。如果影像附加作業失敗,MTA 會返回使用原先讀取文字檔案的舊方法。
如果對 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。
如果對包括在已編譯的配置 (影響工作控制器和 SMTP 伺服器) 中的配置檔案進行變更,應執行以下指令︰
imsimta cnbuild imsimta restart smtp imsimta restart job_controller |
(如需有關這些指令的詳細資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「MTA Commands」。)
必須重新啟動工作控制器的其他實例︰
對控制器配置檔案 job_controller.cnf 或 job_controller.site,或 job_controller.cnf 中包含的任意檔案的變更
增加或變更 imta.cnf 檔案中通道關鍵字pool、maxjobs、master、slave、single、single_sys 或 multiple 的用法。增加或變更 imta.cnf 中的 threaddepth 通道關鍵字,可以改為經由 imsimta cache -change -thread_depth=... 進行處理
如果要使對主通道工作的變更立即生效 (而非等待控制器超過現有的通道工作時間之後),然後使對 MTA 配置或通道選項檔案進行的任何相關 (幾乎全部) 變更生效,(對 mappings 檔案或 MTA 資料庫的變更︰(1) 通常與外寄通道工作無關,儘管它們與「中間」通道 [例如 conversion、process、reprocess] 相關,(2) 如果這些中間通道很重要,則對 mappings 檔案或資料庫的變更通常可經由 imsimta reload 處理,從而無需重新啟動工作控制器。)若要使變更立即生效,需要平衡重新啟動工作控制器導致的損害,並考量要以任意方式執行特定工作類型需要的時間。
MTA 配置包括 imta.cnf 和其包含的所有檔案 (例如,internet.rules)、alias 檔案、mappings 檔案、conversions 檔案、option.dat 檔案 (以及任何先前所包含的任何檔案),以及 imta.filter 和 reverse、forward 、一般資料檔案與一些潛在的 configutil 參數。
請注意,所有上述對 imta.cnf 的變更 (例如通道定義上關鍵字的增加/變更) 還需要 imsimta cnbuild - 無論工作控制器是否需要重新啟動,此為基本需求。
嘗試避免重新啟動工作控制器 (尤其在佇列中存在大量郵件時),除非上述情況之一需要重新啟動。
不建議在生產系統上使用 imsimta refresh 指令,因為,這通常無需重新啟動工作控制器,且重新啟動工作控制器將重設郵件重試,延遲的通知郵件以及退回的郵件等。