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

时间:2020-03-06 14:29:06  来源:igfitidea点击:

在开发发送通知电子邮件的应用程序时,最佳做法是

  • 最好的邮件服务器产品(如果要设置自己的邮件服务器)
  • 就像从特定用户那里发送消息一样,但是仍然清楚地从应用程序中发送消息(以确保投诉等再次出现),而不会破坏良好的电子邮件礼节
  • 其他任何经验教训
  • 最好的SMTP标头技术,以避免在为用户发送电子邮件时将其标记为垃圾邮件(例如,一起使用"发件人"和"发件人"标头)
  • 其他任何经验教训

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

解决方案

best technique for not flooding a mail server

除了与邮件服务器管理员联系(如果它是共享主机帐户/不在控制之下)之外,我们还可以执行其他操作。但是,如果要求每个事件只有一封电子邮件发送给单个收件人,那么这应该不是问题。往往会阻塞邮件系统的是带有数百个(或者更多)收件人的电子邮件。

如果我们一直在触发事件,则可以考虑合并事件并发送一封电子邮件,以定期总结事件。

sending messages as if from a specific user but still clearly from your application (to ensure complaints, etc come back to you) without breaking good email etiquette

我们可以使用" Reply-To"标头来完成此操作,该标头将使客户在编写电子邮件时使用该地址而不是"发件人"地址。

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

前任。

From: [email protected]
Return-Path: [email protected]
Reply-To: [email protected]
configuring and using sender-id, domain-keys, SPF, reverse-dns, etc to make sure your emails are properly identified

这完全取决于我们对邮件和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

首先是对上一个的快速修正

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

为了使SPF正常工作,返回路径/信封发送者必须为[email protected]

并确保yourdomain.com的spf记录{或者如果[email protected]的每用户spf}允许邮件在托管该应用的服务器上发送/发送电子邮件

该信封发送者是将接收所有反弹/错误的地址

现在sender-id完全不同,它检查return-path / envelope-sender

发件人:地址{存储在邮件中}
如果发送
来自:Hisname [email protected]
回复:hisname [email protected]

这将是非问题
如果发送
来自:hisname [email protected]

它将是,并且我们必须添加一个
重新发送者:他的名字[email protected]
因为它指定忽略发件人:对于发件人ID支票,请改用它,因为它已由我们代表他发送

现在为其他值得的东西

提到的ip是邮件服务器

将ip的ptr指向一个也可以解析为相同ip的名称
域名解析

b使服务器helo / ehlo带有what.domain.com,其中domain.com与步骤A中名称的域相同{下面的共振不相同的名称}

c使helo / ehlo服务器名称也解析为服务器的IP

d将以下spf记录添加到该helo / ehlo名称" v = spf1 a -all"
{意思是允许ip的这个名称中的带有该名称的helo / ehlo指向only}

e将以下sender-id行添加到helo / ehlo名称{完全是为了完整性
" spf2.0 / mfrom,pra -all" {即没有用户@此域}

f在服务器的FQDNS名称和任何其他主机名中添加以下spf
" v = spf1 -all" {即,没有任何机器会以此名称命名helo / ehlo,也没有users @ this-domain}

{由于fqdns名称可以由bots / infections确定,因此最好永远不要将此名称直接用于helo / ehlo问候语,只要它与helo / ehlo身份来自同一域就足以证明两者的有效性就足够了}