On 2021-07-11 at 15:46:45 UTC-0400 (Sun, 11 Jul 2021 12:46:45 -0700)
Ron Garret <r...@flownet.com>
is rumored to have said:

On Jul 11, 2021, at 12:22 PM, Matus UHLAR - fantomas <uh...@fantomas.sk> wrote:


The problem is that a rejected recipient produces a mailer-daemon reply.

only if you accept mail for such recipient.

Ah. That may be my problem then. I’m using Dovecot via LMTP for local delivery. I thought that postfix would receive information about non-existent users via that protocol, but I guess it doesn’t and ends up just accepting everything.

Postfix doesn't know about non-existent users that are relayed via LMTP until it has queued and accepted the message. Postfix's SMTP/LMTP client program picks up the queued message, tries to deliver it to Dovecot's LMTP server, and fails. That's when the Postfix bounce daemon takes over, constructing and queueing a bounce message.

So… is dovecot actually the thing that is generating the emails from mailer-daemon?

No. Dovecot is the thing telling Postfix that the address is bad.

Is there a way to get this setup to do the Right Thing? If not, why is LMTP even supported, because it seems to me that anyone who uses it will have this problem.

1. Use {local,relay}_recipient_maps and/or virtual_{mailbox,alias}_maps and reject_unlisted_recipients. You can either talk directly to the DB for the map or at smaller scales you could just periodically generate a static list for Postfix to check at SMTP time.

2. Use reject_unverified_recipients. This is a generally bad idea on submission servers (port 465/587) unless you do something to limit it to recipients in local, virtual, and relay classes. Since that's all you should be seeing on a true SMTP (port 25) server, it's fine to apply it to all messages on your inbound mail stream.

(FYI, the reason I want to use LMTP is that I’m using sqlite for my user db, but postfix does not play well with sqlite when other programs are trying to access the same DB. I didn’t want to duplicate the user DB (I’m a big believer in the DRY principle) so I wanted to localize DB access to a single process, and that process has to be Dovecot.)

I'm not sure what the problem is with Postfix and sqlite, but extracting a suitable static map from the DB periodically should be a SMOP with one SELECT and some trivial formatting, if you don't want Postfix contending with Dovecot synchronously.


--
Bill Cole
b...@scconsult.com or billc...@apache.org
(AKA @grumpybozo and many *@billmail.scconsult.com addresses)
Not Currently Available For Hire

Reply via email to