目前,我正在开发一个 Web 应用程序,并希望创建一个 Web 表单,让用户通过它撰写电子邮件。因此,他们必须设置他们的电子邮件地址和消息,单击“提交”后,我的 Web 应用程序将使用标题中的电子邮件地址将电子邮件发送给收件人FROM
。发送过程当然是使用我自己的 SMTP 服务完成的,因为我无法访问网站访问者的电子邮件服务器。
现在,我听说这可能是一个坏主意,因为这些电子邮件很可能会被收件人的服务器拒绝。但是,我还不完全理解为什么会这样以及这个过程是如何工作的。我了解到,目前用于电子邮件的两种最常用的反垃圾邮件和欺骗技术是密钥管理信息系统和防晒指数。
所以,我想了解电子邮件被拒绝的具体原因以及 DKIM/SPF 如何提供帮助。
那么,让我们从 SPF 开始:
据我了解,收件人的服务器将使用MAIL_FROM
标头中的域和 DNS 系统检查允许发送邮件的 IP 地址。现在,使用上面的例子,当我在 Web 应用程序中发送电子邮件并将标FROM
头设置为例如[email protected]
(这是我的网站访问者设置的地址)时,这应该 (?) 不会影响标MAIL_FROM
头。由于电子邮件将通过我的电子邮件服务发送,因此MAIL_FROM
标头将包含我的域,据我了解,应该可以发送邮件并通过 SPF。
另一种反垃圾邮件技术是 DKIM:
它将对电子邮件进行签名,收件人服务器将在 DNS 中查找正确的公钥来验证签名。在这里,我不确定具体是如何完成的。我知道标头FROM
将是签名的一部分,但收件人服务器如何检查 DKIM?它会再次从标头查看 DNS 吗MAIL_FROM
?如果是,我也可以使用上述示例传递 DKIM,对吗?或者有域名MAIL_FROM
并且FROM
是相同的?我有点迷茫了。
所以,既然我现在明白了,DKIM 和 SPF 对我的 Web 应用程序来说应该不会有问题。但是,为什么人们仍然认为这不是一个好主意,而且电子邮件很可能会被拒绝呢?还是我没有正确理解 DKIM?
我的总体问题是:收件人服务器究竟如何确定电子邮件是否被拒绝?
答案1
你无法确定。除非 MX 管理员告诉你哪里出了问题,否则你只能猜测。
邮件拒绝可以基于在邮件内部、传输过程中或互联网上任何地方发现的任何信息,包括:
- MTA IP地址/子网
- MTA rDNS 和 FCrDNS
- 来自 rDNS 或 HELO 的 MTA FQDN
- MTA 的 DNSBL 列表
- 互联网上提供的有关 MTA FQDN 或发件人域的其他信息
- 以前的连接和故障历史
- MAIL FROM 地址或域
- 标头 FROM 地址或域
- 授权方法,如 SPF、DKIM、DMARC
- 邮件主题或正文中的关键词或序列
- 对邮件正文和邮件头进行启发式评分
设置活动的 MX/MTA 并非易事。由于垃圾邮件数量庞大且持续不断,您需要遵守许多惯例,否则您将遭到拒绝或最终成为垃圾邮件堆中的一员。最简单的方法是使用 ISP 的服务器作为智能主机 - 您需要先检查他们的政策。
此外,除非您已获得授权,否则您不能在系统中使用“外来”发件人域。伪造发件人地址会让您立即陷入恶意垃圾邮件发送者的陷阱。此外,您不能轻易信任用户在注册时或任何其他时间提交的任何内容。如果您不验证电子邮件地址,您的服务将在几个小时后受到滥用。