Ian Evans:
> Aug 26 08:34:05 carson postfix/smtpd[16374]: warning: problem talking to
> server private/policy-spf: Connection timed out
This Postfix SMTP server time limit is specified with the
smtpd_policy_service_timeout parameter (default: 100s).
Your SPF script should reply in 10 seconds at most. It should not
wait indefinitely for a DNS reply.
Once the Postfix SMTP server gives up, it closes the connection to
the policy daemon. Then the Python script has an error while sending
the (too late) result.
> Aug 26 08:34:58 carson policyd-spf[16383]: Traceback (most recent call
> last):
> Aug 26 08:34:58 carson policyd-spf[16383]: File "/usr/bin/policyd-spf",
> line 690, in <module>
> Aug 26 08:34:58 carson policyd-spf[16383]: sys.stdout.flush()
> Aug 26 08:34:58 carson policyd-spf[16383]: BrokenPipeError: [Errno 32]
> Broken pipe
> Aug 26 08:34:58 carson postfix/spawn[16382]: warning: command
> /usr/bin/policyd-spf exit status 1
>
> So if emails get checked for spf, why would the vast majority get through
> and others cause this?
First. the script should limit the time for DNS lookups.
Second, the script should not die after BrokenPipeError exceptions.
try: sys.stdout.flush()
except BrokenPipeError: pass
Wietse