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

FROM_ACCESS 對映表

FROM_ACCESS 對映表可用於控制發送郵件的人員,和/或使用經過認證的位址置換不確定的 From: 位址。

FROM_ACCESS 對映表的輸入探測字串類似於 MAIL_ACCESS 對映表的輸入探測字串,前者去掉了目標通道和位址,增加了經認證的寄件者資訊 (如果有)。因此,如果存在 FROM_ACCESS 對映表,則對每一次嘗試進行的郵件提交來說,Messaging Server 將使用以下形式 (請注意垂直分隔線字元 | 的用法) 的字串搜尋該表格:


port-access-probe-info|app-info|submit-type|src-channel|from-address|auth-from

如果是內送 SMTP 郵件,則此處的 port-access-probe-infoPORT_ACCESS 對映表探測中通常包含的所有資訊組成,否則為空。app-info 包含 HELO/EHLO SMTP 指令中聲明的系統名稱。此名稱顯示在字串末尾,並以斜線與字串的其餘部分 (通常為「SMTP」) 分隔。聲明的系統名稱在封鎖某些蠕蟲和病毒方面非常有用。submit-type 可以是 MAIL、SEND、SAML 或 SOML 之一,具體取決於郵件提交至 MTA 的方式。 通常,此值為 MAIL,意味著作為郵件提交;在向 SMTP 伺服器提交廣播請求 (或組合的廣播郵件請求) 的情況下可能會出現 SEND、SAML 或 SOML。src-channel 是創建郵件 (即郵件在其中形成佇列) 的通道;from-address 是不確定的郵件創建者位址;auth-from 是經認證的郵件創件者位址 (如果有此資訊),如果無認證過的資訊,則此項為空。

如果探測字串符合式樣 (即表格中項目的左側),則系統將檢查對映的結果輸出。如果輸出包含旗標 $Y 或 $y,則允許該特殊 To: 位址形成佇列。如果輸出包含旗標 $N、$n、$F 或 $f 中的任何一個,則系統將拒絕對該特定位址形成佇列。在拒絕的情況下,對映輸出中會提供選擇性的拒絕文字。該字串將包含在 Messaging Server 發出的拒絕錯誤中。如果未輸出任何字串 (除 $N、$n、$F 或 $f 旗標之外),則將使用預設拒絕文字。如需有關附加旗標的說明,請參閱存取控制對映表旗標

除了決定是否允許根據創建者提交郵件外,FROM_ACCESS 還可用於透過 $J 旗標變更訊息封 From: 位址,或者透過 $K 旗標修改 authrewrite 通道關鍵字的效果 (在接受的郵件上增加 Sender: 標頭位址)。例如,此對映表可用於使原始訊息封 From: 位址僅被經認證的位址替代。


範例 17–3 FROM_ACCESS 對映表


FROM_ACCESS

  *|SMTP|*|tcp_auth|*|       $Y
  *|SMTP|*|tcp_auth|*|*      $Y$J$3
            

在將 authrewrite 設定為非零值的某些來源通道上使用 FROM_ACCESS 對映表修改效果時,如果要原樣使用經認證的位址,則無需使用 FROM_ACCESS

例如,如果在 tcp_local 通道上設定了 authrewrite 2,則無需使用以下 FROM_ACCESS 對映表,因為僅使用 authrewrite 足以取得此效果 (按原樣增加經認證的位址):


FROM_ACCESS

   *|SMTP|*|tcp_auth|*|     $Y
   *|SMTP|*|tcp_auth|*|*    $Y$K$3
         

但是,使用 FROM_ACCESS 的真正目的在於允許進行更加複雜和細微的改變,如以下範例中所示。如果要將 Sender: 標頭行 (顯示經 SMTP AUTH 認證的提交者位址) 增加至內送郵件,則可以僅使用 authrewrite 關鍵字。但是,假設僅當經 SMTP AUTH 認證的提交者位址與訊息封 From: 位址不同時,才將此 Sender: 標頭行增加至內送郵件 (即,如果位址相符,則無需增加 Sender: 標頭行),並進一步假設您希望 SMTP AUTH 和訊息封 From: 位址將不會僅僅因為訊息封 From: 位址包含選擇性子位址資訊而被視為不同。


FROM_ACCESS
 
! If no authenticated address is available, do nothing
  *|SMTP|*|tcp_auth|*|              $Y
! If authenticated address matches envelope From:, do nothing
  *|SMTP|*|tcp_auth|*|$2*           $Y
! If authenticated address matches envelope From: sans
! subaddress, do nothing
   *|SMTP|*|tcp_auth|*+*@*|$2*@$4*    $Y
! Fall though to...
! ...authenticated address present, but didn't match, so force
! Sender: header
  *|SMTP|*|tcp_auth|*|*              $Y$K$3