Sun Java System Messaging Server 6.3 管理指南

11.3 重寫規則式樣和標記

本節包含以下小節:

大多數重寫規則式樣由僅與主機相符的特定主機名稱,或與整個子網域中所有主機/網域均相符的子網域式樣組成。

例如,以下重寫規則式樣包含僅符合指定主機的特定主機名稱:

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 檔案包含以下內容:


!    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 還包括標記的概念,這些標記可能會出現在重寫規則式樣中。如果位址被重寫多次,並且根據先前的重寫,必須透過控制與該位址相符的重寫規則以在後續的重寫中進行區別的情況下,需要使用這些標記。如需更多資訊,請參閱11.3.4 標記的重寫規則集

11.3.1 比對百分比入侵的規則

如果 MTA 嘗試重寫 A%B 格式的位址但失敗,則其會在徹底失敗並將此位址格式視為 A%B@localhost 之前再嘗試一項附加規則。(如需有關這些位址格式的更多資訊,請參閱11.4 重寫規則範本。)只有在包含百分比符號的本地部分無法重寫其他任何方法 (包括下面描述的全比對規則) 時,才會啟動此規則。

百分比入侵規則對於為百分比入侵位址指定某些特殊的內部含義十分有用。

11.3.2 比對 bang 樣式 (UUCP) 位址的規則

如果 MTA 嘗試重寫 B!A 格式的位址但失敗,其會在徹底失敗並將此位址格式視為 B!A@localhost 之前再嘗試一項附加規則。此附加規則即 bang 樣式規則。式樣為 $!。且從不變更。只有在包含驚嘆號的本地部分無法重寫其他任何方法 (包括下面描述的預設規則) 時,才會啟動此規則。

可以使用 bang 樣式規則,將 UUCP 樣式位址強制路由至具有 UUCP 系統和路由綜合知識的系統。

11.3.3 比對任一位址的規則

如果其他規則均不相符,且在通道表中找不到其他主機/網域規格,則特殊式樣「.」(單一小數點號) 將比對任何主機/網域規格。換言之,在使用其他方法,位址重寫均會失敗的情況下,將「.規則用做最後的解決方法。


備註 –

關於替換序列,當比對全部規則且範本展開時,$H 將展開為完整的主機名稱,$D 將展開為單一小數點號「.」。因此,$D 在比對全部規則範本中使用有限!


11.3.4 標記的重寫規則集

重寫程序繼續期間,可以適當地使用不同的規則集。這可以透過使用重寫規則標記來實現。在配置檔案或網域資料庫中查詢之前,目前標記置於每個式樣之前。透過使用重寫規則範本 (如下所述) 中的 $T 替換字串,可以使用任何相符的重寫規則變更該標記。

標記具有黏性;一旦設定,它們將始終套用至從單一位址擷取的所有主機。這就是說,一旦使用標記,在提供以正確標記值開頭的替代規則時應十分謹慎。實際上,由於標記通常僅用於非常專業的應用程式,所以很少出現問題。一旦完成位址的重寫,標記將重設為預設標記 (空字串)。

依據慣例,所有標記值均以垂直線 | 結束。該字元不在一般位址中使用,因此可以在式樣的其餘部分隨意使用此標記。