如何从您的应用程序发送干净的电子邮件?

4

当开发一个发送通知邮件的应用程序时,如何遵循最佳实践以避免以下情况:

  1. 被您的托管公司标记为垃圾邮件发送者。(涵盖以下任意内容:)
    • 不要过多地向邮件服务器发送邮件的最佳技术
    • 如果您要设置自己的邮件服务器,则使用最佳的邮件服务器产品
    • 以某个特定用户的身份发送消息,但仍然清楚地表明是从您的应用程序发送的(以确保投诉等会回到您),而不违反良好的电子邮件礼仪
    • 其他任何经验教训
  2. 被接收方的客户端标记为垃圾邮件?(涵盖以下任意内容:)
    • 配置和使用发件人id、域密钥、SPF、反向DNS等,以确保您的电子邮件得到正确识别
    • 最佳SMTP头技术,以避免为用户发送电子邮件时被标记为垃圾邮件(例如,同时使用发件人和寄件人头)
    • 其他任何经验教训

额外的要求:该应用程序将基于事件向单个收件人发送单个消息。因此,向多个收件人发送相同消息的技术不适用。

3个回答

5

不让邮件服务器被淹没的最佳技术

对于这个问题,除了向您的邮件服务器管理员咨询(如果它是共享托管帐户/不在您的控制范围内)外,您无法做太多事情。但是,如果要求每个事件只发送一封电子邮件给单个收件人,那就不应该成为太大的问题。往往会导致邮件系统堵塞的是发送给数百个(或更多)收件人的电子邮件。

如果您经常触发事件,请考虑合并它们并定期发送总结性电子邮件。

以特定用户的身份发送消息,但仍然明确地来自您的应用程序(以确保投诉等反馈到您),而不违反良好的电子邮件礼节

您可以通过使用“回复地址”标头来实现此目的,这将使客户端在撰写电子邮件消息时使用该地址而不是“发件人”地址。

您还应设置任何电子邮件的“返回路径”标头,因为没有此标头的电子邮件通常会被过滤掉。

例如:

From: me@me.com
Return-Path: me@me.com
Reply-To: auto@myapp.com

配置和使用发送方ID、域名密钥、SPF、反向DNS等功能以确保您的电子邮件被正确识别,这些都高度依赖于您对邮件和DNS服务器的所有权。 SPF / 发送者ID等都是DNS问题,因此您需要访问DNS。 在您的示例中,这可能会带来很大问题。例如,当您设置邮件来自特定用户时,该用户必须在其DNS中设置SPF(例如)以允许您的邮件服务器作为有效发件人。您可以想象如果有多个具有不同域名的用户,这将会变得多么混乱(如果不是完全不可能的话)。至于反向DNS等,这真的取决于情况。大多数客户端ISP等只需检查是否设置了反向DNS。 (即,1.2.3.4解析为host.here.domain.com,即使host.here.domain.com不能解析回1.2.3.4)。这是由于共享托管的数量(其中邮件服务器通常将自己报告为客户端的域名,而不是真实的邮件服务器)。有一些严格的网络要求匹配反向DNS,但如果首次不匹配,则需要您控制邮件服务器。如果您能更具体地说明,我可能能够提供更多建议,但一般而言,对于需要发送应用程序邮件并且对其环境没有太多控制的人,我建议执行以下操作:确保设置“Return-Path”;在标题中添加您的应用程序和滥用信息,例如“X-Mailer”和“X-Abuse-To”(这些是自定义标题,仅供信息目的);确保为发出邮件的服务器的IP地址设置了反向DNS。

0

首先,对之前的内容进行快速更正:

return-path:是由接收系统根据传入消息的信封发件人添加的标头

为了使 SPF 生效,return-path/信封发件人需要是 yourapp@yourdomain.com

并确保 yourdomain.com 的 SPF 记录(或者如果是每个用户的 SPF)允许邮件在托管应用程序/发送电子邮件的服务器上发起

这个信封发件人是将接收所有退回/错误的地址

现在 Sender-ID 是完全不同的,它检查 return-path/信封发件人和 from: 地址(存储在消息内部)

如果发送

from: hisname yourapp@yourdomain.com

reply-to: hisname hisaddres@hisdomain.com

这将不是问题

如果发送

from: hisname hisaddres@hisdomain.com

那么就会有问题,您必须添加一个

Resent-From: hisname yourapp@yourdomain.com

因为这指定要忽略 from: 以进行 Sender-ID 检查,请改用此选项,因为它已经代表他发送了邮件。


0

现在是其他值得注意的部分

提到的IP是您的邮件服务器

a 将您的IP的PTR指向一个名称,该名称也解析为相同的IP FQDNS

b 让您的服务器HELO / EHLO与whatever.domain.com匹配,其中domain.com与步骤A中名称的域相同{不是相同的名称,因为以下原因}

c 使该HELO / EHLO服务器名称也解析为您的服务器的IP

d 在该HELO / EHLO名称中添加以下SPF记录“v = spf1 a-all” {意思是仅允许来自此名称指向的IP的HELO / EHLO}

e 在HELO / EHLO名称中添加以下发件人ID行{纯粹是为了完整性 “spf2.0 / mfrom,pra-all” {即没有users@this-domain}

f 在FQDNS名称和您的服务器的任何其他主机名中添加以下SPF“v = spf1-all” {即没有机器将以此名称进行HELO / EHLO,也没有users@this-domain}

由于fqdns名称可能会被机器人/感染程序确定,因此最好永远不要直接在helo/ehlo问候中使用该名称,仅需要它与helo/ehlo标识符来自相同的域即可证明两者的有效性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接