作者 主題: 在Postfix上安裝設定SPF/SenderID  (閱讀 7009 次)

0 會員 與 1 訪客 正在閱讀本文。

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
在Postfix上安裝設定SPF/SenderID
« 於: 2005-09-30 23:00 »
作者: zoob (vincent@myunix.idv.tw)

版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者資訊

一、SenderID & SPF 簡介

各位應該有收到你自己或董事長寄給你的電子垃圾郵件吧?

別懷疑!!這非常容易(光靠OE就可以簡單達到了)

Relays只能限制哪些使用者可寄給非電子郵件伺服器負責的E-mail Domain

在不區分「收」「發」E-mail Server的情況下,但很難限制別人假冒你的E-mail Address透過你公司的E-mail Server寄給你自己,或透過其它E-mail Server寄給其它公司。

雖然可以從Mail Header,但一般使用者根本不會看,更看不懂。

如何解決此問題呢?我們可以採用SenderID 或 SPF 機制

SenderID與SPF主要為Microsoft與Pobox所推出之防堵垃圾郵件、釣魚郵件、驗明寄件者身份之機制
此機制是依據已設定DNS SPF Record的E-mail Domain來驗明寄件者身份,加以拒絕假冒E-mail Domain的電子郵件,以保障已設定DNS SPF Record的E-mail Domain


以下為SPF/SenderID流程圖,SPF/SenderID流程如下述

1.寄件者傳送E-mail給收件者
2.收件者的Inbound E-mail Server接收E-mail
3.Inbound E-mail Server依E-mail的寄件者 E-mail Domain至該E-mail Domain查詢DNS SPF Record
  檢查寄件者的E-mail Server IP是否列於SPF Record的IP清單中
4.如果寄件者的E-mail Server IP列於SPF Record的IP清單中,則這封信件可取得授權並可正常傳送至收件者信箱
  反之則會被退信



二、新增DNS SPF record for Mail Domain

(1)首先前往以下其中一網址,依其需求協助產生 DNS SPF Record
The SPF Setup Wizard
Sender ID Framework SPF Record Wizard

下列以www.anti-spamtools.org為申請範例

(1-1)輸入E-mail Domain


(1-2)查詢E-mail Domain是否已有設定SPF,請直接點選「Next」


(1-3)Domain Not Used for Sending E-Mail
該E-mail Domain是否有在傳送E-mail


(1-4)Inbound Mail Servers Send Outbound Mail
「收」E-mail的E-mail Server是否也有在「發」E-mail


(1-5)Outbound Mail Server Addresses
「發」E-mail的E-mail Server IP
註:是否有其他未列在MX Record的SMTP Server在傳送電子郵件,適用於將透過代管E-mail Server或ISP Relays的情況


(1-6)Reverse DNS Lookup
DNS反解析


(1-7)OutSourced Domains


(1-8)Default
一般設定為「No」


(1-9)Scope
一般設定為「Both」


(1-10)點選「Next」後,會出現依你上一頁所設定的結果。請將此結果複製並設定於你公司的DNS Server


(2-1)Bind DNS
編輯DNS SPF record,請針對你要設定的 E-mail Domain新增剛剛所產生的SPF Record
代碼: [選擇]

myunix.idv.tw. IN TXT "v=spf1 a mx mx:mail.myunix.idv.tw -all"


(2-2)Windows DNS
請參閱 How to Add an SPF Record in Windows 2000 and Windows 2003 DNS

註:SPF record是TXT類型

(3)重新載入DNS Server

(4)你可以傳送電子郵件給以下的E-mail來驗證你剛剛所建立的DNS SPF record是否正確

    check-auth@verifier.port25.com
    spfenabled@pobox.com


三、安裝設定SPF on Postfix

(1)請先下載以下Perl Moudle並安裝

    1.Net-CIDR-Lite
    2.Sys-Hostname-Long
    3.Socket6
    4.IO-Socket-INET6
    5.Digest-HMAC
    6.Net-IP
    7.Net-DNS
    8.URI
    9.Mail-SPF-Query


(2)測試Mail-SPF-Query
perl test.pl

(3)編輯 sample/postfix-policyd-spf
第20行前面加上 # 符號,以避免一直處於測試狀態
[Old]
代碼: [選擇]
push @HANDLERS, "testing";

[New]
代碼: [選擇]
#  push @HANDLERS, "testing";

(4)產生 smtpd-policy.pl
代碼: [選擇]
cp sample/postfix-policyd-spf /usr/libexec/postfix/smtpd-policy.pl

(5)編輯Postfix - master.cf

代碼: [選擇]
policy  unix  -       n       n       -       -       spawn
      user=nobody argv=/usr/bin/perl /usr/libexec/postfix/smtpd-policy.pl


(6)編輯Postfix - main.cf

代碼: [選擇]
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policy

注意!!check_policy_service unix:private/policy 必須放置於 reject_unauth_destination 後面,如有內部伺服器或用戶端會透過此伺服器傳送郵件至內部使用者,記得將其IP設定在 mynetworks。

(7)重新啟動 Postfix

(8)請測試以下步驟
(8-1)請使用非mynetworks之IP假冒你的網域傳送電子郵件至內部使用者,應該會被退信,並在maillog會出現類似以下的訊息

    Sep 30 02:08:54 fw postfix/smtpd[11756]: connect from unknown[192.168.xx.yy]
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: client_address=192.168.xx.yy
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: client_name=unknown
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: helo_name=myunix.idv.tw
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: instance=2dec.433c2dc2.0
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: protocol_name=SMTP
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: protocol_state=RCPT
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: queue_id=
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: recipient=vincent@myunix.idv.tw
Sep 30 02:09:14 fw postfix/policy-spf[11770]: Attribute: request=smtpd_access_policy
Sep 30 02:09:15 fw postfix/policy-spf[11770]: Attribute: sasl_method=
Sep 30 02:09:15 fw postfix/policy-spf[11770]: Attribute: sasl_sender=
Sep 30 02:09:15 fw postfix/policy-spf[11770]: Attribute: sasl_username=
Sep 30 02:09:15 fw postfix/policy-spf[11770]: Attribute: sender=123@myunix.idv.tw

Sep 30 02:09:15 fw postfix/policy-spf[11770]: Attribute: size=0
Sep 30 02:09:15 fw postfix/policy-spf[11770]: : SPF fail: smtp_comment=Please see http://spf.pobox.com/why.html?sender=123%40myunix.idv.tw&ip=192.168.xx.yy&receiver=fw.myunix.idv.tw, header_comment=fw.myunix.idv.tw: domain of 123@myunix.idv.tw does not designate 192.168.xx.yy as permitted sender
Sep 30 02:09:15 fw postfix/policy-spf[11770]: handler sender_permitted_from: REJECT Please see http://spf.pobox.com/why.html?sender=123%40myunix.idv.tw&ip=192.168.xx.yy&receiver=fw.myunix.idv.tw
Sep 30 02:09:15 fw postfix/policy-spf[11770]: handler sender_permitted_from: REJECT Please see http://spf.pobox.com/why.html?sender=123%40myunix.idv.tw&ip=192.168.xx.yy&receiver=fw.myunix.idv.tw is decisive.
Sep 30 02:09:15 fw postfix/policy-spf[11770]: decided action=REJECT Please see http://spf.pobox.com/why.html?sender=123%40myunix.idv.tw&ip=192.168.xx.yy&receiver=fw.myunix.idv.tw
Sep 30 02:09:15 fw postfix/smtpd[11756]: NOQUEUE: reject: RCPT from unknown[192.168.xx.yy]: 554 <vincent@myunix.idv.tw>: Recipient address rejected: Please see http://spf.pobox.com/why.html?sender=123%40myunix.idv.tw&ip=192.168.xx.yy&receiver=fw.myunix.idv.tw; from=<123@myunix.idv.tw> to=<vincent@myunix.idv.tw> proto=SMTP helo=<myunix.idv.tw>

Sep 30 02:09:41 fw postfix/smtpd[11756]: disconnect from unknown[192.168.xx.yy][/list]

(8-2)請使用非mynetworks之IP使用外面的E-mail Domain傳送電子郵件至內部使用者,應該正常。
(8-4)請使用mynetworks之IP使用內部的E-mail Domain傳送電子郵件至內部使用者,應該正常。
(8-4)請使用mynetworks之IP使用內部的E-mail Domain傳送電子郵件至外部使用者,應該正常。

四、參考網址
http://www.microsoft.com/mscorp/safety/technologies/senderid/default.mspx
http://spf.pobox.com/

thomasho

  • 憂鬱的高中生
  • ***
  • 文章數: 132
    • 檢視個人資料
在Postfix上安裝設定SPF/SenderID
« 回覆 #1 於: 2006-01-04 23:45 »
您好,小弟照著您的方式安裝了...不過卻出現這樣的錯誤訊息......

Jan  4 23:43:23 wakeasphost postfix/spawn[8155]: warning: command /usr/bin/perl exit status 2
Jan  4 23:43:23 wakeasphost postfix/smtpd[8146]: warning: premature end-of-input on private/policy while reading input attribute name
Jan  4 23:43:23 wakeasphost postfix/smtpd[8146]: warning: problem talking to server private/policy: Connection reset by peer

請問小弟哪裡有弄錯的嗎? :oops:

johnkk

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
在Postfix上安裝設定SPF/SenderID
« 回覆 #2 於: 2006-11-15 22:30 »
小弟我照著安裝..@.@ log內也都正常 結果 我從hotmail發信進來 結果信全收不進來...~.~

我安裝 MailScanner + Postfix
不解 為何裝了 spf 信全都進不來..~.~