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

新增 SMTP 轉送

依預設,Messaging Server 被配置為封鎖 SMTP 轉送嘗試;即,它拒絕將郵件提交給來自未經認證的外部來源 (外部系統是指除伺服器所在的主機外的所有其他系統) 的外部位址之嘗試。此預設配置對於封鎖 SMTP 轉送非常主動,因為它將所有其他系統都視為外部系統。

IMAP 和 POP 用戶端,嘗試透過 Messaging Server 系統的 SMTP 伺服器將郵件提交至外部位址,而該位址未使用 SMTP AUTH (SASL) 進行認證時,系統會拒絕這些提交嘗試。因此,您可能希望修改配置,使之可以識別自己的內部系統和子網路,從而使來自這些地方的轉送總被接受。

至於哪些系統和子網路被識別為內部系統和子網路,這通常由 INTERNAL_IP 對映表控制,該表格可能位於 msg_svr_base/config/mappings

例如,在 IP 位址為 123.45.67.89 的 Messaging Server 上,預設 INTERNAL_IP 對映表將顯示如下:


INTERNAL_IP 

   $(123.45.67.89/32)   $Y
   127.0.0.1            $Y
   *   $N
      

在這裡,使用 $(IP-pattern/signicant-prefix-bits) 語法的初始項目指定任何匹配 123.45.67.89 的所有 32 位元的 IP 位址均符合,並被視為內部位址。第二個項目將迴路 IP 位址 127.0.0.1 識別為內部位址。最後一個項目指定,所有其他 IP 位址均不應被視為內部位址。請注意,所有項目前均至少要有一個空格。

您可以透過在最後一個 $N 項目前指定其他 IP 位址或子網路來新增其他項目。這些項目必須在左邊指定 IP 位址或子網路/...,在右邊指定 $Y。或者可以修改現有的 $(.../...) 項目以接受更為常用的子網路。

例如,如果同一個範例站點具有一個 class-C 網路,也就是說,它擁有所有的 123.45.67.0 子網路,則此站點需要透過變更匹配位址所使用的位元數以修改初始項目。在下面的對映表中,我們將 32 位元變更為 24 位元。這可讓 class-C 網路上的所有用戶端均可以透過此 SMTP 轉送伺服器轉送郵件。


INTERNAL_IP 

   $(123.45.67.89/24)   $Y
   127.0.0.1   $Y
   *   $N
      

或者,如果此站點僅擁有 123.45.67.80 至 123.45.67.99 範圍內的 IP 位址,則此站點需要使用:

INTERNAL_IP 

! Match IP addresses in the range 123.45.67.80-123.45.67.95 
   $(123.45.67.80/28) $Y
! Match IP addresses in the range 123.45.67.96-123.45.67.99 
   $(123.45.67.96/30) $Y 
   127.0.0.1 $Y 
   * $N

請注意,imsimta test -match 公用程式可用於檢查 IP 位址是否符合特定的 $(.../...) 的測試條件。imsimta test -mapping 公用程式更常用於檢查 INTERNAL_IP 對映表是否對各種 IP 位址輸入內容都傳回所需結果。

修改 INTERNAL_IP 對映表後,請確定發出 imsimta restart 指令 (如果未使用編譯的配置執行) 或 imsimta cnbuild 指令 (後跟 imsimta restart smtp 指令,如果使用編譯的配置執行),以使變更生效。

如需有關對映檔案和常用對應表格式的詳細資訊以及 imsimta 指令行公用程式資訊,請參閱「Messaging Server Reference Manual」。

允許向外部站點進行 SMTP 轉送

所有內部 IP 位址均應如上所述增加至 INTERNAL_IP 對映表。如果允許從友好或合作系統/站點進行 SMTP 轉送,最簡單的方法就是將它們與您的實際內部 IP 位址一起包含在 INTERNAL_IP 對映表中。

如果不希望這些系統/站點做為實際內部系統/站點 (例如,出於記錄或其他控制目的,希望區分實際內部系統具有轉送權限的友好非內部系統),還可以使用其他方法配置系統。

一種方法是設定特殊通道以接收來自此類友好系統的郵件。具體方法是,建立一個與現有 tcp_friendly 通道類似的 tcp_friendly 通道,其正式主機名稱為 tcp_friendly-daemon,並建立一個與您的 INTERNAL_IP 對映表類似的 FRIENDLY_IP 對映表,其上列出友好系統的 IP 位址。然後在目前重寫規則後面:

! Do mapping lookup for internal IP addresses 
[]    $E$R${INTERNAL_IP,$L}$U%[$L]@tcp_intranet-daemon

加入新的重寫規則:

! Do mapping lookup for "friendly", non-internal IP addresses
[]     $E$R${FRIENDLY_IP,$L}$U%[$L]@tcp_friendly-daemon

另一種方法是將以下格式的新項目增加至 ORIG_SEND_ACCESS 對映表的最後一個 $N 項目的上面:

tcp_local|*@siroe.com|tcp_local|*     $Y

(其中,siroe.com 是友好網域的名稱),並增加以下格式的 ORIG_MAIL_ACCESS 對映表:

ORIG_MAIL_ACCESS 

   TCP|*|25|$(match-siroe.com-IP-addresses)|*|SMTP|MAIL|   \
tcp_local|*@siroe.com|tcp_local|*      $Y 
   TCP|*|*|*|*|SMTP|MAIL|tcp_local|*|tcp_local|* $N

其中,$(...) IP 位址語法與上一小節中說明的語法相同。只要位址正確,ORIG_SEND_ACCESS 檢查便會成功,因此我們可以繼續執行 ORIG_MAIL_ACCESS 檢查,該檢查更加嚴格,僅在 IP 位址也符合 siroe.com IP 位址的情況下才能成功。