Customer email not passing SPF

Email from one of our customers is failing SPF and is being flagged as spam. I am helping them work through the issue, but I want to make sure that it isn’t on my end to avoid looking too stupid.

Their domain is From the email header, the email is delivered by Google:

Received: from ( [])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))
	(No client certificate requested)

Their TXT records are:	300	IN	TXT	"v=spf1 -all"	300	IN	TXT	"google-site-verification=Ifm38gWyJHgj7ml3mYTyF4BVTElSnytai-BgNB1BL2I"

I’m not real familiar with how the ‘include’ part of the SPF works.

Their MX records are:	300	IN	MX	10	300	IN	MX	10	300	IN	MX	1	300	IN	MX	5	300	IN	MX	5

From what I’m seeing, they are using mail service from Google and the DNS is from Cloudflare.

As I said, I think the issue is on their end, but is it possible that there is actually a configuration issue on my end? I don’t remember customizing the SpamAssassin portion of my server. The only real custom stuff is I am using external DNS.


They need to add to the SPF record. The include mechanism adds the entire SPF record of whatever is specified. Their record should likely be:

v=spf1 a -all

Note that I removed the specified domain after a as an SPF record will only apply to the domain of the TXT record, and I am assuming this is for email addresses, so using is usually redundant, but you can leave it, if you prefer.

This should help them with other non-free email providers, as well, as this is an IETF standard.

1 Like

Thanks @openletter. Knowing what “include” refers to helps and makes much more sense than where I was headed. I will pass this on. Thanks again.

@openletter The customer added the include you suggested. I have them whitelisted so the mail is being delivered, but I think they are still failing SPF. What I am seeing as the fail is on line 8 of the log snippet below:

Feb 22 10:58:27 mail postfix/smtpd[879]: connect from[]
Feb 22 10:58:28 mail postfix/smtpd[879]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support
Feb 22 10:58:28 mail postgrey[1625]: action=pass, reason=client whitelist,, client_address=,,
Feb 22 10:58:28 mail postfix/smtpd[879]: 9BA77A419DC:[]
Feb 22 10:58:28 mail postfix/cleanup[878]: 9BA77A419DC: message-id=<>
Feb 22 10:58:29 mail opendkim[16704]: 9BA77A419DC: s=google SSL
Feb 22 10:58:29 mail opendmarc[1137]: implicit authentication service:
Feb 22 10:58:29 mail opendmarc[1137]: 9BA77A419DC: SPF(mailfrom): fail
Feb 22 10:58:29 mail opendmarc[1137]: 9BA77A419DC: none
Feb 22 10:58:29 mail postfix/qmgr[5828]: 9BA77A419DC: from=<>, size=14095, nrcpt=1 (queue active)
Feb 22 10:58:29 mail spampd[28342]: processing message <> for <>
Feb 22 10:58:29 mail postfix/smtpd[879]: disconnect from[] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
Feb 22 10:58:31 mail spampd[28342]: clean message <> (3.11/5.00) from <> for <> in 1.86s, 14478 bytes.
Feb 22 10:58:31 mail postfix/lmtp[881]: 9BA77A419DC: to=<>, relay=[]:10025, delay=3.3, delays=1.2/0/0.01/2.1, dsn=2.0.0, status=sent (250 2.0.0 <> 2DHtJrXiM2ByAwAA1nX8CA Saved)
Feb 22 10:58:31 mail postfix/qmgr[5828]: 9BA77A419DC: removed

If information from the header would be helpful, please let me know.

Any guesses on what else they can do? We have another customer who uses google and have the same as their only include. Their email passes SPF I’m stymied.


Have someone from the Rochester Art Center visit and then send an email to the address provided.

Pass along the link to the results here so I and others can see them. It should shed some light on things. @trinkel

1 Like

@alento Yeah, that crossed my mind too, then I forgot. I’m getting too old for this.

I will reach out to them.


1 Like

@alento Here is the MailTester link: . It came up 10/10. The only thing I saw is that there is no DMARC record.

What do the Authentication-Results headers show?

Authentication-Results headers:

Authentication-Results:; dmarc=none (p=none dis=none)
Authentication-Results:; spf=fail
	dkim=pass (2048-bit key; unprotected) header.b="QQMrAzpS";

Okay, so, this is a new one for me.

Does it show that the message was received by one of the approved servers? Here is the forum email for your reply, so it should look similar (I don’t conveniently have a G Suite email to look at the header in MiaB):

Received: from authenticated-user ( [])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	(No client certificate requested)
	by (Postfix) with ESMTPSA id 0AA612B85C
	for <>; Tue, 23 Feb 2021 16:10:33 -0500 (EST)

This is the trace:

Received: from ([])
	by with LMTP id 2DHtJrXiM2ByAwAA1nX8CA
	for <>; Mon, 22 Feb 2021 10:58:29 -0600
Received: from ( [])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))
	(No client certificate requested)
	by (Postfix) with ESMTPS id 9BA77A419DC
	for <>; Mon, 22 Feb 2021 10:58:28 -0600 (CST)
Received: by with SMTP id jt13so30635436ejb.0
        for <>; Mon, 22 Feb 2021 08:58:28 -0800 (PST)

The sending server is I traced back the include and it is an include of three more lists which are populated with IP blocks. The closest one that I could find is which looks like it is a range from to so, yes?

I’m assuming the record was updated before the email was sent?

Ummmm, hmmmmm. Valid question. I really don’t know. The email came in yesterday so it didn’t even cross my mind. I’ll check tomorrow at work.

Well, hell.

@openletter I think you nailed it. The SPF must have changed sometime between Monday and Tuesday while I was firing this thread back up. An email I got back from her yesterday afternoon passed.

So, in the way of recap, adding to their SPF did fix the issue. That makes a lot more sense.

Thanks for your help. I really appreciate it. And sorry for the wild goose chase at the end.

If, in the rare case that I’m wrong, I’ll be back :nerd_face:.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.