4

在开发发送通知电子邮件的应用程序时,最佳实践是什么?

  1. 不会被您的托管公司标记为垃圾邮件发送者。(涵盖任何一个:)
    • 不淹没邮件服务器的最佳技术
    • 最好的邮件服务器产品,如果您要设置自己的
    • 像从特定用户一样发送消息,但仍然清楚地来自您的应用程序(以确保投诉等返回给您),而不会违反良好的电子邮件礼仪
    • 任何其他经验教训
  2. 没有被接收者的客户端标记为垃圾邮件?(涵盖任何一个:)
    • 配置和使用发件人 ID、域密钥、SPF、反向 dns 等以确保正确识别您的电子邮件
    • 为用户发送电子邮件时避免被标记为垃圾邮件的最佳 SMTP 标头技术(例如,同时使用 Sender 和 From 标头)
    • 任何其他经验教训

附加要求:此应用程序将根据事件向单个收件人发送单个消息。因此,将相同消息发送给多个收件人的技术将不适用。

4

3 回答 3

5

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

除了与您的邮件服务器管理员核对(如果它是共享主机帐户/不在您的控制范围内)之外,您对此无能为力。但是,如果要求是每个事件向单个收件人发送一封电子邮件,那应该不是太大的问题。往往会阻塞邮件系统的是具有数百(或更多)收件人的电子邮件。

如果您的事件一直在触发,也许可以考虑合并它们并发送一封电子邮件,定期总结它们。

像从特定用户一样发送消息,但仍然清楚地来自您的应用程序(以确保投诉等返回给您),而不会违反良好的电子邮件礼仪

您可以通过使用“Reply-To”标头来完成此操作,然后在撰写电子邮件时让客户使用该地址而不是“发件人”地址。

您还应该设置任何电子邮件的“Return-Path”标头,因为没有此标头的电子邮件通常会被过滤掉。

前任。

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

配置和使用发件人 ID、域密钥、SPF、反向 dns 等以确保正确识别您的电子邮件

这完全取决于您对邮件和 DNS 服务器拥有多少所有权。spf/sender-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,但这要求您首先控制邮件服务器,如果它不匹配。

如果您可以更具体一点,我可以提供更多建议,但一般来说,对于需要发送申请邮件并且无法控制环境的人,我建议以下:

  • 确保设置“返回路径”
  • 很高兴在标题中添加您的应用程序和滥用信息,即:“X-Mailer”和“X-Abuse-To”(这些是自定义标题,仅供参考)
  • 确保为您的外发邮件服务器的 IP 地址设置了反向 DNS
于 2008-09-22T00:03:56.567 回答
0

首先快速更正上一个

return-path:是接收系统根据传入消息的信封发送者添加的标题

为了使 spf 工作,返回路径/信封发件人需要是 yourapp@yourdomain.com

并确保 yourdomain.com 的 spf 记录 {或者如果 per-user spf} for yourapp@yourdomain.com 允许邮件源自托管应用程序/发送电子邮件的服务器

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

现在发件人ID完全不同,它检查返回路径/信封发件人和发件人:地址{存储在邮件中}如果发送自:他的名字 yourapp@yourdomain.com 回复:他的名字 hisaddres@hisdomain.com

如果从以下地址发送,这将不是问题: hisname hisaddres@hisdomain.com

它将是并且您必须添加一个 Resent-From: hisname yourapp@yourdomain.com 因为这指定忽略 from: for sender-id checks 使用此代替,因为它已由您代表他发送

于 2009-01-29T01:50:58.490 回答
0

现在是值得的其他位

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

a 让您的 ip 的 ptr 指向一个名称,该名称也解析为相同的 ip FQDNS

b 让您的服务器 helo/ehlo 与任何.domain.com 一起,其中 domain.com 与步骤 A 中名称的域相同 {下面的 resons 名称不同}

c 让 helo/ehlo 服务器名称也解析为您的服务器的 ip

d 将以下 spf 记录添加到该 helo/ehlo 名称 "v=spf1 a -all" {意思是允许 helo/ehlo 使用此名称从 ip 的此名称指向仅}

e 将以下发件人 ID 行添加到 helo/ehlo 名称{纯粹是为了完整性“spf2.0/mfrom,pra -all”{即没有用户@this-domain}

f 将以下 spf 添加到您的服务器的 FQDNS 名称和任何其他主机名 "v=spf1 -all" {即没有机器将 helo/ehlo 作为这个名称并且没有用户@this-domain}

{因为 fqdns 名称可以由机器人/感染确定,最好不要直接在 helo/ehlo 问候语中使用此名称,它与 helo/ehlo 身份来自同一域就足以证明两者的有效性}

于 2009-01-29T02:04:38.933 回答