On 2016-08-22 13:21, Peter Mogensen wrote:
=================================================================== .... protocol lda { # passdb { # driver = static # }
userdb { args = /etc/dovecot/dovecot-dict-auth.conf.ext driver = dict result_success = continue-ok result_failure = return-fail } userdb { driver = static args = uid=vmail gid=vmail home=/srv/vmail/%u mail=maildir:~ } }
I realized that the passdb is needed when using the static driver to find out which users actually exist. And that you have to use args=allow_all_users=yes.
But it seems the logic to detect that a passdb is needed doesn't discover that I have a dict userdb before the static one ?!?!
Anyway ... I think I got what I wanted by not trying to change the user in a userdb, but doing it in a passdb:
====================================================================== protocol !lmtp { passdb { driver = passwd-file args = /etc/dovecot/accounts } } protocol lmtp { passdb { args = /etc/dovecot/dovecot-dict-auth.conf.ext driver = dict } }
userdb { driver = static args = uid=vmail gid=vmail home=/srv/imip/vmail mail=maildir:~ }
======================================================================
Where the dict passdb returns something like: O{"nopassword":"yes", "user": "static-user"}
This leaves me with 1 question though: Shouldn't you be able to do this with a userdb rewriting "user" on delivery (LMTP RCPT) and no passdb?
/Peter