日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

postfix增加spf過(guò)濾

 芥納須彌 2016-02-15

    

說(shuō)明:
公司的郵件服務(wù)器經(jīng)常收到垃圾郵件,通過(guò)查看/var/log/maillog日志看到有很多來(lái)源為bsoibsfs.com這種不規(guī)則,ping也ping不到的域名。如
Jul 28 07:40:37 FD10 postfix/qmgr[20316]: 5470414C83D6: from=, size=14177, nrcpt=3 (queue active)
這主要是因?yàn)榫W(wǎng)路上有人通過(guò)搭建郵件服務(wù)器,任意偽造發(fā)件人地址,從而發(fā)送垃圾郵件。
要解決這個(gè),可以通過(guò)配置郵件服務(wù)器支持 SPF,對(duì)每封進(jìn)入的郵件進(jìn)行SPF驗(yàn)證,過(guò)濾這些這種亂七八糟的域名。

SPF通過(guò)在域名中添加txt記錄,向支持SPF功能的郵件服務(wù)器提供驗(yàn)證信息,心使別人能驗(yàn)證自己;另一方面也可以驗(yàn)證別人。配置spf需要會(huì)進(jìn)行大量dns查詢,因此郵件服務(wù)器的dns請(qǐng)選擇離自己最近的dns。

解決:有兩個(gè)兼容的策略模塊給postfix使用,一個(gè)是用Python編寫(xiě),另一種是用Perl編寫(xiě)的。Perl包滿足最基本的要求,Python包配置復(fù)雜一點(diǎn)。
第一種方式:
1. 安裝SPF模塊(Perl)

# wget https:///postfix-policyd-spf-perl/trunk/release2.010/+download/postfix-policyd-spf-perl-2.010.tar.gz
# perl -MCPAN -e 'install version'
# perl -MCPAN -e 'install NetAddr::IP'
# perl -MCPAN -e 'install Mail::SPF'
# perl -MCPAN -e 'install Sys::Hostname::Long'
# tar zxvf postfix-policyd-spf-perl-2.010.tar.gz
# cd postfix-policyd-spf-perl-2.010
# cp postfix-policyd-spf-perl /usr/libexec/postfix/policyd-spf-perl

 
2. 配置Postfix支持SPF檢查

# vi /etc/postfix/master.cf  //添加以下內(nèi)容:
## spf check
policy-spf unix -       n       n       -       -       spawn
  user=nobody argv=/usr/bin/perl /usr/libexec/postfix/policyd-spf-perl

 

# vi /etc/postfix/main.cf  //添加以下內(nèi)容:
smtpd_recipient_restrictions =
        ......,
        check_policy_service unix:private/policy-spf

 
3. 重新載入postfix服務(wù)

# service postfix reload

 
4. 域名增加SPF記錄:
給自己的域名添加TXT記錄,含義:
*@dspam.org.cn賬戶只能在116.254.202.94的IP發(fā)送郵件,否則SPF驗(yàn)證不通過(guò)。

# dig -t txt dspam.org.cn
dspam.org.cn.           600     IN      TXT     "v=spf1 ip4:116.254.202.94 ~all"

 
下面這條,是查找我自己的域名

# nslookup -query=txt gaingreat.com
;; Got SERVFAIL reply from 218.85.157.99, trying next server
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
gaingreat.com   text = "v=spf1 a mx ~all"

Authoritative answers can be found from:

 
5. 配置成功后,Postfix的SPF檢查日志如下:

# tail -10f /var/log/maillog
postfix/policy-spf[15857]: Policy action=PREPEND Received-SPF: softfail (www.haiyun.me: Sender is not authorized by default  //錯(cuò)誤,可以看到softfail
postfix/policy-spf[15726]: Policy action=PREPEND Received-SPF: pass (qq.com: Sender is authorized to use 'qq@qq.com'  //#正確,pass

 
6. Policy-spy默認(rèn)不阻止驗(yàn)證失敗的發(fā)件人郵件,會(huì)在郵件頭部添加Received-SPF: softfail標(biāo)簽,如果要對(duì)其處理可使用Postfix過(guò)濾規(guī)則header_checks進(jìn)行匹配操作

# cat /etc/postfix/header_checks  //添加header_checks匹配規(guī)則,拒絕未添加txt的域名,及txt認(rèn)證不通過(guò)的
/Received-SPF: none/   REJECT
/Received-SPF: softfail/   REJECT

 
7. 編輯主Postfix主配置文件應(yīng)用此規(guī)則:

# cat main.cf
header_checks = pcre:/etc/postfix/header_checks

 
8. 再次測(cè)試效果,這時(shí)再查看/var/log/maillog就可以看到以下這條記錄,已經(jīng)reject掉了

Jul 28 16:47:31 FD10 postfix/cleanup[9605]: 7408314C86BC: reject: header Received-SPF: none (smartech.com.tw: No applicable sender policy available) receiver=unknown; identity=mailfrom; envelope-from="qtaqw@smartech.com.tw"; helo=smartech.com.tw; client-ip=101.71.37.109 from unknown[101.71.37.109]; from=<qtaqw@smartech.com.tw> to=<tech@lala.com> proto=ESMTP helo=<smartech.com.tw>: 5.7.1 message content rejected

 
第二種方式,這種方式我還沒(méi)有嘗試,有興趣的可以去試下。
1. 安裝SPF模塊(python)

# wget https:///pypolicyd-spf/1.1/1.1/+download/pypolicyd-spf-1.1.tar.gz
# tar zxvf pypolicyd-spf-1.1.tar.gz
# cd pypolicyd-spf-1.1
# python setup.py build
# python setup.py install

 
2. 配置Postfix支持SPF檢查

# vi /etc/postfix/master.cf  //添加以下內(nèi)容:
## spf check
policy-spf unix -       n       n       -       -       spawn
    user=nobody argv=/usr/bin/python /usr/bin/policyd-spf
# vi /etc/postfix/main.cf   //添加以下內(nèi)容:
smtpd_recipient_restrictions =
        ......,
        check_policy_service unix:private/policy-spf

 
3. 重新載入postfix服務(wù)

# service postfix reload

 
附錄:
附錄1:使用最新版的pypolicyd-spf,需要python-2.6以上版本支持

附錄2:spf只能針對(duì)那些偽造的域名進(jìn)行認(rèn)證
如果來(lái)信地址為lalal@qq.com這種合法的且經(jīng)過(guò)認(rèn)證的,比如lalal@qq.com郵箱被盜,被拿來(lái)發(fā)垃圾郵件這種,則只能通過(guò)郵件內(nèi)容過(guò)濾來(lái)過(guò)濾垃圾郵件。知道的spamlock這個(gè)插件,可以實(shí)現(xiàn)內(nèi)容過(guò)濾,目前還沒(méi)嘗試?。。?/p>

附錄3:spf會(huì)屏蔽沒(méi)有做txt域名解析記錄的域名,如果我們又需要接收他們的郵件怎么辦。
這時(shí)就需要使用postfix的白名單黑名單。具體詳見(jiàn):postfix白名單黑名單

附錄4:安裝perl -MCPAN -e ‘install Mail::SPF’安裝時(shí),一直出現(xiàn)。導(dǎo)出Mail::SPF模塊無(wú)法安裝上

This package fails to build on current sid:

  t/00.00-class-misc.t .......... ok
  t/00.01-class-util.t .......... ok
  t/00.02-class-request.t ....... ok
  t/00.03-class-result.t ........ ok
  Unknown error on DNS 'A' lookup of 'example.com' (EDNSError) at /tmp/buildd/mail-spf-perl-2.9.0/blib/lib/Mail/SPF/Server.pm line 573.
  # Looks like you planned 23 tests but ran 19.
  # Looks like your test exited with 255 just after 19.
  t/00.04-class-server.t ........ 
  Dubious, test returned 255 (wstat 65280, 0xff00)
  Failed 4/23 subtests 
  [...]
  Test Summary Report
  -------------------
  t/00.04-class-server.t      (Wstat: 65280 Tests: 19 Failed: 0)
    Non-zero exit status: 255
    Parse errors: Bad plan.  You planned 23 tests but ran 19.

這可能是因?yàn)镸ail::SPF需要調(diào)用的Net::DNS(版本>=0.75)跟libnet-dns-perl不太兼容。具體可以看 libnet-dns-resolver-programmable-perl: broken with newer Net::DNS
可以通過(guò)給Net::DNS打補(bǔ)丁,補(bǔ)丁在https://rt./Public/Bug/Display.html?id=95901,但我這補(bǔ)丁一直打不進(jìn)去 – -,直接下載Net-DNS-0.72.tar.gz,舊版的Net::DNS直接編譯安裝,ok

# wget http://www./download/Net-DNS-0.72.tar.gz
# tar zxvf Net-DNS-0.72.tar.gz 
# cd Net-DNS-0.72
# less README 
# perl Makefile.PL 
# make
# make install
# perl -MCPAN -e 'install Mail::SPF'可以!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多