The general gist of my lengthy question is --
I have 2 physically separated Postfix instances, the 1st uses remote address
verification queries agains the 2nd.
What happens when the connection between them goes down?
Currently, the remote postfix instance provides
postscreen -- smtpd_*_restriction, dnsbl, etc.
amavisd/inbound - spam, a/v & dkim verification
on restriction & filter criteria pass, the msg if relayed over a restricted
TLS-authenticated connection to a local mailserver.
The local mailserver provides
postfix receiving, add'l filtering
imap deliver/storage
user/account management
I do not actively maintain any authorized user lists on the remote. Instead, I
use RECIPIENT VALIDATION,
/main.cf
...
relay_recipient_maps =
address_verify_map = lmdb:/var/lib/postfix/verify_cache
address_verify_transport_maps =
static:relay-remote:[mail.DDDD.com]:25
relay_transport = relay-remote:[mail.DDDD.com]:30587
...
where postfix populates & maintains an address verification database
(http://www.postfix.org/ADDRESS_VERIFICATION_README.html#caching)
as inbound recipients' addresses are verified in queries against the local
server, via the static relay specified in 'address_verify_transport_maps'
This works as intended - as long as the link to the remote server is UP, and
the address verification queries are successful.
The flow diagram at
How address verification works
http://www.postfix.org/ADDRESS_VERIFICATION_README.html#how
does not directly refer to postscreen. However, IIUC, the remote address
verification probe occurs PRE-QUEUE
probe
message -> Postfix
mail
queue
I'm unclear, then, as to what happens in the case of connection failure between
the remote and local Postfix servers.
Specifically, whether or not an inbound message will be stored on the
receiving, remote Postfix until the link to the remote comes back up.
If it is, what object stores the message? The "Postfix mail queue", or another
deferral-queue? And, what parameters limit its storage of
inbound-but-not-yet-recipient-verified email?
This doc
http://www.postfix.org/ADDRESS_VERIFICATION_README.html#recipient
Recipient address verification
As mentioned earlier, recipient address verification is useful
to block mail for
undeliverable recipients on a mail relay host that does not
have a list of all
valid recipient addresses. This can help to prevent the mail
queue from filling
up with MAILER-DAEMON messages.
...
The unverified_recipient_tempfail_action parameter (default:
defer_if_permit)
specifies the Postfix SMTP server action when a recipient
address verification
probe fails with some temporary error.
identifies the action parameter, unverified_recipient_tempfail_action, in the
case of a remote->local connection failure
And this
http://www.postfix.org/postconf.5.html#unverified_recipient_tempfail_action
unverified_recipient_tempfail_action (default: $reject_tempfail_action)
The Postfix SMTP server's action when
reject_unverified_recipient fails due to a
temporary error condition. Specify "defer" to defer the remote
SMTP client request
immediately. With the default "defer_if_permit" action, the
Postfix SMTP server
continues to look for opportunities to reject mail, and defers
the client request
only if it would otherwise be accepted.
suggests that the action 'holds' the email -- somehwere? -- until the system
heals enough to continue processing.
At this point, the details of the action and storage mechanism elude me.
What happens in the case of
(1) 2 servers -- one a 'store&forward' front end, the other the 'local
delivery' back end
(2) the store&forward instance only uses remote RECIPIENT VERIFICATION
against the 'local delivery' instance
(3) the connection between the 2 goes down
(4) an inbound recipient's address is not yet in the persistent address
verification database
?
Does the message get stored until the connection comes up, then
address-verified, and if PASS'd, allowed to continue processing?
An alternative I've considered is pre-warming the persistent cache with a list
of known email addresses, or simply switching to a sync'd database -- across
the 2 instances -- of known/valid users, but either somewhat defeats the
purpose of the using Postfix's remote address verification capabilities in the
first place.