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

使用 DNS 查找 (包括用於 SMTP 轉送封鎖的 RBL 檢查)

在 Messaging Server 中,有多種不同的方法可以確保所有已接受要傳送或轉寄的郵 件均來自具有有效 DNS 名稱的位址。最簡單的方法是將 mailfromdnsverify 通道關鍵字置於 tcp_local 通道上。

Messaging Server 還提供了 dns_verify 程式,可讓您使用以 下 ORIG_MAIL_ACCESS 中的規則,確保所有已接受要遞送或轉寄的郵件均來自具有有效 DNS 名稱的位址:

ORIG_MAIL_ACCESS

  TCP|*|*|*|*|SMTP|MAIL|*|*@*|*|*  \
$[msg_svr_base/lib/dns_verify.so,  \
dns_verify,$6|$$y|$$NInvalid$ host:$ $$6$ -$ %e]

以上範例中的換行符在此類對映項目中具有語法意義。反斜線字元是合法地繼續到下一行的方法。

亦可使用 dns_verify 影像根據 RBL (即時黑洞清單)、MAPS (郵件濫用防止系統)、DUL (撥號使用者清單) 或 ORBS (開放轉送行為修改系統) 清單檢查內送連線,做為保護系統免受 UBE 影響的其他嘗試。使用新的 mailfromdnsverify 關鍵字時,使用者還可以使用一種獨立的「更易於配置」的方法進行此類檢查,而不必呼叫 dns_verify。更簡單的方法是使用 dispatcher.cnf 檔案中的 DNS_VERIFY_DOMAIN 選項。例如,在 [SERVICE=SMTP] 區段中,將選項的實例設定為要檢查的各種清單:


[SERVICE=SMTP]
PORT=25
! ...rest of normal options...
DNS_VERIFY_DOMAIN=rbl.maps.vix.com
DNS_VERIFY_DOMAIN=dul.maps.vix.com!
...etc...

在此範例中,郵件在 SMTP 級別被拒絕,也就是說,郵件在 SMTP 對話期間即被拒絕,因此不會傳送至 MTA。這種更簡單方法的缺點是,它將檢查所有正常送進的 SMTP 郵件,包括來自內部使用者的郵件。如果您的網際網路可連結性下降,這會導致效率降低以及潛在的問題。另一種方法是從 PORT_ACCESS 對映表或 ORIG_MAIL_ACCESS 對映表呼叫 dns_verify。在 PORT_ACCESS 對映表中,可以使初始項目不檢查本機內部 IP 位址或郵件提交者,並使後來的項目對其他所有人員執行所需檢查。或者,在 ORIG_MAIL_ACCESS 對映表中,如果僅對透過 tcp_local 通道進來的郵件進行檢查,將略過對來自內部系統/用戶端郵件的檢查。使用指向 dns_verify 的項目之範例如下所示。

PORT_ACCESS

! Allow internal connections in unconditionally 
  *|*|*|*|*  $C$|INTERNAL_IP;$3|$Y$E
! Check other connections against RBL list
   TCP|*|25|*|*  \
$C$[msg_svr_base/lib/dns_verify.so,\
dns_verify_domain_port,$1,rbl.maps.vix.com.]EXTERNAL$E


ORIG_MAIL_ACCESS 

  TCP|*|25|*|*|SMTP|*|tcp_local|*@*|*|*  \
$C$[msg_svr_base/lib/dns_verify.so,\
dns_verify_domain,$1,rbl.maps.vix.com.]$E

支援基於 DNS 的資料庫

dns_verify 程式支援基於 DNS 的資料庫,該資料庫可用於決定可能傳送未經許可的垃圾郵件的內送 SMTP 連線。某些公用的 DNS 資料庫不包含通常用於此目的的 TXT 記錄,而是僅包含 A 記錄。

在典型設定中,DNS 中針對特定 IP 位址的 TXT 記錄包含在拒絕郵件時傳回 SMTP 用戶端的錯誤訊息。但是,如果未找到 TXT 記錄,而是找到 A 記錄,則 Messaging Server 5.2 之前的 dns_verify 版本會傳回訊息”

dns_verify 目前支援在無可用 TXT 記錄的情況下指定預設文字的選項。例如,以下 PORT_ACCESS 對映表顯示如何啟用此選項:

PORT_ACCESS 

   *|*|*|*|* $C$|INTERNAL_IP;$3|$Y$E  \
   TCP|*|25|*|*   \
$C$[<msg_svr_base/lib/dns_verify.so \
,dns_verify_domain_port,$1,dnsblock.siroe.com,Your$ host$ ($1)$ \
found$ on$ dnsblock$ list]$E 
    * $YEXTERNAL

在此範例中,如果在網域 dnsblock.siroe.com 的查詢中找到遠端系統,但是沒有可用的 TXT 記錄,則會傳回以下訊息:”