iT邦幫忙

0

誰能教我設定 linux的 spf?

http://old.openspf.org/wizard.html?mydomain=youdomain&submit=%E5%8E%BB%E5%90%A7%EF%BC%81

有人說參考這裡

但是我英文不好,看不懂,有沒有前輩可以說一下怎麼做的?
或請幫我翻譯一下他的內容是什麼,謝謝

silly iT邦好手 2 級 ‧ 2010-09-20 11:25:54 檢舉
翻譯:
用google Chrome瀏覽那頁面,滑鼠右鍵選"翻譯成中文"即可。

2 個回答

8
逮丸逮丸
iT邦大師 1 級 ‧ 2010-09-20 20:34:15
最佳解答

可先參閱舊題中的一些說明:
SPF record - SPF (Sender Policy Framework) 防止冒用網域名稱設定大法

從實例來講會比較清楚:
這是台大 xxx@ntu.edu.tw 的SPF的設定查詢:

<pre class="c" name="code">$ nslookup -query=txt ntu.edu.tw
Non-authoritative answer:
ntu.edu.tw      text = "v=spf1 a:ccms.ntu.edu.tw a:smtps.ntu.edu.tw a:wmail1.cc.ntu.edu.tw a:wmail2.cc.ntu.edu.tw ~all"

裡面定義4個IP(其實應說是4個A record,每個A不見得會只有一個IP),
是一定可信任的;
如果有信是 xxx@ntu.edu.tw 寄到 xxx@hotmail.com 的話,
HotMail 的 MX 若有啟動 SPF 檢查機制的話,
1.看是什麼IP送信過來
2.發現是以 ntu.edu.tw 的名義寄來
3.查 ntu.edu.tw 的 TXT 裡有無 SPF 的定義?
4.若有SPF的定義,且來信Server的IP符合SPF中的IP定義,表示是可信任的。
5.若來信Server的IP不符SPF中的定義,若SPF裡最後是 ~all 的話,回應「softfail」的訊息,表示該信不是從正式應有的管道寄的信,是可以接受,但最好該做更進一步的過濾或檢查。若最後是?all的話,則回應「neutral」的訊息,雖然信不是從SPF裡定義的IP來,但好像是沒有SPF記錄般地把信收下。

其實 SPF 裡,MX是什麼,不是重點,也不見得需要設在裡面,
看一下台大的MX:

<pre class="c" name="code">$ nslookup -query=mx ntu.edu.tw
Non-authoritative answer:
ntu.edu.tw      mail exchanger = 0 ccsun9.cc.ntu.edu.tw.
ntu.edu.tw      mail exchanger = 0 ccsun42.cc.ntu.edu.tw.
ntu.edu.tw      mail exchanger = 0 ccsun5.cc.ntu.edu.tw.
ntu.edu.tw      mail exchanger = 0 ccsun8.cc.ntu.edu.tw.

MX 裡的項目,沒有一個是在 SPF 的記錄裡。
一般ntu正常管道寄信,絕不會從MX的IP出來。

至於SPF的設定項目中,為何可以設 mx: 的項目,
其中一個可能是 別人寄往 xxx@ntu.edu.tw 之時,
在 MX 接受後,往後送的時候,可能出了問題,
而會系統產生的通知信件,送給寄件人,
這時才較可能會有 MX 的 IP 出去的信;
但這種情況不多,也沒有太大的必要去為這些MX的IP來做SPF的保證。

SPF 對誰才比較有用?
這要分
1.「我要確保大廠(hotmail,gmail)來信的來源是可靠」的過濾用的目的,
或者是
2.「讓別的Mail Server確認我單位一定從何處寄信過去」的被識別的目的。

就1.而言,我們的Mail Server常會收到許多假冒 hotmail, gmail 的來信,
但卻又不在hotmail, gmail的IP範圍過來;
如果我們的 Mail Server 有裝上且啟用 SPF 的判別機制的話,
當宣稱是 xxx@hotmail.com 寄來信的話,
我們Mail Server查hotmail的TXT記錄中的SPF項目,
如果該來信IP是在SPF的範圍,就可以信任,
若不在其範圍的話,就以不信任的方式處理,
可能是在垃圾的可能性上加權數上加分。
這個1.而言,自己在自己的DNS上完全不需要做什麼。
完全只是考量,要不要用SPF來辨識可能的垃圾信。
另外,
也沒必要把任何名義的來信都做 SPF 的檢查,
只需針對最常被冒用寄垃圾信的domain,
才指定需 SPF 的檢查。

就2.而言,只是為了別人的Mail Server防止收到,
假冒自己的郵件地址,從其他地方寄的信。
如果我沒在自己的 DNS 上設自己的 SPF 記錄的話,
假設有垃圾信,以自己郵件地址,從世界任何地方寄到 hotmail 的話,
hotmail 看到來信的IP,我們也沒有SPF記錄的話,
無法得知到底這信是不是從我們單位來的,
就只能收。
若我們有 SPF 記錄的話,
hotmail 比對出是我們SPF範圍內IP來信的話,就信任,
如果不是,馬上就可以做增加權重、可能是垃圾信的動作。
所以在自己的 DNS 上設 SPF 記錄,
是為了別人增加判別是否垃圾信的作用。
但前提是:
你要確認你單位人員發出的信,
一定要是 SPF 裡定義的IP,才有意義。

所以,SPF 防垃圾信的效果怎樣?
看清楚想清楚上述的白話說明,
再評估自己的單位到底要不要做SPF?
是要做 過濾機制?還是被辨識的作用?

10
raytracy
iT邦大神 1 級 ‧ 2010-09-20 15:10:41

這個很簡單:

看更多先前的回應...收起先前的回應...
raytracy iT邦大神 1 級 ‧ 2010-09-20 15:14:17 檢舉
  1. 請在 Let's set up SPF records for: 後面的空格中, 填入您目前的網域名稱.

  2. 按下後面的 Begin 按鈕

  3. 中間的通通不要理他, 除非他算出來的結果你不滿意, 想自己客製化

  4. 下面的空格會幫你算出正確的 SPF 內容, 看起來會像這樣:

    <pre class="c" name="code">"v=spf1 ip4:202.153.173.62 a mx a:point.com.tw ?all"

  5. 請把這行拷貝下來, 直接寫進你的 DNS zone file 裡面, 看起來應該像這樣:

    <pre class="c" name="code">point.com.tw. IN TXT "v=spf1 a mx a:point.com.tw ip4:202.153.173.62 ~all"

然後 service named restart 就好了....

你好,因為我有其它主機指向這台的dns,所以想說是否應也要一起設定?
除了第個我知道是寫入自己的ip,但若要輸入多台,我就不清楚要怎麼設了

因為有人說直接寫這樣也可以
mydomain.com.tw. IN TXT "v=spf1 a -all"

但是有用戶說反應被退信,退信內容是說我的spf有問題
所以就取消了,

反而取消後能正常寄信暈

我這台是郵件主機,另一台的mx也設在這台

raytracy iT邦大神 1 級 ‧ 2010-09-20 17:17:27 檢舉

如果你是同一台主機, 服務多個 Mail domain 的話, 那麼應該是每一個 Domain 都會有自己的 Zone File, 只要把上面的步驟在每一個 Domain 分別各做一次即可.

如果你是同一個 Domain, 會有多台 MX 同時服務的話, 那只要將其他 MX 的 IP 加進來即可, 如下:

&lt;pre class="c" name="code">"v=spf1 ip4:202.153.173.62 ip4:60.258.68.57 a mx a:point.com.tw ~all"
raytracy iT邦大神 1 級 ‧ 2010-09-20 17:25:59 檢舉

def123452002提到:
因為有人說直接寫這樣也可以
mydomain.com.tw. IN TXT "v=spf1 a -all"

但是有用戶說反應被退信,退信內容是說我的spf有問題
所以就取消了,

這樣確實也可以, 但因為你只寫了 a, 少了 mx. 有很多 ISP 看到沒有 mx 就會擋. 所以正確的寫法應該是:

&lt;pre class="c" name="code">v=spf1 a mx -all

詳細說明可參閱:
Wiki: Sender Policy Framework

所以我只要加入v=spf1 a mx -all
就ok了?

raytracy iT邦大神 1 級 ‧ 2010-10-04 15:11:59 檢舉

原則上是的, 這是簡單的作法. 但您可以參考樓下 twtw 有更詳細的解釋.

我要發表回答

立即登入回答