[Postfix进阶]Postfix配置SPF并禁止伪造发件人
最近讨论比较多的是邮件被判断为SPAM的一些补救措施,接下来的几篇文章都是关于postfix邮件系统。
当服务器接收到邮件时会检查域名的SPF记录与客户端IP是否匹配,如匹配就被认为是真实的邮件,不匹配就被认为是假冒的邮件(如果对方域名未做SPF记录肯能会被误报)。
额,至于什么是SPF,当然不是防晒指数,而是指Sender Policy Framework。翻译过来就是发信者策略架构,比较拗口,通常都直接称为SPF。
基本的SPF验证,请移驾到《Postfix添加DKIM协议,完善DNS中的SPF解析》查看。
下面说的是配置发信系统,附带SPF检测,配置本地检测系统。
安装不难,如下(算原创吧,亲身安装编辑):
yum install -y perl-Mail-SPF perl-Sys-Hostname-Long perl-NetAddr-IP
wget https://launchpad.net/postfix-policyd-spf-perl/trunk/release2.010/+download/postfix-policyd-spf-perl-2.010.tar.gz
tar zxvf postfix-policyd-spf-perl-2.010.tar.gz
cp postfix-policyd-spf-perl-2.010/postfix-policyd-spf-perl /usr/local/lib/policyd-spf-perl
chmod +x /usr/local/lib/policyd-spf-perl
编辑/etc/postfix/master.cf,添加:
policy unix - n n - 0 spawn
user=nobody argv=/usr/local/lib/policyd-spf-perl
接着编辑/etc/postfix/main.cf,添加:
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_sender_domain,
reject_unauth_destination,
check_policy_service unix:private/policy
policy_time_limit = 3600
注意:check_policy_service unix:private/policy-spf 必須放置于 reject_unauth_destination 后面。
重启下postfix即可生效。如果不生效的话,可用python来支持。
下载Python2.6.7.tar.bz2 :
python -V
wget http://www.python.org/ftp/python/2.6.7/Python-2.6.7.tar.bz2
tar jxvf Python-2.6.7.tar.bz2
cd Python-2.6.7
./configure
$make && make install
mv /usr/bin/python /usr/bin/python.bak
cp /usr/local/bin/python2.6 /usr/bin/python
python -V
解决系统python软链接指向python2.6版本后,yum不能正常工作
vi /usr/bin/yum将文本编辑显示的#!/usr/bin/python修改为#!/usr/bin/python2.4,:wq保存修改即可。
安装python版的policy-spf:
wget https://launchpad.net/pypolicyd-spf/1.2/1.2/+download/pypolicyd-spf-1.2.tar.gz
tar zxvf pypolicyd-spf-1.2.tar.gz
cd pypolicyd-spf-1.2
python setup.py build
python setup.py install
编辑/etc/postfix/master.cf,添加:
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/python /usr/bin/policyd-spf
重启下postfix即可生效。
至于禁止发送伪造发件人邮件嘛,只要改改配置就好了。
编辑/etc/postfix/main.cf,添加或修改如下:
smtpd_sender_login_maps = hash:/etc/postfix/sasl_sender
smtpd_sender_restrictions =
reject_sender_login_mismatch
smtpd_recipient_restrictions =
permit_sasl_authenticated
然后,新建用户与账号匹配表,如:
echo "root@kn007.net root" > /etc/postfix/sasl_sender
echo "no-reply@kn007.net www" > /etc/postfix/sasl_sender
echo "www@kn007.net www" > /etc/postfix/sasl_sender
最后,生成hash数据库:
postmap /etc/postfix/sasl_sender
Policy-spy默认不阻止验证失败的发件人邮件,会在邮件头部添加Received-SPF: softfail标签,如果要对其处理可使用Postfix过滤规则header_checks进行匹配操作。
在/etc/postfix/header_checks下,添加:
/Received-SPF: softfail/ REJECT
在/etc/postfix/main.cf中,添加:
header_checks = pcre:/etc/postfix/header_checks
ok,这样一切在服务器自身通不过SPF的会被禁止发送。
我会告诉你,我在添加邮件SPF验证的时候,postfix并没有生效么。。我的vps系统及postfix版本,有点问题(猜的),所以,发送时并没有附带SPF结果。其他vps应该是没问题的。但是因为是本地其实功能不大,只是他在发出去的邮件会带Received-SPF: pass,使被检测为SPAM程度减少。
Leave [Postfix进阶]Postfix配置SPF并禁止伪造发件人 to:
Read more #postfix posts
Best Posts From kn007
We have not curated any of kn007's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From kn007
- Windows下批量转换Silk v3音频文件为MP3格式
- [进阶]批量解码转换SILK V3编码音频为其他格式
- How to reduce/shrink ibdata1 in MySQL 5.6 // MySQL 5.6 如何给ibdata1瘦身
- 生成Certificate Signing Request(CSR)
- 记一次Kernel Panic修复
- Postfix小结,补充点其他点滴记录
- [Postfix进阶]对于邮件被标记为Spam的一些可能原因分析
- [Postfix进阶]使用新版DKIM签名(OpenDKIM)
- [Postfix进阶]Dovecot 2 配置小谈,简单聊下邮件系统的配置
- [Postfix进阶]SMTP TLS 加密
- [Postfix进阶]Postfix配置SPF并禁止伪造发件人
- [Postfix进阶]CentOS邮件系统添加DKIM签名
- SSH登录时自动邮件提醒