On Thu, 28 Oct 2021 at 08:29, Felix Ingram <f.ingram@gmail.com> wrote:
On Thu, 28 Oct 2021 at 00:15, <dovecot@ptld.com> wrote:
[...]
> I think my "creating users" was me wanting to make sure that when
> postfix
> passes an email for "barbaz@mydomain.com" to Dovecot, then Dovecot will
> store it and wait for
> someone to come along and impersonate barbaz. i.e. "barbaz" doesn't
> have to exist as a user
> already before Dovecot will store the mail.

If you are using LMTP dovecot will only accept emails from postfix that
it can lookup the /directory/path to from one of the userdb{} or
passdb{} sections. If dovecot can not find a match in any of the
userdb{} or passdb{} it will reject the email as user unknown causing
postfix to send a undeliverable notice email back to the envelope sender
address, also known as back-scatter. I am not aware of a way to use
wildcard addresses in dovecot userdb{}, i don't think its possible but i
don't know what i don't know.

So I think this will be the main issue now - there's no way of knowing the 
addresses ahead of time, so it sounds like I'll need to add them to userdb{} when they
hit postfix and before they get passed to dovecot.

Just to close the loop on this - I managed to get this working using postfix's virtual aliases. I use 
a postgresql function in the alias lookup that transforms 'tester@foobar.mydomain.com' into 
'foobar@mydomain.com' and at the same time inserts 'foobar@mydomain.com' into the 
Dovecot users table. I then have a separate passdb for master users that can log in and 
impersonate the foobar user.

So far this seems to work.

Thanks again to everyone for the help.

Felix