本文共 3555 字,大约阅读时间需要 11 分钟。
DomainKey 介绍:
雅虎的这项技术被称之为“DNS端的电子签名(DomainKeys)”,专门对付各种各样经过改头换面的垃圾邮件。 垃圾邮件经常通过改动电子邮件的发送着对用户进行欺骗,用户往往会误以为这不是垃圾邮件,因而打开查看的可能性加大。 雅虎的“DomainKeys”允许接受电子邮件的系统对邮件进行检查,以确定邮件发送者的身份是不是假的。 “DomainKeys”通过使用加密技术完成电子邮件发送者身份的验证。外发的邮件通过私人密码进行数字签名, 而接受电子邮件的系统则使用公共密码对签名进行核实。一. 安装domainkey
实施步骤 OS:RedHat 2.6.9-55.EL postfix:postfix-2.5.1-1.mysql.sasl2.vda.rhel4 dk-milter:dk-milter-1.0.1.tar.gz1. 安装dk-milter
注意: 安装之前请先检查是否安装了sendmail-devel软件包 因为在编译时会有依赖关系 下载http://nchc.dl.sourceforge.net/sourceforge/dk-milter/dk-milter-1.0.1.tar.gz[root@ opt]#tar zxvf dk-milter-1.0.1.tar.gz [root@ opt]#cd dk-milter-1.0.1 [root@ opt]#sh Build -c [root@ opt]#sh Buld install [root@ opt]#cd dk-filter [root@ opt]#chmod +x gentxt.csh [root@ opt]#./gentxt.sh default *****.com [root@ opt]#cp default.private /etc/postfix/****.com.key.pem [root@ opt]#chmod 600 /etc/postfix/****.key.pem [root@ opt]#/usr/bin/dk-filter -A -l -p inet:8891@localhost -d ****.com -s /etc/postfix/****.com.key.pem -S default dk-filter 参数说明: -a peerlist # 哪些主机不做检查 -A # dk-filter 挂掉后自动重启 -b modes # s (singer) / v (verify) 预设为sv -c canon # 预设是 simple (邮件头不变), # 另外是 relaxed (邮件头可能修改,去除空白,不换行) -C config # 详细配置 -d domlist # 要签名的域名列表,以逗号分隔 -D # -f # 前台执行 -h # 在 Mail Header 中加入 X-DomainKeys 信息 -H # DomainKey-Signature 说明签名的 header 信息 -i ilist # 只做签名, 不做验证,默认127.0.0.1 -I elist # 通过此主机转发的信做签名,不做验证 -l # log 记录日志到 maillog -m mtalist # MTA 名字,也就是 DaemonPortOptions 中的 Name,預設是全部 -M macrolist # MTA macros which enable signing -o hdrlist # 哪些 Header 不 sign,Ex: -o to,subject,date , From 一定要 sign -P pidfile # pid file 进程路径 -s keyfile # private key -S selector # selector,会以 selector._domainkey.Domain 进行 type=TXT 查询 -u userid # 运行用户 -V # 检查版本 二. DNS配置: 系统自带的BIND,为节省时间 我在这里使用webmin做了配置记录 这个webmin很强大了,配置简单不容易出错 DNS基本配置不是本文重点 最基本的DNS A,MX记录等在这里就不介绍了 只写出与本文相关的配置:如下
1. 在dns 配置文件中添加文本记录:
[这个记录很难在服务商的服务器上添加] default._domainkey.****.com. IN TXT "k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALcmSvH4TMzpP5zi6zOy/Ffwl4FQ/irk 8T6NhlfqeJuPY04uC8jFEE603zU5iktvK/VKb6P9WHSA54CSlULzaXcCAwEAAQ==" _domainkey.****.com. IN TXT "k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALcmSvH4TMzpP5zi6zOy/Ffwl4FQ/irk 8T6NhlfqeJuPY04uC8jFEE603zU5iktvK/VKb6P9WHSA54CSlULzaXcCAwEAAQ=="测试是否生效: nslookup
>set type=txt
>default._domainkey.××××.com
Non-authoritative answer:
default._domainkey.××××.com text =
"k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALcmSvH4TMzpP5zi6zOy/Ffwl4FQ/irk 8T6NhlfqeJuPY04uC8jFEE603zU5iktvK/VKb6P9WHSA54CSlULzaXcCAwEAAQ=="出现上边的公钥就表示没问题了
2. 设置 SPF Sender Policy Framework。SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。 当你定义了你的domain name的SPF记录之后,接收邮件方会根据你的SPF记录来确定连接过来的IP地址是 否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。 在DNS服务器上添加如下记录: *****.com. IN TXT "v=spf1 a mx ~all" 3. 修改 /etc/postfix/main.cf 添加如下参数: smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891 重启postfix 三. 测试 发一测试邮件到互联网上的邮件用户 Return-Path: <andyliu@****.com> X-Original-To: andyliu@****.cn Delivered-To: andyliu@****.cn Received: from mail.****.com (unknown [XXX.XXX.XXX.XXX]) by mail.****.cn (Postfix) with ESMTP id 0CEFA7C0352 for <andyliu@e****.cn>; Thu, 1 Jul 2010 15:22:16 +0800 (CST) Received: from test-pc (unknown [192.168.6.1]) by mail.****.com (Postfix) with ESMTPA id 673329810B for <andyliu@****.cn>; Thu, 1 Jul 2010 14:45:30 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=****.com; c=simple; q=dns; b=Qg2Qo63K8I/gMI2xL5Gc4svTlyvLeuidFflG9L0xgeJxqnDvx+oKGMeXOgOQ+nET1 LtOXPB4Llf9kAcBL9n6LQ== 其中Domainkey 部分就说明了公共密钥已经添加到了邮件头中! 恭喜你完成了!本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/342332,如需转载请自行联系原作者