`

避免我们的邮件服务器发出的邮件被当成垃圾邮件

阅读更多

转至:

http://hi.baidu.com/dongfangmn/blog/item/a214ec013b554d037aec2c12.html

 

 

 

(经过两天的努力,终于搞好了SPF和DKIM。高兴之余也要记录下来才行)
(DKIM是什么呢?根据DKIM的官方(http://www.dkim.org)说法,是“DomainKeys Identified Mail”,也就是被域名验证过的邮件。)
由于网络上太多垃圾邮件,其中大部分垃圾邮件都冒充其他的域名给我们发送邮件。那么我们怎么知道这个邮件真的是从邮件所声明的域发来的呢?比如,我可以设置一个SMTP服务器,设置邮件域名为gmail.com,那么我就可以自己添加一个帐号是webmaster@gmail.com来发邮件了。

大家觉得听起来还挺可怕的。那么怎么可以避免这些不是从真正的gmail.com服务器发来的垃圾邮件呢?有人说可以通过邮件头查看发送源。对,但我们不可能每一封邮件都查看它的邮件头吧?我们要的是接收邮件服务器可以过滤掉这些垃圾邮件。

我总结了一下常见的做法:

一、通过在DNS里面设置SPF记录,向Internet声明从我们自己的域名发出的邮件会通过哪些服务器来发送。这方法很简单,只要我们的DNS供应商提供的管理界面中可以添加SPF记录就可以设置了(不是所有的供应商会提供这设置,我的域名是在godaddy.com上注册的,可以设置SPF记录)。设置时,添加一个SPF记录,然后输入域名,如果是本域,可用@来表示。然后在VALUE中输入如“v=spf1 ip4:67.202.107.106 -all”的值。 这值分三部分:

(1)v=spf1 说明是一个SPF的v1记录

(2)ip4:67.202.107.106 说明邮件会从此声明IPv4地址发出。它可以是一个IP,或一个IP段。如果有多个IP或多个IP段的话,可以声明多个ip4记录(如“ip4:1.0.1.0/24 ip4:1.0.2.0/24″),每个ip4记录间用空格分隔。另外,除了用IPv4外,还可以有如下选择:

1) ip6: 使用 IPv6 进行验证。
2) a: 使用一个域名进行验证。这将引起对域名服务器进行一次 A RR 查询。可以按照 a:domain, a:domain/cidr 或 a/cidr 的形式来使用。
3) mx: 使用 DNS MX RR 进行验证。MX RR 定义了收信的 MTA,这可能和发信的 MTA 是不同的,这种情况基于 mx 的测试将会失败。 可以用 mx:domain, mx:domain/cidr 或 mx/cidr 这些形式进行 mx 验证。
4) ptr: 使用域名服务器的 PTR RR 进行验证。这时,SPF 使用 PTR RR 和反向图进行查询。如果返回的主机名位于同一个域名之内,就验证通过了。这个参数的写法是 ptr:domain
5) exist: 验证域名的存在性。可以写成 exist:domain 的形式。
6) ext: 定义对 type 的可选扩展。如果没有这个字段,那么仅使用单个记录进行问询。
7) mod: 这是最后的类型指示,作为记录的一个修正值。修正值 描述:
  redirect 重定向查询,使用给出的域名的 SPF 记录。
  以 redirect=domain 的方式使用。
  exp 这条记录必须是最后一条,允许给出一条定制的失败消息。
  IN TXT “v=spf1 mx -all exp=getlost.example.com”
  getlost IN TXT “You are not authorized to send mail for the domain”
(3)-all 定义匹配时的返回值,可有如下选择:

1) + 缺省值。在测试完成的时候表示通过。
2) – 表示测试失败。这个值通常是 -all,表示没有其他任何匹配发生。
3) ~ 表示软失败,通常表示测试没有完成。
4) ? 表示不置可否。这个值也通常在测试没有完成的时候使用。

所以总结如上资料,“v=spf1 ip4:67.202.107.106 -all”的意思是这个域只有67.202.107.106这个IP可以发邮件出来,其他IP的都是非法的。(以上内容参考自:http://baike.baidu.com/view/1372988.htm

二、通过Domainkeys或DKIM给自己的邮件添加一个数字验证。Domainkeys是有Yahoo!提出一个标准,但由于不是完成开源,所以被崇尚开源的DKIM所替代。Domainkeys和DKIM的工作原理都是一样的,就是在邮件服务器上生成一个数字证书,把此数字证书的公钥添加到DNS的txt记录中。然后在邮件服务器上对每封发出的邮件的邮件头中的基本信息(如发件人,收件人,主题等)通过此数字证书的密钥进行加密,把加密后的内容添加到邮件头中。当支持Domainkeys或DKIM的接收邮件服务器(如gmail.com)收到此邮件后,就会通过DNS查询得到发送域中的公钥信息,通过此公钥解密邮件头的相关加密内容,然后再与对应的基本信息比较,看是否匹配。如果发现邮件不匹配的话,就可以认为这邮件被篡改或伪造的了。

我在我的邮件服务器上设置了DKIM,因此用DKIM来说明一下安装的方法:

(可参考http://eric.lubow.org/2009/mail/setting-up-dkim-and-postfix/

(1)下载DKIM的source包,编译安装。由于DKIM需要libmilter模块,如果你用的SMTP软件是sendmail的话,会在sendmail中自带此模块。但如果你用的是其他软件(如postfix)的话,那么就要先下载最新的sendmail source包,解压后可找到子目录“libmilter”。在里面用./Build和./Build install安装libmilter模块。

(2)通过dkim-genkey生成证书。dkim可以给多个服务器发布不同的证书验证。方法是通过Selector来区分。在使用dkim-genkey生成证书时,可通过参数-s来设置selector。如果不指定selector的话,系统默认使用default作为selector。参数-d是域名。

如: dkim-genkey -s mail1 -d jackyhe.com 可生成一个selector是mail1的jackyhe.com下的证书。

名称成功执行后,会在当前目录生成两个名字叫mail1.txt和mail1.private的文件。mail1.txt是公钥部分,需要添加到DNS的txt记录中。

内容如:

mail1._domainkey IN TXT “v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2ubSRHUKzL4ucfzuMKEHyy6rx/WlrZB5SKYKrCsSJWUpQstNqjcaLntaQtmKEnDgDr5rMvklaByf8vE5guqZerZ8UWeBx5joIwuohjkapgM/R6lFmI9VUj8N/c5O9AxQAOQLgnDNPl5OQamUuOp9c5W0jLbYd/hrymPYBSKEi0wIDAQAB” ; —– DKIM mail1 for jackyhe.com

我们需要在DNS的管理界面中添加一个新的txt记录。名字写“mail1._domainkey”(txt文件中红色部分,不同的selector就不同了)。值为txt文件中双引号的内容(如蓝色部分)。

然后,把mail1.private(这是密钥)保存在服务器上的安全的目录。如/etc/mail/dkim/keys。

(3)配置DKIM,DKIM的配置文件是dkim-filter.conf。里面有很多默认的设置。我们只要改下面的内容就可以了:

Domain                  jackyhe.com   ## 设置域名
ExternalIgnoreList      /etc/mail/dkim/trusted-hosts ## 设置可信任机器,如127.0.0.1

InternalHosts           /etc/mail/dkim/trusted-hosts

KeyFile                         /etc/mail/dkim/keys/mail1.private ##就是密钥的保存位置

Selector                mail1 ##本机使用的selector的名字,比如mail1

LocalADSP               /etc/mail/dkim/local-adsp-rules ## 可在此文件中添加自己的ADSP规则(ADSP规则在下面说明)

Socket                  local:/var/run/dkim-milter/dkim.sock

(4)启动DKIM,如 /usr/sbin/dkim-filter -x /etc/dkim-filter.conf

(5)在原来的SMTP服务端(如sendmail,postfix)上修改设置。如postfix中可添加如下设置:

smtpd_milters = unix:/var/run/dkim-milter/dkim.sock
non_smtpd_milters = unix:/var/run/dkim-milter/dkim.sock
milter_protocol = 2

重启SMTP服务后看是否可以发邮件。如果在maillog中看到”DKIM-Signature” header added,就应该大功告成了。

试试发邮件给gmail.com的邮箱,然后在gmail中看看这邮件的邮件头,看看有没有找到dkim=pass。如果有就恭喜你了。

(6)最后说说什么是ADSP。在DKIM说明(http://www.dkim.org/specs/draft-ietf-dkim-ssp-04.html)中提到。我们可以有如下设置来限制没有通过DKIM签名而又用我们的域发出的邮件。

我们可以在DNS中添加一个新的TXT记录,名称是“_adsp._domainkey”,值是“dkim=all”。

“dkim=”后可有三个可选值:

unknow: 意思是从这个域发出的邮件可带DKIM证书,也可不带。

all: 意思是从这个域名发出的证书都应该带DKIM证书的。

discardable: 意思是强烈建议接收邮件的对端把没有DKIM证书或DKIM验证失败的邮件丢弃掉。

而之前提到的“LocalADSP”中的设置,就是在自己服务器上设置规定,在接收对方的邮件时不查询DNS的ADSP记录,而是按照自己的要求设置。

如果大家有疑问,可留意一起探讨。

分享到:
评论

相关推荐

    遥志邮件服务器

    标准的互联网邮件服务器软件,支持SMTP/POP3/ESMTP等标准互联网邮件服务协议,支持互联网邮件收发,支持通用的邮件客户端软件Outlook、Foxmail等收发邮件,还提供了完善的Web Mail网页收发邮件功能,用户可以通过...

    三分钟打造反垃圾邮件服务器 

    日益猖獗的垃圾邮件已经成为Internet上的一颗毒瘤,虽然大多数电子邮箱都提供了垃圾邮件过滤功能,但设置对用户来说太繁琐,再...能不能在本地自己“DIY”一台个人反垃圾邮件服务器呢?MailMate就可以满足大家的愿望。

    使用 Winmail Server 轻松架设邮件服务器

    Winmail Server 是一款安全易用全功能的邮件服务器软件,不仅支持 SMTP/POP3/IMAP/Webmail/LDAP(公共地址簿)/多域/发信认证/反垃圾邮件/邮件过滤/邮件组/公共邮件夹等标准邮件功能,还有提供邮件签核/邮件杀毒/邮件...

    全面剖析邮件服务器垃圾邮件防范术

    从互联网诞生之日起,垃圾邮件就相伴相随,尤其是随着网购的普及,垃圾邮件 更呈“遍地开花”蔓延之势,防不胜防的垃圾邮件轻则令人占用邮箱容量浪费用户时间,重则造成财产损失,因此对垃圾邮件的“严防死守”一直...

    遥志邮件服务器(CMailServer)+V5[1].3.3++破解版.exe

    CMailServer是标准的互联网邮件服务器软件,支持SMTP/POP3/ESMTP等标准互联网邮件服务协议,支持互联网邮件收发,支持通用的邮件客户端软件Outlook、Foxmail等收发邮件。CMailServer还提供了完善的Web Mail网页收发...

    Python-PostMail一个简单的邮件服务器可以让你发送一个邮件只发送一个POST请求

    PostMail 一个简单的邮件服务器,可以让你发送一个邮件只发送一个POST请求

    C#使用163的SMTP服务器发送邮件

    C#使用163的SMTP服务器发送邮件。C#使用163的SMTP服务器发送邮件

    MDARMON Mail邮件服务器

    邮件服务器邮件服务器邮件服务器邮件服务器邮件服务器

    exchange 邮件服务器反垃圾配置教程

    关于exchange 邮件服务器反垃圾得配置教程

    TurboMail邮件服务器.zip

    可根据设定的条件使用多个邮箱进行邮件中继,可使用海外服务器进行中转,确保用户畅通地发送邮件。  5、全面到位的邮件管理体系  对进出邮件进行监控,或对进出邮件设置审批,确保公司机密不通过邮件泄露;邮件...

    SAP配置邮件服务器.docx

    SAP可配置为邮件服务器,不仅能向SAP user发送邮件,也能发送外部邮件,具体步骤如下: RZ10 配置参数文件Profile parameter(RZ10)点修改,新建参数icm/server_port_1 赋值为" PROT=SMTP,PORT=25" icm/server_port_...

    RBL技术全面构建反垃圾邮件网络

    综合以上利弊,我们认为,通过将确认后的垃圾邮件来源站点(无论是否是恶意与否)放入一个黑名单(Blackhole List),然后通过发布该名单来保护邮件服务器不受到黑名单中站点的侵扰确实是一个目前对抗日益严重的垃圾...

    基于ApacheJames邮件服务器的收发邮件代码及服务

    基于ApacheJames邮件服务器的收发邮件代码及服务,邮件服务器,简单的环境,发邮件,收邮件的类,直接运行即可!

    缪斯邮件服务器.zip

    和传统邮件服务器一样,MuseMail Server 支持互联网邮件收发、网页邮件收发、邮件杀毒、智能邮件过滤、邮件监视、邮件备份、邮件转发、多域名邮件收发和邮件发送验证等功能。同时,由于内核基于数据库,MuseMail ...

    Linux下Postfix邮件服务器搭建

    在Linux下成功搭建起Postfix服务器。

    邮件服务器垃圾邮件防范术.pdf

    邮件服务器垃圾邮件防范术.pdf

    Java开源邮件服务器james源码

    Java开源邮件服务器apache-james-2.3.2源代码

    TurboGate反垃圾邮件网关 2012 v4.3.0 Windows版.zip

    国内IP信誉度不高,大量的IP和邮箱域名进入了国际邮件组织的黑名单(如Spamhaushuo或FortiGuard等),中国用户发出的邮件被当成垃圾邮件被自动屏蔽。拓波在全球各大洲拆耗巨资设立了中转服务器,形成了一个高级的...

    如何让SynologyNAS成为邮件服务器.docx

    邮件传输代理会使用SMTP发送和接收邮件信息,而邮件用户代理则只会通过SMTP将邮件发送到邮件服务器、等待传送。 2.开始进行之前的准备 您需要在SynologyNAS进行完成特定准备工作,以顺利运行MailServer。在继续前,...

    MuseMail Server邮件服务器软件 v5.2.zip

    和传统邮件服务器一样,MuseMailServer支持互联网邮件收发、网页邮件收发、邮件杀毒、智能邮件过滤、邮件监视、邮件备份、邮件转发、多域名邮件收发和邮件发送验证等功能。同时,由于内核基于数据库,MuseMailServer...

Global site tag (gtag.js) - Google Analytics