Scott Kitterman via Postfix-users escribió el 10/12/2023 a las 18:09:
On December 10, 2023 3:54:13 PM UTC, Carlos Velasco via
Postfix-users<postfix-users@postfix.org> wrote:
Wietse Venema via Postfix-users escribió el 10/12/2023 a las 15:53:
Carlos Velasco via Postfix-users:
2. Duplicated SMTP Access Policy Delegation
This issue is related to headers too.
I'm using pypolicyd-spf as policy daemon to check SPF. It is working fine.
The execution happens before milter. This is ok.
Prepended "Received-SPF" header by pypolicyd-spf show up in the milter. This is
ok.
But in the final email, the one received by the IMAP server,
"Received-SPF" header is duplicated, one in the location shown at
the milter process (heder callback), but another new one, just
above the "own Postfix-prepended Received: header". This is weird.
If the milter adds Received-SPF twice, then you are processing a message
twice with that Milter.
Output from:
postconf -n
postconf -Mf
Is requuired fo further support.
I have collected the postconfs (see below), but I I've done some tests and I
think I know what's happening.
Please note that "Received-SPF" is not coming from milter, it comes from policy
daemon (inside smtpd_recipient_restrictions: check_policy_service
unix:private/policyd-spf).
So, policyd-spf is executed first, along all smtpd_recipient_restrictions. After, in the
milter, the first header to show up in header callback is this "Received-SPF".
Now comes the "weird thing"... If I don't touch headers in the milter, all is fine,
"Received-SPF" is not duplicated, but note that, in the final email, this header is
located *above* own Received (the one missing in milter, that is, my point 1).
Test 1: If I delete this "Received-SPF" header in the milter (with chgheader
with index 1 and undef), the header still show up in the final email, again, above own
Received.
Test 2: Delete this "Received-SPF" header in the milter (chgheader) and recreate again
(with addheader). Then duplicated "Received-SPF" headers show up in the final email, one
above own Received and another one in the placer inserted by the milter.
So, I think there is a "ghost" Received-SPF header coming from policyd that
doesn't works well with the milter.
Info: the reason to delete/add headers is because the filter can, sometimes,
change the whole mail, so the headers are first deleted and then recreated,
this is how I hit this weird issue.
As a workaround, I can just ignore/delete the "Received-SPF" header in the
milter, as it is *always* there in the final mail, above own Received.
That means you are somehow calling the policy server twice.
You didn't mention what version of the SPF policy server you are using. Recent
versions (under the project name SPF Engine, since it's not just a policy
server anymore) also provide a milter front end if you would rather do all the
processing in milters. It uses the same SPF processing code, so it's merely a
choice of how you would prefer to integrate with Postfix.
No, it's called only 1 time, verified with debugs. The duplicated header issue
is located in postfix when mixing policyd and milter, something weird happens.
I will think about passing it to milter protocol, but really the main problem
in my email is point 1. I'm trying to understand the postfix source code. I see
the own Received is created in function common_pre_message_handling, but I
don't see how milter is handled at all, and I don't see any milter call in
common_post_message_handling. Is milter handled by cleanup?
Regards,
Carlos Velasco
_______________________________________________
Postfix-users mailing list -- postfix-users@postfix.org
To unsubscribe send an email to postfix-users-le...@postfix.org