email - DKIM 是否验证 smtp/envelope-from 或邮件/标头来自?
问题描述
我想了解用于验证电子邮件的 SPF/DKIM/DMARC 堆栈。
我了解 SPF 适用于 SMTP“邮件发件人”/信封发件人。
但即使在 stackoverflow 本身上,我也发现关于 DKIM 是否适用于信封发件人或实际 SMTP Payload/Email/Header-From 的相互矛盾的信息。
解决方案
简短的回答...
SPF根据发送 IP 地址验证信封,DKIM验证消息有效负载,DMARC将两者联系在一起,并在任一失败时指示所需的处理。
更长的答案...
DKIM使用私钥应用于发送服务器上的创作消息,然后由接收服务器使用公钥通过DNS进行验证。
DKIM 规范允许签名者选择他们签署的标头字段,但必须始终对From:字段以及正文的指定长度(可能为零)进行签名,因此作者可能随心所欲地包括正文和/或消息有效负载末尾的附件。
DKIM 独立于 SMTP 路由,因为它对RFC 5322消息(即传输的邮件的标头和正文)而不是RFC 5321中定义的 SMTP 信封进行操作。因此,DKIM 签名可以在多个 MTA 之间进行基本中继。
DKIM 允许签名者 以严格或宽松的方式传达其认为合法的电子邮件内容。通过这种方式,签名者可以保证一些关键内容,同时允许对空白和标题包装进行简单的重写。它不会直接阻止或披露企图滥用,但可以由接收服务器以取证方式使用,以在签名者允许的范围内验证内容。
SPF在 DNS 中发布,并由接收服务器进行测试。
SPF 规范允许域的 DNS 保证允许/禁止哪些发送 IP 和其他解析为 IP 的机制成为该域的电子邮件发送源。它仅针对RFC 5321中定义的 SMTP 信封进行测试,使用MAIL FROM或HELO值。
DMARC是在 DNS 中为域发布的策略,并由接收服务器验证。
它允许发送域通过来自合规接收服务器的报告监控滥用情况,并指示应如何处理任何 SPF 或 DKIM 故障。此外,它可用于对齐在 SPF 和 DKIM 中找到的域,并用于在 SPF 和 DKIM 都通过但使用不同域时识别滥用。
推荐阅读
- python - 从相似矩阵执行聚类
- sql-server - 我们如何处理 WHERE-Clause 中需要 FROM-Subquery 的结果的情况?
- http - 使用单个 HTTP Post 连接在块中发送数据
- c# - 检查 DateTime 在 Linq Where 子句中是否有效
- postman - Postman - 如何获取url(Query Params)中传递的参数和值进行验证?
- c++ - 为什么在 C++ 中使用 [] 时,作为映射值的对象需要有一个空/默认构造函数?
- python - 使用请求通过 http 协议将设置发送到 clickhouse
- c - 不需要的指针修改
- python - 我想编写一个for循环,在一个条件下向字典添加一个新键,购买次数必须> = 3
- powerapps - Power Apps DataVerse 导入映射问题