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

一般錯誤訊息

當 MTA 無法啟動時,指令行中會出現一般錯誤訊息。在本節中,將描述與診斷常見的一般錯誤訊息。


備註 –

若要診斷您自己的 MTA 配置,請使用 imsimta test -rewrite -debug 公用程式檢查 MTA 的位址重寫與通道對映程序。使用此公用程式可讓您檢查配置,而無需實際傳送郵件。請參閱檢查 MTA 配置


MTA 子元件還可能發出未在本章中描述的其他錯誤訊息。您應參閱「Sun Java System Messaging Server Administration Reference」中有關 MTA 指令行公用程式和配置的章節以及第 5 至 10 章,以取得有關每個子元件的更多資訊。本節包括以下類型的錯誤:

mm_init 中的錯誤

mm_init 中的錯誤一般指示 MTA 配置問題。如果您執行 imsimta test -rewrite 公用程式,則可以顯示這些錯誤。其他公用程式 (如 imsimta cnbuild)、通道、伺服器或瀏覽器也可能會傳回此類錯誤。

通常遇到的 mm_init 錯誤包括:

別名不等效. . .

別名檔案項目的右端格式不正確。

無法開啟別名中包含的檔案. . .

別名檔案中包含的檔案無法開啟。

找到重複的別名. . .

兩個別名檔案項目具有相同的左端。您需要找到並刪除重複的別名。搜尋顯示為 error line #XXX (其中,XXX 為行號) 的錯誤訊息。您可以在該行修正重複的別名。

通道表中的主機重複. . .

此錯誤訊息表明在 MTA 配置中有兩個通道定義,具有相同的正式主機名稱。

請注意,您的 MTA 配置檔案 (imta.cnf) 的重寫規則 (上半部分) 中的多餘空行會導致 MTA 將配置檔案的剩餘部分解譯為通道定義。請確定檔案的第一行不為空白。由於多個重寫規則通常具有相同式樣 (左側),因此這會導致 MTA 將這些重寫規則解譯為具有非唯一正式主機名稱的通道定義。檢查您的 MTA 配置,以查看是否存在具有重複正式主機名稱的任何通道定義,並查看檔案上半部分 (重寫規則) 是否存在不正確的空白行。

找到重複的對映名稱. . .

此訊息表明兩個對映表具有相同名稱,需要移除其中一個重複的對映表。但是,對映檔案中的格式化錯誤可能會導致 MTA 將某些內容錯誤解譯為對映表名稱。例如,未正確縮排對映表項目將導致 MTA 認為項目的左側實際為對映表名稱。檢查對映檔案的一般形式,並檢查對映表名稱。


備註 –

空白行應位於前面並跟隨在帶有對映表名稱的任何行之後。但是,對映表項目之間不應留有空白行。


對映名稱太長. . .

此錯誤表示對映名稱太長,需要縮短。對映檔案中的格式化錯誤可能會導致 MTA 將某些內容錯誤解譯為對映表名稱。例如,未正確縮排對映表項目將導致 MTA 認為項目的左側實際為對映表名稱。檢查您的對映檔案以及對映表名稱。

初始化 ch_ facility 時發生錯誤︰編譯的字元集版本不符

如果您看到此訊息,則需要透過指令 imsimta chbuild 重新編譯並重新安裝已編譯的字元集表。請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「imsimta chbuild」,以取得更多資訊。

初始化 ch_ facility 時發生錯誤︰沒有空間. . .

此錯誤訊息通常意味著您需要調整 MTA 字元集內部表的大小,然後使用以下指令重新建立已編譯的字元集表:


imsimta chbuild -noimage -maximum -option
imsimta chbuild

進行此變更之前,請驗證沒有其他內容需要重新編譯或重新啟動。請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「imsimta chbuild」,以取得有關 imsimta chbuild 的更多資訊。

系統的本地主機別名或本來的名稱太長. . .

此錯誤表明本地主機別名或本來的名稱太長 (通道區段中第二個或後續名稱的右端)。但是,MTA 配置檔案中早先的某些語法錯誤 (例如,重寫規則中的多餘空白行) 可能會導致 MTA 將某些內容錯誤解譯為通道定義。除了檢查配置檔案指出的一行之外,還應檢查此行以上的內容是否存在其他語法錯誤。特別是,如果 MTA 發出此錯誤的行將成為重寫規則,則請務必檢查此行以上是否存在多餘空白行。

別名沒有等效位址. . .

別名檔案中的項目缺少右端 (翻譯值)。

通道沒有正式主機名稱. . .

此錯誤表明通道定義區段缺少必要的第二行 (正式主機名稱行)。請參閱「Sun Java System Messaging Server Administration Reference」和第 12 章, 配置通道定義中有關 MTA 配置和指令行公用程式的章節,以取得有關通道定義區段的更多資訊。每個通道定義塊之前與之後均必須有一空白行,但空白行不能存在於通道名稱和通道定義的正式主機名稱行之間。另請注意,MTA 配置檔案的重寫規則部分不允許有空白行。

正式主機名稱太長

通道的正式主機名稱 (通道定義區段的第二行) 長度限制為 128 八位元組。如果您要嘗試在通道上使用較長的正式主機名稱,請將其縮短為定位字元名稱,然後使用重寫規則使較長名稱與短的正式主機名稱相符。如果您使用 l (本地) 通道主機名稱,則可能會看到此情形。例如:


Original l Channel:
!delivery channel to local /var/mail store
l subdirs 20 viaaliasrequired maxjobs 7 pool LOCAL_POOL
walleroo.pocofronitas.thisnameismuchtoolongandreallymakesnosensebutitisan
example.monkey.gorilla.orangutan.antidisestablismentarianism.newt.salaman
der.lizard.gecko.komododragon.com

Create Place Holder:
!delivery channel to local /var/mail store 
l subdirs 20 viaaliasrequired maxjobs 7 pool LOCAL_POOL
newt

Create Rewrite Rule:
newt.salamander.lizard.gecko.komododragon.com   $U%$D@newt

請注意,當使用 l (本地) 通道時,您將需要使用反向對映表。請參閱「Sun Java System Messaging Server Administration Reference」中的 MTA 配置章節,以取得有關用法和語法的資訊。

MTA 配置檔案中早先的某些語法錯誤 (例如重寫規則中的多餘空白行) 可能會導致 MTA 將某些內容錯誤解譯為通道定義。這會導致預計的重寫規則被解譯為正式主機名稱。除了檢查配置檔案指出的一行之外,還應檢查此行以上的內容,看是否存在其他語法錯誤。尤其是如果 MTA 發出此錯誤的行預計作為重寫規則,則請確定檢查此行以上是否存在多餘空白行。

已編譯的配置版本不相符

imsimta cnbuild 公用程式的函數之一用於將 MTA 配置資訊編譯為可以快速載入的影像。已編譯的格式定義非常嚴格,並且在不同版本的 MTA 之間常常大幅度變更。較小變更可能作為修補程式版次的一部分出現。

當出現此類變更時,內部版本欄位也進行變更以便偵測到不相容的格式。當偵測到不相容的格式時,MTA 元件將會停止並顯示上述錯誤。此問題的解決方案為,使用指令 imsimta cnbuild 產生新編譯的配置。

還可以使用 imsimta restart 指令重新啟動任意常駐 MTA 伺服器程序,以便它們可取得更新的配置資訊。

交換空間錯誤

為確保正確作業,在您的郵件傳送系統上配置足夠的交換空間很重要。所需的交換空間容量將因您的配置而有所不同。一般調校建議為,交換空間的容量應至少為主記憶體容量的三倍。

以下的錯誤訊息表示缺少交換空間:

jbc_channels: chan_execute [1]: fork failed: Not enough space

您可能會在 Job Controller 記錄檔中看到此錯誤。其他的交換空間錯誤將因您的配置而有所不同。

使用以下指令確定剩餘的交換空間容量,以及已使用的交換空間容量︰

檔案開啟或建立錯誤

為了傳送郵件,MTA 將閱讀配置檔案並在 MTA 郵件佇列目錄中建立郵件檔。配置檔案必須可由 MTA 或根據 MTA 的 SDK 編寫的任何程式讀取。安裝期間,系統會為這些檔案指定適當的許可權。建立配置檔案的 MTA 公用程式和程序也指定許可權。如果檔案由系統管理員或其他具有特權的使用者保護,或者透過某些網站特定的程序保護,則 MTA 可能無法讀取配置資訊。這將導致「檔案開啟」錯誤或未預期的運作方式。當 imsimta test -rewrite 公用程式讀取配置檔案遇到問題時,它會報告附加資訊。請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」中的「imsimta test」

如果 MTA 似乎可從具有特權的帳號運作但不可從無特權的帳號運作,則 MTA 表目錄中的檔案許可權可能是問題的原因。檢查配置檔案及其目錄的許可權。請參閱檢查重要檔案的所有權

「檔案建立」錯誤通常表明在 MTA 郵件佇列目錄中建立郵件檔案時出現問題。請參閱檢查郵件佇列目錄,以診斷檔案建立問題。

非法的主機/網域錯誤

當透過瀏覽器將位址提供給 MTA 時,您可能會看到此錯誤。或者,該錯誤會被延期,並做為錯誤傳回郵件一部分傳回。在這兩種情況下,此錯誤訊息均表示 MTA 無法將郵件遞送至指定的主機。若要確定郵件未被傳送至指定主機的原因,您應遵循以下疑難排解程序:

SMTP 通道中的錯誤︰os_smtp_* 錯誤

以下錯誤並不一定是 MTA 錯誤:os_smtp_* 錯誤,例如 os_smtp_open、os_smtp_read 以及 os_smtp_write 錯誤。當 MTA 報告在網路層遇到問題時,會產生這些錯誤。例如,os_smtp_open 錯誤意味著至遠端的網路連線無法開啟。由於定址錯誤或通道配置錯誤,MTA 可能被配置為連線至無效的系統。os_smtp_* 錯誤通常是因為 DNS 或網路連結問題,如果是之前的工作通道或位址,會更容易發生。os_smtp_read 或 os_smtp_write 錯誤通常表示由另一端或由於網路問題而中斷連線。

網路問題和 DNS 問題在本質上通常是暫時的。您一般不必擔心偶爾的 os_smtp_* 錯誤。但是,如果您經常看到這些錯誤,則可能表示存在潛在的網路問題。

若要取得有關特定 os_smtp_* 錯誤的更多資訊,請在有問題的通道上啟用除錯。檢查將顯示嘗試的 SMTP 對話詳細資訊的除錯通道記錄檔。尤其是要查看在 SMTP 對話期間出現網路問題的時間。時間可能會暗示網路或遠端問題的類型。在某些情況下,您可能還需要執行網路級除錯 (例如,TCP/IP 封包追蹤) 以確定已傳送或已接收的郵件。