Sun Java System Messaging Server 6.3 管理指南

15.1 作業原理

當郵件進入 Messaging Server 時,MTA 會執行 SPF 查詢,以判斷位址是否確實來自該位址上的網域。SPF 查詢會查看 DNS 中有無屬於該郵件網域 (domain) 的 TXT 記錄Domain 可能是指定為 HELO 或 EHLO 之引數的網域名稱 (若使用 spfhelo 通道關鍵字),或是以 MAIL FROM: 指令指定之創建者位址中的網域名稱 (通常為 @ 字元後的部分)。若未指定或沒有可用的網域名稱,則會以在 HELO/EHLO 期間指定的網域名稱做為 domain。請注意,大部分的 ISP 會提供符合其網域的 IP 位址授權清單。若 IP 位址不符合網域名稱,郵件將被假定為是偽造郵件。


備註 –

查詢 DNS 之前,我們會先查看 SPF_LOCAL 對映表中有無相符的網域。若其中有相符網域,則會先使用此網域。


若在對映表中找到的記錄含有 redirect=domain 陳述式,則會透過 DNS 查詢重新導向至該網域,而略過遞迴與備援對映檔案檢查。

以下是所產生之 TXT 記錄的範例:

v=spf1 +mx a:colo.siroe.com/28 -all

此 RFC 所支援的 SRF 記錄必須使用 v=spf1 記號。

+mx 會引導我們查看 MX 記錄中的 domain,並確認此 SMTP 連線的來源 IP 位址,符合針對 domain 指定為 MX 查詢結果之 IP 位址之一。若有相符項目,+ 表示其結果為 Pass

a:colo.siroe.com/28 會引導我們查看 A 記錄中的 colo.siroe.com,然後確認此 SMTP 連線的來源 IP 位址與 A 記錄位於相同的指定 CIDR 子網路中,而僅比較 28 個位元 (根據 255.255.255.240 進行遮罩)。其中未指定限定符號,因此會預設為 +,表示相符項目會產生 Pass

最後,-all 會比對其他所有項目,而產生 Fail。如需 SPF 記錄更完整的說明,請參閱 RFC 4408,網址是 http://www.ietf.org/rfc/rfc4408.txt

SPF 處理可能會有數種結果。下表列出這些結果及其說明。

表 15–1 SPF 處理結果

結果 

說明 

Pass

查詢已通過,表示已找到 SPF 記錄,且記錄將原始系統驗證為有權使用 domain

Fail

查詢已找到相符的 SPF 記錄,但記錄明確拒絕授予 SMTP 用戶端在 SMTP 作業事件期間使用 domain 的授權。我們的 SPF 實作之預設運作方式,是以 5xx 回覆拒絕 SMTP 指令。

SoftFail

查詢已找到相符的 SPF 記錄,而記錄亦拒絕授予 SMTP 用戶端使用 domain 的授權,但此拒絕較不嚴格,記錄並未指示立即的失敗。我們的實作預設運作方式是接受郵件,但在 Received-SPF: 標頭中記下 SoftFail,以利進行如伺服器端包含篩選處理期間,進行後續的評估。

Neutral

SPF 記錄未對 SMTP 用戶端使用 domain 的授權進行任何宣告。將會接受郵件。在此指定中,必須將 Neutral 等同視為下方的 None

None

找不到任何相符的 SPF 記錄,因此不會執行 SPF 處理。 

PermError

在 SPF 處理期間發生永久性錯誤 (如 SPF 記錄中出現語法錯誤)、DNS 在處理巢狀 SPF 記錄時失敗 (由於 include: 機制或 redirect= 修飾鍵),或 SPF 處理在處理巢狀 SPF 記錄時超過配置的限制。預設的運作方式是以 5xx 回覆拒絕 SMTP 指令。

TempError

在 SPF 處理期間發生暫時性錯誤,很可能是因為 DNS 在查詢 SPF 記錄時逾時。預設的運作方式是以 4xx 回覆拒絕 SMTP 指令。 

SPF 處理完成後,會在郵件中寫入 Received-SPF: 標頭,以記載 SPF 處理的結果。此標頭可在後續的篩選處理期間接受查詢,以提供相關注意事項。若已在 option.dat 檔案中啟用 MTA 選項 MM_DEBUG (>0),則可進行廣泛的除錯。