spf 的作用是对邮件的接收方提供一种验证。看看邮件的发送方,是否在发送垃圾邮件。如果没有通过 spf, 邮件可能被判定为垃圾邮件。
使用 postfix 进行邮件转发的时候,因为发信的ip已经变化了,所以会导致 spf 验证失败。
通过 postsrsd 可以重写地址
这样就可以避免,spf 验证失败。
具体的原理是就是 发送邮件的时候,发信的地址进行改写,这样就可以通过验证。
测试的环境
- 邮箱 xxx@qq.com 作为发信的邮箱
- postfix 设置 邮件转发 。 对于 xxx@youxiangm.com 收到的邮件 转发到 xxx@gmail.com 邮箱
spf 验证失败的原因: 因为发信的邮箱域是 qq.com, 转发的时候,发信的地址是 postfix 的服务器地址,所以验证失败。
解决的postsrsd : 进行转发的时候,通过 postsrsd ,修改 xxx@qq.com 的地址是 xxx...xxx@youxiangmi.com 这样的地址。 这样修改域 youxiangmi.com 的 spf 记录 就可以和 postfix服务器的地址相匹配了。具体操作可以安装下面的进行。
postsrsd 的安装
cd ~
wget https://github.com/roehling/postsrsd/archive/master.zip
unzip master
cd postsrsd-master/
make
sudo make install
修改 postfix 的配置信息
sudo postconf -e "sender_canonical_maps = tcp:127.0.0.1:10001"
sudo postconf -e "sender_canonical_classes = envelope_sender"
sudo postconf -e "recipient_canonical_maps = tcp:127.0.0.1:10002"
sudo postconf -e "recipient_canonical_classes = envelope_recipient"
检查 域是否是 youxiangmi.com,测试的使用用自己的域名。
postconf -h mydomain
如果不是 修改 postsrsd 的配置文件 /etc/default/postsrsd
SRS_DOMAIN=youxiangmi.com
然后重新启动
service postsrsd restart
service postfix restart
发送邮件测试