的邮件服务器发过来的呢,我们可以查询gmail.com的SPF记录,以此防止别人伪造你来发邮件 详情可参考:http://www.renfei.org/blog/introduction-to-spf.html DKIM DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来 签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送 电子邮件收件人则可以使用签名来证实邮件确实来自该企业。 可确保邮件内容不被偷窥或篡改 DMARC DMARC(Domain-based Message Authentication, Reporting & Conformance)是TXT记录中的一种,是一种基于现有的SPF和DKIM 协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效
本文节选自《Netkiller Mail 手札》 4.3. dkim DKIM(DomainKeys Identified Mail) 是一种电子邮件的验证技术,使用密码学的基础提供了签名与验证的功能。 DKIM 能增加你邮件的信任度。 检查opendkim状态与端口 # systemctl status opendkim.service ● opendkim.service - DomainKeys Identified Mail (DKIM opendkim.pid Aug 25 02:07:42 localhost.localdomain systemd[1]: Starting DomainKeys Identified Mail (DKIM Aug 25 02:07:42 localhost.localdomain systemd[1]: Started DomainKeys Identified Mail (DKIM) Milter.
用于设置SPF,DKIM和DMARC的DNS指令是通用的。 设置DKIM DKIM涉及设置OpenDKIM包,将其挂钩到Postfix,以及添加DNS记录。 adkim指定DKIM的对齐模式,它确定DKIM记录的验证严格程度。可用选项包括: r 轻松对齐模式,DKIM身份验证不太严格执行。 s严格的对齐模式。 例如,如果SPF检查失败但DKIM身份验证成功,则不会发送报告。 1如果任何身份验证检查失败,请求报告。 d 如果DKIM检查失败,则请求报告。 s 如果SPF检查失败,则请求报告。 使用新生成的.txt文件将新密钥添加到DNS,如在DKIM 设置DNS部分中,使用主机名中的新YYYYMM选择器。请勿删除或更改现有的DKIM TXT记录。
DKIM:基于加密签名的邮件内容验证DKIM专注于确保邮件内容的完整性和真实性。发送方使用私钥为邮件生成加密签名,并将签名绑定到域名。接收方通过DNS查询公钥验证签名,确认内容未被篡改。 即使邮件在传输中被拦截,DKIM也能保证来源可信。签名事例:DKIM签名嵌入邮件头中。 DKIM公钥记录格式示例:在DNS中,DKIM公钥以TXT记录存储:selector1._domainkey.example.com. DMARC:综合SPF与DKIM的认证协议DMARC整合SPF和DKIM,提供更全面的邮件认证机制。发件方在DNS中指定策略,接收方根据SPF和DKIM验证结果处理邮件。 adkim=s:DKIM对齐模式(严格)。aspf=s:SPF对齐模式(严格)。工作流程:接收方先检查SPF和DKIM结果:若两者均通过,邮件接受。
可以看到并没有DKIM签名 而Gmail默认是有DKIM签名的 下图是一封Gmail邮箱发送到腾讯企业的邮件部分原始邮件信息: ? 可以看到是有DKIM签名的 关于DKIM的概念 DKIM全称叫”Domain Key Identified Mail”,是yahoo的domainkey技术跟cisco的identified mail合起来的产物 与SPF一样也做Sender authentication,但DKIM做的比SPF更复杂,DKIM会对邮件头及正文进行签名,没有私钥下,邮件被假冒或篡改后,就会与邮件头签名不一致,从而防止这样的情况。 DKIM签名信息分析 这是一封Gmail发给我的腾讯企业邮箱的邮件: ? 我们看一下DKIM-Signature的内容: 其中,v表示DKIM的版本 a=rsa-sha1,表示算法(algorithm)。
2.1 邮件投递与DKIM签名的合规性利用在传统的钓鱼攻击中,攻击者通常通过配置错误的 SPF 记录或缺乏 DKIM 签名的自有域名发送邮件,这极易被接收方的反垃圾邮件网关拦截。 更为关键的是,该邮件通过了 DKIM 验证。DKIM 的工作原理是发送方使用私钥对邮件头和部分正文进行数字签名,接收方则通过 DNS 查询发送方域名的公钥来验证签名的有效性。 检查 DKIM 状态 (假设已通过验证) if headers.get('DKIM-Signature') and headers.get('Authentication-Results' # 注意:DKIM 通过不加分,但也不减分,需警惕“合法外壳” # 2. 通过滥用 DKIM 签名和可信子域名,攻击者成功构建了难以被传统防御手段识破的“合法”外衣。
/ssl/dkim/:/ewomail/dkim/ 可配置参数 MYSQL_ROOT_PASSWORD:mysql数据库root密码,默认:mysql MYSQL_MAIL_PASSWORD:mysql DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。 每个域名都需要添加一个dkim的key,EwoMail默认安装后已自动添加主域名dkim,只需要设置好dkim的dns即可。 获取DKIM KEY docker exec mail amavisd showkeys 复制输出的信息,打开 http://www.ewomail.com/list-20.html 整理DKIM 设置DNS 类型 主机 记录值 TXT dkim.
签名 DKIM 是什么意思呢? 没太大后果 接收方服务器会出现 DKIM 验证不通过的情况 QQ 邮箱后台可能会出现 “此地址未验证,请注意识别” 的字样 上面两点都是说的可能,并不是绝对,一般来讲,同服务平台间通信不会造成 DKIM 验证不通过,如 @qq.com 和 @qq.com 发邮件 不过不用担心,因为 DKIM 验证不通过很正常,DKIM 只是一种辅助手段而非唯一依据,使用本轮子,在账号密码正确情况下,其他两项都会正常通过 ,对于各大邮件服务提供商, DKIM 验证不通过是有其合理存在的理由的,电子邮件服务器不会拒绝由于缺少或无法验证 DKIM 签名 (RFC 4871) 的邮件。 DKIM 签名。
/ssl/dkim/:/ewomail/dkim/ 可配置参数 MYSQL_ROOT_PASSWORD:mysql数据库root密码,默认:mysql MYSQL_MAIL_PASSWORD:mysql DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。 每个域名都需要添加一个dkim的key,EwoMail默认安装后已自动添加主域名dkim,只需要设置好dkim的dns即可。 获取DKIM KEY docker exec mail amavisd showkeys 复制输出的信息,打开 http://www.ewomail.com/list-20.html 整理DKIM 设置 DNS 类型 主机 记录值 TXT dkim.
(具体看5.3节创建DKIM密钥) TXT v=DKIM1; k=rsa; p=MI... _domainkey (可选) CNAME 指向你的 DKIM 公钥别名 可选的 CNAME 记录,用于 DKIM 其中DKIM公钥需要在部署完posteio以后获取! DKIM 记录 DKIM 记录用于签署邮件,确保其未被篡改。 名称 记录类型 记录值 default. _domainkey TXT 由你生成的 DKIM 公钥(Posteio 或其他邮件服务器生成的) 你需要在你的邮件服务器上生成 DKIM 密钥,并将公钥添加到 DNS 中。 _domainkey (DKIM 验证) CNAME 你的 DKIM 公钥别名,若需要 3.2 协议解析(可选) 为了使用 IMAP、SMTP、POP 协议确保邮件的发送和接收,你需要在 DNS 中添加相应的
之前我们介绍了利用商业产品解决方案解决邮箱安全问题,鉴于SMTP传统邮件的安全性不足,我们将为大家介绍利用SPF,DKIM,rDNS, DMARC等邮件协议认证的手段解决邮箱安全问题。 3 DKIM DKIM是什么? DKIM(DomainKeys Identified Mail),是一种电子邮件的验证技术,使用密码学的基础提供了签名与验证的功能。 为什么要用DKIM? DKIM签名是现行通用的反垃圾技术之一,有了该配置, 邮件的到达率将会显著提升。 技术原理浅析 DKIM的基本工作原理同样是基于传统的密钥认证方式,它的具体做法是生成一对公钥和私钥,私钥由发送者保存,公钥存放在From字段指定域名的txt记录中。 图:DKIM原理 4DMARC DMARC是什么?
如何利用日志识别SPF/DKIM失败SPF(Sender Policy Framework)和DKIM(DomainKeys Identified Mail)是防止邮件伪造的重要安全机制。 DKIM失败: 如果DKIM验证失败,日志可能会显示以下错误:"DKIM verification failed: key not found or invalid signature"排查方法:检查DKIM 确保发送方的DNS记录中包含正确的DKIM公钥。确保邮件头中的DKIM签名与发送者的公钥匹配。3. 对于SPF/DKIM失败、邮件循环投递和队列堆积等问题,结合日志信息和排查技巧,可以有效地定位问题并采取相应的解决措施。日志分析不仅有助于排查故障,还能帮助管理员优化邮件系统的稳定性和安全性。
DKIM确保了邮件确实来自声称的域名且内容未被修改。DMARC是建立在SPF和DKIM之上的策略层协议。 # 真实代码示例:# with open(self.private_key_path) as f:# private_key = f.read()# dkim_header = dkim.sign(msg_content , selector, self.domain.encode(), private_key)# return dkim_headerreturn b"DKIM-Signature: v=1; a=rsa-sha256 ")print(f"SPF: {spf_status} - {spf_msg}")print(f"DKIM: {dkim_status}")print(f"DMARC最终判定: {dmarc_status , "warrencounty.gov")print(f"SPF: {spf_status_att} - {spf_msg_att}")print(f"DKIM: {dkim_status_att}")
DKIM可以帮助我们(攻击者)更受信任。我们可以尝试通过使用OpenDKIM制作DKIM密钥来验证自己是发件人。 ? 图2 - ‘opendkim-genkey’是生成密钥的命令。 ‘-d’指定域 OpenDKIM是一个开源的DKIM发送者认证系统的C语言实现,现在由IETF(RFC6376)进行了标准化。 ? 图3 - DKIM私钥和公钥 OpenDKIM成功安装后,会在’/etc/opendkim.conf’中创建一个配置文件。 图4 - DKIM配置文件 使用图6中的语法将公钥添加到TXT DNS记录中。 ? 图5 - DKIM公钥 ? 图6 - DKIM TXT记录。 (DMARC与DKIM记录协同工作)。DMARC至少需要指定版本和策略,但只要你有这些信息,它就可以和DKIM一起验证你是否为发件人。 ? 图7 - DMARC TXT DNS记录。
include:a.spf.jd.com 表示有哪些第三方组织可以代替该域发送电子邮件 ip:1.1.1.1 SPF 还可以配置 IP 地址 -all 则表示 SPF 中未列出的地址就是没有被授权的 0x02 DKIM (域名密钥识别邮件) DKIM 是一种身份验证方法,它使用公钥/私钥加密来验证电子邮件是否是由授权服务器发送,由发送邮件域管理员识别和配置。 关于是否配置 DKIM,需要去邮件的内容中查看,比如: DKIM在每封电子邮件上增加加密的数字标志,然后与合法的互联网地址数据库中的记录进行比较,只有加密信息与数据库中记录匹配的邮件才能够进入用户收件箱 DKIM还能检查邮件的完整性,避免黑客等未授权者的修改。 由于数字签名是无法仿造的,因此DKIM可对垃圾邮件制造者带来致命打击,他们很难再像过去一样,通过盗用发件人姓名、改变附件属性等小伎俩达到目的。
当邮件经过第三方安全网关进行内容扫描或重写URL时,原有的DKIM签名可能被破坏,而网关未能及时补签;或者在某些分支路径上,DKIM根本未被启用。 其次是DKIM的全路径覆盖。确保邮件在经过每一个必要的处理节点(如加密、归档、重写)后,都能保持有效的DKIM签名。 5.2 DKIM选择器的标准化与重签名配置在混合网关环境中,需确保所有出口流量均带有有效的DKIM签名。 ,必须重签# 加载企业私钥,对修改后的邮件头及体重新计算签名new_dkim_header = generate_dkim_signature(domain="example.com",selector ")email_message.add_header("DKIM-Signature", new_dkim_header)# 2.
DKIM设置(防垃圾邮件) DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。 http://doc.ewomail.com/docs/ewomail/dkim 每个域名都需要添加一个dkim的key,EwoMail默认安装后已自动添加主域名dkim,只需要设置好dkim的dns即可 获取dkim key centos7/8 # amavisd -c /etc/amavisd/amavisd.conf showkeys ; key#1 1024 bits, i=dkim, d=your-domain.com , /ewomail/dkim/mail.pem dkim. 域名:your-domain.com 记录类型: TXT 主机记录:dkim.
DKIM设置(防垃圾邮件) DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。 http://doc.ewomail.com/docs/ewomail/dkim 每个域名都需要添加一个dkim的key,EwoMail默认安装后已自动添加主域名dkim,只需要设置好dkim的dns即可 获取dkim key centos7/8 # amavisd -c /etc/amavisd/amavisd.conf showkeys ; key#1 1024 bits, i=dkim, d=your-domain.com , /ewomail/dkim/mail.pem dkim. 域名:your-domain.com 记录类型: TXT 主机记录:dkim.
(1)配置DKIM DKIM的设置比较简单,从其工作原理来看,只需要如下3点即可: 为您的网域生成域名密钥。 电子邮件服务器可使用此密钥读取邮件 DKIM 标头。 开启 DKIM 签名功能以开始将 DKIM 签名添加到所有外发邮件中。 里的 smtp 日志,会有出现 DKIM verifying enabled 或 启用 DKIM 验证 字样。 DKIM 签名 字样。 adkim 可选 设置 DKIM 匹配模式。该模式会指定邮件信息与 DKIM 签名应有的匹配程度。s:严格。发件人域名必须与 DKIM 邮件标头中对应的 d=name 完全匹配。r:宽松(默认设置)。
DKIM DKIM是一种在邮件中嵌入数字签名的技术,DKIM签名会对邮件中的部分内容进行HASH计算,最后在邮件头中增加一个DKIM-Signature头用于记录签名后的HASH值,接收方接收到邮件后, 那么我们如何获取到发件方的DKIM的密钥呢? 在DKIM中有一个选择器(selector)的概念,通过此功能可以为不同的用户提供不同的签名,想要找到发件方的DKIM服务器,首先需要找到selector,在邮件的DKIM头中,s字段的值即为DKIM的 DMARC DMARC是基于SPF和DKIM协议的可扩展电子邮件认证协议,通常情况下,它与SPF或DKIM结合使用,并告知收件方服务器当未通过SPF或 DKIM检测时该如何处理。 各种绕过姿势 绕过SPF和DKIM 以阿里云的邮件为例,打开163邮箱看到了阿里云的邮件。 ? 将邮件导出为eml文件,打开看到有DKIM验证。 ?