本節包含以下小節:
大多數重寫規則式樣由僅與主機匹配的特定主機名稱,或與整個子網域中所有主機/網域均匹配的子網域式樣組成。
例如,以下重寫規則式樣包含僅匹配指定主機的特定主機名稱:
host.siroe.com
下一個重寫規則式樣包含將匹配整個子網域中任一主機或網域的子網域式樣:
.siroe.com
然而,此式樣無法匹配精確的主機名稱 siroe.com;若要匹配精確的主機名稱 siroe.com,則需要單獨的 siroe.com 式樣。
MTA 嘗試從特定主機名稱開始重寫主機/網域名稱,然後不斷地一般化名稱以消除其特定性。這就是說,相對於較一般的重寫規則式樣而言,將優先使用較為特定的重寫規則式樣。例如,假設配置檔案中存在以下重寫規則式樣:
hosta.subnet.siroe.com .subnet.siroe.com .siroe.com
基於重寫規則式樣,jdoe@hosta.subnet.siroe.com 位址將匹配 hosta.subnet.siroe.com 重寫規則式樣;jdoe@hostb.subnet.siroe.com 位址將匹配 .subnet.siroe.com 重寫規則式樣,而 jdoe@hostc.siroe.com 位址將匹配 .siroe.com 重寫規則式樣。
特別是對於網際網路上的網站來說,使用併入子網域重寫規則式樣的重寫規則很普遍。此類網站通常包含許多用於自己內部主機和子網路的重寫規則,並且還將頂層網際網路網域的重寫規則包含在配置檔案 internet.rules (msg_svr_base/config/internet.rules) 中。
為了確保傳送至網際網路目標 (而非經由更特定的重寫規則傳送至處理的內部主機目標) 的郵件會被正確重寫,並將這些郵件路由至外寄 TCP/IP 通道,請確定 imta.cnf 檔案包含以下內容:
其式樣匹配頂層網際網路網域的重寫規則
將匹配此類式樣的位址重寫至外寄 TCP/IP 通道的範本
! Ascension Island .AC $U%$H$D@TCP-DAEMON . [text . removed for . brevity] ! Zimbabwe .ZW $U%$H$D@TCP-DAEMON |
IP 網域文字使用類似的階層匹配式樣,但為從右至左 (而不是從左至右) 的匹配。例如,以下式樣僅準確匹配 IP 文字 [1.2.3.4]:
[1.2.3.4]
下一個式樣匹配 1.2.3.0 子網路中的所有位址:
[1.2.3.]
除了上文說明的主機或子網域重寫規則式樣的一般類型,重寫規則也可能使用數種特殊式樣。在表 11–1 中概括了這些特殊式樣,並在以下子小節中進行說明。
表 11–1 重寫規則的特殊式樣摘要
式樣 |
說明/用法 |
---|---|
$* |
匹配任一位址。如果指定此規則,則不論它在檔案中位於何處,均將最先嘗試此規則。 |
$% |
百分比入侵規則。匹配格式 A%B 的任一主機/網域規格。 |
$! |
bang 樣式規則。匹配格式 B!A 的任一主機/網域規格。 |
[ ] |
IP 文字全匹配規則。匹配任一 IP 網域文字。 |
. |
匹配任一主機/網域規格。例如,joe@[129.165.12.11] |
除這些特殊式樣之外,Messaging Server 還包括標記的概念,這些標記可能會出現在重寫規則式樣中。如果位址被重寫多次,並且根據先前的重寫,必須透過控制與該位址匹配的重寫規則以在後續的重寫中進行區別的情況下,需要使用這些標記。如需更多資訊,請參閱標記的重寫規則集。
如果 MTA 試圖重寫 A%B 格式的位址但失敗,其會在徹底失敗並將此位址格式視為 A%B@localhost 之前嘗試附加規則。(如需有關這些位址格式的更多資訊,請參閱重寫規則範本。)只有在包含百分比符號的本地部分無法重寫其他任何方法 (包括下面描述的全匹配規則) 時,才會啟動此規則。
百分比入侵規則對於為百分比入侵位址指定某些特殊的內部含義十分有用。
如果 MTA 試圖重寫 B!A 格式的位址但失敗,其會在徹底失敗並將此位址格式視為 B!A@localhost 之前嘗試附加規則。此附加規則即 bang 樣式規則。式樣為 $!。且從不變更。只有在包含驚嘆號的本地部分無法重寫其他任何方法 (包括下面描述的預設規則) 時,才會啟動此規則。
可以使用 bang 樣式規則,將 UUCP 樣式位址強制路由至具有 UUCP 系統和路由綜合知識的系統。
如果其他規則均不相符且在通道表中找不到其他主機/網域規格,則特殊式樣「.」(單一小數點號) 將匹配任何主機/網域規格。換言之,在使用其他方法,位址重寫均會失敗的情況下,將「.」規則用做最後的解決方法。
關於替換序列,當符合匹配全部規則且範本展開時,$H 將展開為完整的主機名稱,$D 將展開為單一小數點號「.」。因此,$D 在匹配全部規則範本中使用有限!
由於重寫程序繼續執行,可以相應地使用不同的規則集。這可以透過使用重寫規則標記來實現。在配置檔案或網域資料庫中查詢之前,目前標記置於每個式樣之前。透過使用重寫規則範本 (如下所述) 中的 $T 替換字串,可以使用任何匹配的重寫規則變更該標記。
標記具有黏性;一旦設定,它們將始終套用至從單一位址擷取的所有主機。這就是說,一旦使用標記,在提供以正確標記值開頭的替代規則時應十分謹慎。實際上,由於標記通常僅用於非常專業的應用程式,所以很少出現問題。一旦完成位址的重寫,標記將重設為預設標記 (空字串)。