依預設,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」。
所有內部 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 位址的情況下才能成功。