Hello,

I'm the systems administrator working with the mailsystem in question, and wanted to add some details to this.

We are on the receiving end of the email transaction, I've checked and tested our spf configuration, using postfix-policyd-spf-python, and for all my tests I see us properly accepting and adding headers to the email on a softfail.  I've noth been able to replicate any rejections.   The cases where we are seeing the email rejected when the senders SPF indicates a softfail occure with email forwarded through servers within outbound.protection.outlook.com.  These are emails where a client is using outlook for mailforwarding to an email account hosted with us.  An example log is below, client indentifying info redaced of course.

Jun 27 17:33:58 ezm03-pco postfix/smtpd[224404]: NOQUEUE: reject: RCPT from mail-mw2nam12rlnn2057.outbound.protection.outlook.com[40.95.45.57]: 550 5.7.23 <f...@provisionsales.com>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=helo;id=nam12-mw2-obe.outbound.protection.outlook.com;ip=40.95.45.57;r=REDACTED; from=<REDACTED> to=<REDACTED> proto=ESMTP helo=<NAM12-MW2-obe.outbound.protection.outlook.com>

now, when you check for an SPF record based on the helo name, you find the following

;; ANSWER SECTION:
NAM12-MW2-obe.outbound.protection.outlook.com. 3600 IN TXT "v=spf1 include:spf.protection.outlook.com -all"

So there we have the hard fail,  and when you check that include:

;; ANSWER SECTION:
spf.protection.outlook.com. 521    IN    TXT    "v=spf1 ip4:40.92.0.0/15 ip4:40.107.0.0/16 ip4:52.100.0.0/14 ip4:104.47.0.0/17 ip6:2a01:111:f400::/48 ip6:2a01:111:f403::/49 ip6:2a01:111:f403:8000::/51 ip6:2a01:111:f403:c000::/51 ip6:2a01:111:f403:f000::/52 -all"

you see that the IP listed in the log, 40.95.45.57, is not included in the ranges within that list.  That conbined with the hard fail indicated could account for the rejection of the message, except that I don't understand why the SPF check would be done for the helo hostname of the forwarding server, and why that result would take precidence over the SPF result for the actual sender domain.

Since SPF is supposed to verify that the senders, why would postfix-policyd-spf-python be looking up the SPF record for the helo hostname of the forwarding mailserver and determining what to do based on that?  If my explanation is correct there is clearly something I'm missing about SPF enforcement, or is there some other possible explanation I'm unaware of?

Thank you
Ted
easyDNS Technologies
On 2024-06-27 11:27, Mark E. Jeftovic via mailop wrote:

Been debugging an email forwarding problem, it's basically that the forwarder doesn't use SRS or ARC

That would be an SPF fail, but the sender domains are ~all

Why the hard bounce?

  * Sender address: ~all
  * The forwarded address has -all
  * Receiving server rejecting with notice about sender address SPF fail


Is the final destination server somehow taking the -all from the intermediary address SPF?

What is it about this I'm not getting?

- mark

--
Mark E. Jeftovic <mar...@easydns.com>
Co-founder & CEO easyDNS Technologies Inc.
+1-(416)-535-8672 ext 225

/"Never expect a thing you do not want,
and never desire a thing you do not expect."
-- Bob Proctor /

_______________________________________________
mailop mailing list
mailop@mailop.org
https://list.mailop.org/listinfo/mailop
_______________________________________________
mailop mailing list
mailop@mailop.org
https://list.mailop.org/listinfo/mailop

Reply via email to