Hello Wietse,
Not sure I understand.
The problem I have is when I have address_verify_negative_cache = no.
Postfix is then deferring sender with 450 Address verification in
progress despite the fact Dovecot (LMTP) is replying to Postfix with 550
User doesn't exists (with smtpd_recipient_restrictions =
reject_unverified_recipient as I don't want to generate backscatter).
I assumed when Dovecot replies with 550, then Postfix should reject the
email, not to deffer the delivery.
This is the reason I'm not able to turn address_verify_negative_cache
off as e-mail for users that don't exist will be deferred instead of
rejected, thus it will be floating somewhere between the servers for
couple of days after which sender will be notified that there is a
problem with delivery (and not because user doesn't exists but because
recipient's server is doing address verification for multiple days now).
When I set address_verify_negative_cache = yes, then all is working as
expected - Postfix rejects the sender with 550 when Dovecot's LMTP
replies with 550 User doesn't exists.
When Dovecot replies User does exists then mail is taken for delivery.
Thank you.
Best regards,
Jozef.
On 15. 10. 2017 16:31, Wietse Venema wrote:
A. Schulze:
The problem I have is when I set address_verify_negative_cache = no.
...
It looks like when there is status=undeliverable-but-not-cached
There is no such reply. In reality, the reply is that the address
probe is in progress (DEL_RCPT_STAT_TODO).
This is what happens:
1. SMTP daemon queries verify service for an address probe result.
2. There is no address probe result. This triggers a verify probe.
3. Repeat 1 until the addres probe poll count is reached.
I don't see how one would avoid this, other than by blocking the
SMTP daemon's query while a probe is in progress or until a time
limit is reached.
If you want to create accounts on the fly, don't break address
verification.
Instead, change your local_recipient_maps, virtual_alias_maps,
relay_recipient_maps or virtual_mailbox_maps. At the end of those
maps, a tcp_table or socketmap service that handles the queries for
non-existent addresses. This service replies with 5xx if the account
should not exist, or it replies with 4xx and creates the account.
Wietse