How to deal with notifications ending in the Gmail spam folder?

Some of you using Gmail complained that :ps: notifications end up in their Spam folder.
Here is some information on what this happens, what you can do help whitelist legitimate email, and how to handle your email notifications.

Our Email Setup

We’re using Gandi mail to handle our email. This means most emails coming from this Discourse instance goes through Gandi’s mail servers. As Gandi is a large email provider sending 30 million emails per day, some of their IP addresses eventually end up in blacklists. Note that our server’s IP address is not on any blacklist (that’s because we don’t send much email from there and never spam.)

G̸͍͇̚á̶̙̘g̷̋͝ͅģ̶̓l̸͍̀e̸̻͐ is very clear about how to handle this situation: use SPF, DKIM, and DMARC. We do have SPF records in our DNS zone. But Gandi mail does not support DKIM, so we cannot do anything about it.

I found a notification in my Spam folder!

Thank you for reporting it! The only thing you can do about it is to mark it as non-spam.
The system will learn and eventually stop marking it as spam.

I receive too many notifications and mark them as Spam.

Please don’t do this! Instead, check your account preferences (the :gear: under your avatar) and change your email notifications to lower their amount. You can also do it per topic, only watching what you really want to follow, and muting topics that do not interest you. Documentation of the notifications system is a bit scattered around but I found this short introduction at Wikimedia.

IsNotSpam Report

IsNotSpam.com is a service to check an email against SpamAssassin and other sources. It finds our email to be “ham” (non spam) with a score of 2.8 (10.0 is required to be considered spam.) There were reports of perfectly fine email even with SPF and DKIM setup and passing that end up in Gmail’s spam folder. Go figure.

logo 	
Latest Report Details

Delete this report
This message is an automatic response from isNOTspam's authentication verifier service. The service allows email senders to perform a simple check of various sender authentication mechanisms. It is provided free of charge, in the hope that it is useful to the email community. While it is not officially supported, we welcome any feedback you may have at .

Thank you for using isNOTspam.

The isNOTspam team

==========================================================
Summary of Results
==========================================================

SPF Check : pass
Sender-ID Check : pass
DKIM Check : neutral
SpamAssassin Check : ham (non-spam)
==========================================================
Details:
==========================================================

HELO hostname: relay4-d.mail.gandi.net
Source IP: 217.70.183.196
mail-from: ps@zoethical.com
Anonymous To: ins-5h16ly2a@isnotspam.com
---------------------------------------------------------
SPF check details:
----------------------------------------------------------

Result: pass
ID(s) verified: smtp.mail=ps@zoethical.com
DNS record(s):
zoethical.com. 1796 IN TXT "v=spf1 ip4:88.99.189.12 ip6:2a01:4f8:c0c:f71::2 include:_mailcust.gandi.net ?all"


----------------------------------------------------------
Sender-ID check details:
----------------------------------------------------------

Result: pass

ID(s) verified: smtp.mail=ps@zoethical.com
DNS record(s):
zoethical.com. 1796 IN TXT "v=spf1 ip4:88.99.189.12 ip6:2a01:4f8:c0c:f71::2 include:_mailcust.gandi.net ?all"


----------------------------------------------------------
DKIM check details:
----------------------------------------------------------

Result: neutral (message not signed)
ID(s) verified: header.From=ps@zoethical.com
Selector=
domain=
DomainKeys DNS Record=

----------------------------------------------------------
SpamAssassin check details:
----------------------------------------------------------
SpamAssassin 3.4.1 (2015-04-28)

Result: ham (non-spam) (02.8points, 10.0 required)

pts rule name description
---- ---------------------- -------------------------------


* -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
* [217.70.183.196 listed in wl.mailspike.net]
* 3.5 BAYES_99 BODY: Bayes spam probability is 99 to 100%
* [score: 1.0000]
* -1.0 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low
* trust
* [217.70.183.196 listed in list.dnswl.org]
* -0.0 SPF_PASS SPF: sender matches SPF record
* 0.2 BAYES_999 BODY: Bayes spam probability is 99.9 to 100%
* [score: 1.0000]
* 0.1 HTML_MESSAGE BODY: HTML included in message
* -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
X-Spam-Status: Yes, hits=2.8 required=-20.0 tests=BAYES_99,BAYES_999,
HTML_MESSAGE,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS
autolearn=no autolearn_force=no version=3.4.0
X-Spam-Score: 2.8

To learn more about the terms used in the SpamAssassin report, please search
here: http://wiki.apache.org/spamassassin/

==========================================================
Explanation of the possible results (adapted from
draft-kucherawy-sender-auth-header-04.txt):
==========================================================

"pass"
the message passed the authentication test.

"fail"
the message failed the authentication test.

"softfail"
the message failed the authentication test, and the authentication
method has either an explicit or implicit policy which doesn't require
successful authentication of all messages from that domain.

"neutral"
the authentication method completed without errors, but was unable
to reach either a positive or a negative result about the message.

"temperror"
a temporary (recoverable) error occurred attempting to authenticate
the sender; either the process couldn't be completed locally, or
there was a temporary failure retrieving data required for the
authentication. A later retry may produce a more final result.

"permerror"
a permanent (unrecoverable) error occurred attempting to
authenticate the sender; either the process couldn't be completed
locally, or there was a permanent failure retrieving data required
for the authentication.


==========================================================
Original Email
==========================================================

From discourse+verp-ed1a3b9952dae7186012482183ee216b@zoethical.com Sat Sep 15 15:50:28 2018
Return-path: <discourse+verp-ed1a3b9952dae7186012482183ee216b@zoethical.com>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
localhost.localdomain
X-Spam-Flag: YES
X-Spam-Level: **
X-Spam-Report:
* -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
* [217.70.183.196 listed in wl.mailspike.net]
* 3.5 BAYES_99 BODY: Bayes spam probability is 99 to 100%
* [score: 1.0000]
* -1.0 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low
* trust
* [217.70.183.196 listed in list.dnswl.org]
* -0.0 SPF_PASS SPF: sender matches SPF record
* 0.2 BAYES_999 BODY: Bayes spam probability is 99.9 to 100%
* [score: 1.0000]
* 0.1 HTML_MESSAGE BODY: HTML included in message
* -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
X-Spam-Status: Yes, hits=2.8 required=-20.0 tests=BAYES_99,BAYES_999,
HTML_MESSAGE,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS
autolearn=no autolearn_force=no version=3.4.0
Envelope-to: ins-5h16ly2a@isnotspam.com
Delivery-date: Sat, 15 Sep 2018 15:50:28 +0000
Received: from relay4-d.mail.gandi.net ([217.70.183.196])
by localhost.localdomain with esmtp (Exim 4.84_2)
(envelope-from <discourse+verp-ed1a3b9952dae7186012482183ee216b@zoethical.com>)
id 1g1Cq4-000Bq8-Ei
for ins-5h16ly2a@isnotspam.com; Sat, 15 Sep 2018 15:50:28 +0000
X-Originating-IP: 88.99.189.12
Received: from localhost.localdomain (ps.zoethical.org [88.99.189.12])
(Authenticated sender: discourse@zoethical.com)
by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 4C088E0002
for <ins-5h16ly2a@isnotspam.com>; Sat, 15 Sep 2018 15:50:34 +0000 (UTC)
Date: Sat, 15 Sep 2018 15:50:33 +0000
From: =?UTF-8?B?UGV0aXRlcyBTaW5ndWxhcml0w6lz?= <ps@zoethical.com>
Reply-To: =?UTF-8?B?UGV0aXRlcyBTaW5ndWxhcml0w6lz?= <ps@zoethical.com>
To: ins-5h16ly2a@isnotspam.com
Message-ID: <e49409a3-14ea-4c95-a245-b15ee1f54048@ps.zoethical.org>
Subject: =?UTF-8?Q?[Petites_Singularit=C3=A9s]_Email_Deliverability_Test?=
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_5b9d2a49c6c2f_e43f8b3ded25f8499d6";
charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Auto-Response-Suppress: All
Auto-Submitted: auto-generated


----==_mimepart_5b9d2a49c6c2f_e43f8b3ded25f8499d6
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit

This is a test email from

[**https://ps.zoethical.org**][0]

Email deliverability is complicated. Here are a few important things you should check first:

- Be *sure* to set the `notification email` from: address correctly in your site settings. **The domain specified in the "from" address of the emails you send is the domain your email will be validated against**.

- Know how to view the raw source of the email in your mail client, so you can examine email headers for important clues. In Gmail, it is the "show original" option in the drop-down menu at the top right of each mail.

- **IMPORTANT:** Does your ISP have a reverse DNS record entered to associate the domain names and IP addresses you send mail from? [Test your Reverse PTR record][2] here. If your ISP does not enter the proper reverse DNS pointer record, it's very unlikely any of your email will be delivered.

- Is your domain's [SPF record][8] correct? [Test your SPF record][1] here. Note that TXT is the correct official record type for SPF.

- Is your domain's [DKIM record][3] correct? This will significantly improve email deliverability. [Test your DKIM record][7] here.

- If you run your own mail server, check to make sure the IPs of your mail server are [not on any email blacklists][4]. Also verify that it is definitely sending a fully-qualified hostname that resolves in DNS in its HELO message. If not, this will cause your email to be rejected by many mail services.

- We highly recommend you **send a test email to [mail-tester.com][mt]** to verify that all the above is working correctly.

(The *easy* way is to create a free account on [SendGrid][sg], [SparkPost][sp], [Mailgun][mg] or [Mailjet][mj], which have generous free mailing plans and will be fine for small communities. You'll still need to set up the SPF and DKIM records in your DNS, though!)

We hope you received this email deliverability test OK!

Good luck,

Your friends at [Discourse](http://www.discourse.org)

[0]: https://ps.zoethical.org
[1]: http://www.kitterman.com/spf/validate.html
[2]: http://mxtoolbox.com/ReverseLookup.aspx
[3]: http://www.dkim.org/
[4]: http://whatismyipaddress.com/blacklist-check
[7]: https://www.mail-tester.com/spf-dkim-check
[8]: http://www.openspf.org/SPF_Record_Syntax
[sg]: https://goo.gl/r1WMF6
[sp]: https://www.sparkpost.com/
[mg]: http://www.mailgun.com/
[mj]: https://www.mailjet.com/pricing
[mt]: http://www.mail-tester.com/

----==_mimepart_5b9d2a49c6c2f_e43f8b3ded25f8499d6
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<p>This is a test email from</p>=0D
<p><a href=3D"https://ps.zoethical.org"><strong>https://ps.zoethical.org<=
/strong></a></p>=0D
<p>Email deliverability is complicated. Here are a few important things y=
ou should check first:</p>=0D
<ul>=0D
<li>=0D
<p>Be <em>sure</em> to set the <code>notification email</code> from: addr=
ess correctly in your site settings. <strong>The domain specified in the =
=E2=80=9Cfrom=E2=80=9D address of the emails you send is the domain your =
email will be validated against</strong>.</p>=0D
</li>=0D
<li>=0D
<p>Know how to view the raw source of the email in your mail client, so y=
ou can examine email headers for important clues. In Gmail, it is the =E2=
=80=9Cshow original=E2=80=9D option in the drop-down menu at the top righ=
t of each mail.</p>=0D
</li>=0D
<li>=0D
<p><strong>IMPORTANT:</strong> Does your ISP have a reverse DNS record en=
tered to associate the domain names and IP addresses you send mail from? =
<a href=3D"http://mxtoolbox.com/ReverseLookup.aspx" rel=3D"nofollow noope=
ner">Test your Reverse PTR record</a> here. If your ISP does not enter th=
e proper reverse DNS pointer record, it=E2=80=99s very unlikely any of yo=
ur email will be delivered.</p>=0D
</li>=0D
<li>=0D
<p>Is your domain=E2=80=99s <a href=3D"http://www.openspf.org/SPF_Record_=
Syntax" rel=3D"nofollow noopener">SPF record</a> correct? <a href=3D"http=
://www.kitterman.com/spf/validate.html" rel=3D"nofollow noopener">Test yo=
ur SPF record</a> here. Note that TXT is the correct official record type=
for SPF.</p>=0D
</li>=0D
<li>=0D
<p>Is your domain=E2=80=99s <a href=3D"http://www.dkim.org/" rel=3D"nofol=
low noopener">DKIM record</a> correct? This will significantly improve em=
ail deliverability. <a href=3D"https://www.mail-tester.com/spf-dkim-check=
" rel=3D"nofollow noopener">Test your DKIM record</a> here.</p>=0D
</li>=0D
<li>=0D
<p>If you run your own mail server, check to make sure the IPs of your ma=
il server are <a href=3D"http://whatismyipaddress.com/blacklist-check" re=
l=3D"nofollow noopener">not on any email blacklists</a>. Also verify that=
it is definitely sending a fully-qualified hostname that resolves in DNS=
in its HELO message. If not, this will cause your email to be rejected b=
y many mail services.</p>=0D
</li>=0D
<li>=0D
<p>We highly recommend you <strong>send a test email to <a href=3D"http:/=
/www.mail-tester.com/" rel=3D"nofollow noopener">mail-tester.com</a></str=
ong> to verify that all the above is working correctly.</p>=0D
</li>=0D
</ul>=0D
<p>(The <em>easy</em> way is to create a free account on <a href=3D"https=
://goo.gl/r1WMF6" rel=3D"nofollow noopener">SendGrid</a>, <a href=3D"http=
s://www.sparkpost.com/" rel=3D"nofollow noopener">SparkPost</a>, <a href=3D=
"http://www.mailgun.com/" rel=3D"nofollow noopener">Mailgun</a> or <a hre=
f=3D"https://www.mailjet.com/pricing" rel=3D"nofollow noopener">Mailjet</=
a>, which have generous free mailing plans and will be fine for small com=
munities. You=E2=80=99ll still need to set up the SPF and DKIM records in=
your DNS, though!)</p>=0D
<p>We hope you received this email deliverability test OK!</p>=0D
<p>Good luck,</p>=0D
<p>Your friends at <a href=3D"http://www.discourse.org" rel=3D"nofollow n=
oopener">Discourse</a></p>=

----==_mimepart_5b9d2a49c6c2f_e43f8b3ded25f8499d6--