题 如何发送电子邮件并避免被归类为垃圾邮件?


这是一个 规范问题 关于如何处理从您的服务器发送的错误分类为垃圾邮件的电子邮件。有关其他信息,您可能会发现这些类似问题很有用

有时我想向我的客户发送简讯。问题是,某些电子邮件被捕获为垃圾邮件。主要通过客户端的Outlook(甚至在我自己的Outlook 2007中)。

现在我想知道应该怎么做才能创建“好”的电子邮件。我知道反向查找等,但(例如),具有唯一ID的取消订阅链接怎么样?这会增加垃圾邮件评级吗?


72
2017-07-31 05:53




一个 逐步检查清单 以及故障排除指南可以在 一个很好的答案 到了 类似的问题在superuser.com上。 - MattBianco


答案:


确保您的电子邮件看起来不像典型的垃圾邮件:不要只插入大图片;检查字符集是否设置正确;不要插入“仅IP地址”链接。写你的沟通,就像写一封普通的电子邮件一样。取消订阅或退订非常容易。否则,您的用户将通过按“垃圾邮件”按钮取消订阅,这将影响您的声誉。

在技​​术方面:如果您可以选择SMTP服务器,请确保它是“干净”的SMTP服务器。垃圾邮件SMTP服务器的IP地址通常被其他提供商列入黑名单。如果您事先不知道SMTP服务器,最好在应用程序中提供配置选项,以控制批次大小和批次之间的延迟。某些邮件服务器不接受大型发送批次或连续活动。

使用电子邮件身份验证方法,例如 SPF,和 域密钥 证明您的电子邮件和您的域名属于一起。好的副作用是帮助您防止您的电子邮件域被欺骗。也 校验 您的 反向DNS 确保邮件服务器的IP地址指向用于发送邮件的域名。

确保电子邮件的回复地址是有效的现有地址。在“收件人”字段中使用收件人的完整真实姓名,而不仅仅是电子邮件地址(例如 "John Doe" <john.doe@example.com> 并监控您的滥用帐户,例如 abuse@example.com 和 postmaster@example.com


76
2017-07-31 07:15



并使用仅包含文本的html电子邮件的多部分/替代版本。这意味着垃圾邮件扫描程序在分类时会有更多有用的东西。 - Matt


自动取消订阅电子邮件地址反弹的邮件收件人,并与主要邮件提供商建立投诉反馈循环,并自动取消订阅将您的邮件报告为垃圾邮件/垃圾邮件的收件人。这将大大提高您的声誉和可传递性。


19
2017-07-31 13:23



这很有趣。我对这些反馈循环一无所知。所有提供商都提供这样的计划吗? - Uwe
并非所有供应商都没有。但大多数主要的,包括雅虎和AOL等。我知道的所有投诉反馈循环都要求从由DKIM或DomainKeys验证的域发送邮件。我相信有些人也需要SPF,但不太常见。


这个问题提到基础已经到位,但是当我们将其他人指向这个作为典型问题时,我只想确保我们覆盖我们的基础。

这几天基本上需要这些最低要求:

  1. 确保正确配置了正向和反向DNS。邮件服务器必须在HELO / EHLO交换中标识自己,该名称应查找服务器正在使用的IP。同样,该IP的反向查找应该返回名称。

  2. 确保您的服务器实际上是在该握手中发送主机名。您的服务器不应该发送IP地址。

  3. 确保您的IP地址不在任何DNSRBLs(黑名单)上。如果是的话,那就照顾好。

  4. 使用更受欢迎的声誉服务检查您的IP的声誉(SenderScore现在是一个很大的声誉,但随着时间的推移,这可能不会持久)。这些服务通常都有提高声誉的指导方针,但不像RBL那样直接“通过/不通过”。

  5. 不要伪造标题,不要在标题中,并确保在消息中包含最小标题(Date 和 From 是必需的,应该有一个 SubjectSenderReply-To,和 To/Cc/Bcc [适用时])。这是我最大的宠物之一,我希望收到有效的新闻简报,最后是垃圾邮件,因为他们伪造了Outlook Express标题,遗漏了日期,或类似的东西。

您可以考虑设置SPF,DKIM和DMARC。这些有助于提高可传递性,但不是必需的(不是绝大多数电子邮件服务器)。


14
2018-03-25 21:03





不幸的是,有许多不同的过滤技术,一些主要的邮件提供商不会公布他们使用的内容和/或给予各种测试/过滤器的权重,因此知道如何通过是很困难的。基本上垃圾邮件已经驱使ISP和用户进入这样一种情况,即他们有时会难以通过此类合法邮件(尤其是诸如您的简报之类的批量邮件)。我不再认为电子邮件是曾经的中途可靠传输方法。

要少一点消极,更有帮助...因为你遇到特定客户的特定问题,程序可能会告诉你。我不是特别了解outlook,因为我自己并没有在任何地方使用它,但是许多邮件过滤器会在邮件中插入标题以列出使用的过滤器,结果是什么,以及为该过滤器赋予的权重是多少。因此,如果您查看邮件的完整来源,他们会将其移至垃圾文件夹,您可能会找到有用的线索。例如,基于SpamAssassin的过滤器会注入以下形式的标头:

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(该示例已从我的垃圾堆中的真实垃圾邮件中提取)

这不是确定的,因为贝叶斯过滤和其他涉及用户培训的方法很常见 - 因此即使客户端配置相同的开箱即用,您的过滤器通过和失败的内容可能与其他人显着不同。你可能不得不考虑一些其他的新闻来源(很多人都试图使用社交网络协议,并取得了不同程度的成功)。


10
2017-07-31 07:24





像其他人说的那样,你想避免在发送电子邮件时“看起来”像垃圾邮件一样,但是由于技术的不同,你不一定能说出什么会或不会让你看起来像垃圾邮件。

您可能需要考虑的一件事是向您的客户发送纯文本电子邮件,其中包含每个简报,其中包含快速说明/问候语,然后是“点击此处查看我们的最新简报!”信息;通过这种方式,您可以在Web服务器上托管您的消息,减少电子邮件的大小(并加载到您的邮件服务器上),作为奖励,您可以检查Web服务器上的日志,以获得有关客户数量的反馈实际上阅读你的邮件与删除它们。


8
2017-07-31 12:44



嗯。我以前从未见过垃圾邮件发送者使用过这种策略...... - Ernie
一般来说,带有一两个合法链接的直接文本(不是很多地散布在一起)往往会通过...否则我不能通过电子邮件将链接发送给我自己或其他人而不会被标记为垃圾邮件。这就像是说你从未见过垃圾邮件发送者用“脏话”发送即时消息以吸引人们回应。合法交通也是如此。关键是不要“太垃圾”......像bevans这样的用户名可能不像“hottienakedchick69”那样可疑,即使内容相同,你知道我的意思吗? - Bart Silverstrim


我的在线业务是订单确认电子邮件发送垃圾邮件或甚至没有交付(通过邮件服务器避免)的问题。这些是简单的“这里是您的订单摘要”电子邮件,其中包含指向我们网站域名的链接。我们最终为我的公司购买了一些Google Apps帐户。您可以将其中一个设置为SMTP服务器。让Google作为我们的邮件发件人可以解决所有这些问题。

就电子邮件简报而言,绝对使用一种处理选择加入/退出的服务。使用服务以外的任何人发送批量邮件可能会让您被禁止。


4
2018-06-05 19:34



这是一种解决方法。一个合适的解决方案是纠正您的错误系统并确保您至少在DNS中有适当的SPF记录。 - John Gardeniers
实际上,如果您的邮件服务器所在的ISP被标记为垃圾邮件,那么祝你好运。我们当时在Rackspace上。自谷歌确定它不是黑名单以来,使用谷歌作为SMTP是有帮助的。 - Chris K


详细的解决方案,以避免电子邮件被识别为垃圾邮件和/或没有到达接收者

示例情况:您有一台运行PHP网站的服务器 example.com 那需要 发电子邮件。而且您注意到您的电子邮件并非始终提供。 (如果您是店主,并且客户在购买后没有收到电子邮件,则会出现大问题!)。

如果您按照以下所有步骤操作,那么 应该 解决了99.9%的问题;在我的情况下它工作。 (我首先认为可以只做其中的一些,例如跳过DKIM,但最后所有这些都需要解决我遇到的所有问题)。

  1. 首先,谁在发送电子邮件?

    当您的PHP代码发送电子邮件时,它通常使用着名的PHP函数 mail(...)。但是这个功能在引擎盖下做了什么?我们跑一个 test.php 页面包含 <?php echo ini_get('sendmail_path'); ?>。你会得到例如: /usr/sbin/sendmail -t -i。好消息,现在我们知道哪个节目 真的处理 电子邮件!
    现在是一个棘手的信息:名称 sendmail 可 各种节目。即使你看到了 sendmail 在上一步中,您可能有 发邮件 要么 后缀 要么 进出口,或qmail, 等安装。让我们做 dpkg -S /usr/sbin/sendmail。答案是 postfix: /usr/sbin/sendmail,好的,这意味着 我们有 postfix 安装

  2. 查看日志文件 /var/mail/www-data 了解哪些电子邮件未正确发送,以及原因。这可能对后续步骤有用。

  3. 如上所述 杰夫阿特伍德的博客,是时候查看反向PTR记录了。 (更多细节将在这里添加)。

  4. 在postfix配置文件中添加以下行 /etc/postfix/main.cf 文件:

    inet_protocols=ipv4
    

    然后重启postfix service restart postfix。 为什么?因为收件人是gmail时遇到这样的问题:

    我们的系统检测到此消息确实550-5.7.1不符合有关PTR记录和550-5.7.1身份验证的IPv6发送准则。请查看550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error 了解更多550 5.7.1信息。

    最简单的解决方案 然后切换 postfix 仅限ipv4,因此这一步骤4(对你来说可能没必要?)。

  5. SPF DNS记录。为了证明您被允许发送电子邮件 @example.com,您可以在域的DNS记录中添加SPF记录 example.com。我发现了某个地方 The DNS record type 99 (SPF) has been deprecated,所以我们改用TXT记录。让我们将其添加为TXT DNS记录 (另见注1)

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    为什么这些包括?因为我的服务器不是唯一一个从@ example.com发送电子邮件的服务器!我将Gmail配置为 发邮件为 contact@example.com(看这里的截图),使用可信的SMTP提供程序 Sendgrid。 如果我不添加这些 include:,Gmail不允许发送电子邮件 @example.com

  6. DKIM 电子签名。如上所述 这里,DKIM的目标是确保邮件内容在传输过程中没有被篡改。这是Ubuntu中的安装过程(有用的指南) 这里 太):

    • apt-get install opendkim opendkim-tools

    • 创建密钥(您还可以使用生成密钥和相关的DNS TXT记录 http://dkimcore.org/tools/):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • 我们把它放进去吧 /etc/opendkim.conf

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      这个 /etc/default/opendkim

      SOCKET="inet:8891@localhost" # Ubuntu default - listen on loopback on port 8891
      

      最后在postfix配置文件的末尾添加它 /etc/postfix/main.cf

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • 现在让我们添加公钥(找到 /etc/opendkim/mail.txt)到您域名的DNS记录:

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      以下是我的注册商Namelynx的样子:

    • DKIM的最后一步:重启邮件服务 service restart opendkim ; service restart postfix

  7. 测试一切是否有效。 最简单的方法是通过PHP发送电子邮件 auth-results@verifier.port25.com (这个非常有用的工具由Port25 Solutions提供):

    $emailfrom = "Example <contact@example.com>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "Hello", "Hello!", $headers);
    

    然后看看这个工具的答案,它应该是这样的:

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    服务 mail-tester.com 也很有用。

  8. (可选)尝试postmaster.google.com。我用它但我不记得它是否有帮助。

  9. 如果它仍然不起作用,解决方案可能是使用专业解决方案外包电子邮件,以避免日夜(不成功)调试。 这里 这是一篇很好的文章。这是一个引用: “从你的应用程序发送电子邮件可以是***。有一半时间,从你自己的服务器发送的邮件只会被转储到收件人的垃圾邮件文件夹中。” 经过数周的调整后,我遗憾地发现了这一点。


补充说明:

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.

3
2017-09-01 10:21





有一个新的指南已发布在电子邮件收件箱中

我见过的最全面的。一个43个不同点的清单,涵盖了如何避免被标记为垃圾邮件的每个龙头。那是不断更新的。

从设置DNS,配置身份验证,设置信誉监控,降低跳出率,测试您的电子邮件内容等。

ZeroBounce.NET通过尾巴报道所有内容

https://www.zerobounce.net/guide-to-improve-inbox-and-delivery.html


2
2018-03-27 02:16