Sender Policy Framework

  • Sender Policy Framework (SPF) 是檢驗寄件者(MAIL FROM)是否經由授權的 IP 位址(Sender IP address)寄信的一種架構。以下用簡單例子說明其運作方式如下:
    • 寄信者 user@cc.nthu.edu.tw 所屬網域的 DNS 管理者,先將 DNS 註冊該郵件網域所授權寄信的 IP 位址範圍。
      # dig +short cc.nthu.edu.tw txt
      "v=spf1 ip4:140.114.62.0/23 ?all"
    • 當寄信者 user@cc.nthu.edu.tw 將信件由本組 SMTP 伺服器之一的 IP 位址 140.114.63.4 (屬 140.114.62.0/23 範圍內) 寄給校外某郵件伺服器,若該郵件伺服器採用 SPF 的檢查,透過 DNS 查詢即可確認來源 IP 位址屬於授權範圍,則通過其檢查而順利寄達。
  • 檢測寄件者(MAIL FROM) 由某 IP 位址(Sender IP address)是否為符合 SPF 授權寄信?
  • SPF 語法(DNS TXT紀錄)

設定 SPF 以順利寄信至 Google 信箱

  • 本校系所單位,如欲使用本組寄信服務(包含SMTPSMTPAUTH)寄信至 Google 信箱(例如:@gmail.com, @gapp.nthu.edu.tw),建議其網域管理者將 SPF 設定加入「include:spf.net.nthu.edu.tw」(spf.net.nthu.edu.tw 內含本組所有寄信伺服器,如下,以寄信者網域 @mx.nthu.edu.tw 為例),則較能順利寄達。注意:若該系所單位還有其他寄信伺服器,記得一併加入設定中。
    # dig +short mx.nthu.edu.tw txt
    "v=spf1 include:spf.net.nthu.edu.tw mx ?all"
    • BIND 格式
      mx.nthu.edu.tw.        20M     IN      TXT     "v=spf1 include:spf.net.nthu.edu.tw mx ?all"
    • 其中 include:spf.net.nthu.edu.tw 表參考其資料,如下:
      # dig +short spf.net.nthu.edu.tw txt
      "v=spf1 ip4:140.114.62.0/23 ip6:2001:288:E001:63::/64 ?all"
  • 以 XX.nthu.edu.tw 為例
    # dig XX.nthu.edu.tw txt +short
    "v=spf1 a:XX.nthu.edu.tw ip4:140.114.62.0/24 include:spf.net.nthu.edu.tw ?all"
  • 若沒有 SPF 設定,則可能收到以下暫時錯誤訊息的通知信。
    <xxxxxxx@gmail.com>: host gmail-smtp-in.l.google.com[2404:6800:4008:c06::1b]
        said: 421-4.7.0 This message does not have authentication information or
        fails to pass 421-4.7.0 authentication checks. To best protect our users
        from spam, the 421-4.7.0 message has been blocked. Please visit 421-4.7.0
        https://support.google.com/mail/answer/81126#authentication for more 421
        4.7.0 information. xxxx.xxx - gsmtp (in reply to end of DATA command)
  • 參考資料:Authorize senders with SPF https://support.google.com/a/answer/33786