feat: move doveauth from dictproxy to lua/http

1. existing logins are now verified by lua only

2. non-existing logins are delegated to the new Python doveauth http /create endpoint

Using Lua and http this way makes doveauth more compatible to dovecot 2.4
This commit is contained in:
holger krekel
2026-09-01 22:56:07 +02:00
parent 051f831518
commit 2d0fc2e70e
18 changed files with 593 additions and 296 deletions
+7 -6
View File
@@ -84,11 +84,12 @@ and only relaying OpenPGP end-to-end messages encrypted messages. A
short overview of ``chatmaild`` services:
- :repofile:`doveauth <chatmaild/src/chatmaild/doveauth.py>`
implements create-on-login address semantics and is used by Dovecot
during IMAP login and by Postfix during SMTP/SUBMISSION login which
in turn uses `Dovecot SASL
<https://doc.dovecot.org/2.3/configuration_manual/authentication/dict/#complete-example-for-authenticating-via-a-unix-socket>`_
to authenticate logins.
implements create-on-login address semantics.
Dovecot authenticates IMAP logins, and Postfix SMTP/SUBMISSION logins through `Dovecot SASL
<https://doc.dovecot.org/2.3/configuration_manual/authentication/authentication_mechanisms/>`_,
from an :repofile:`auth.lua <cmdeploy/src/cmdeploy/dovecot/auth.lua.j2>` script
that reads the maildir directly. Only addresses which do not exist yet
are passed on to doveauth, which owns the creation policy.
- :repofile:`chatmail-metadata <chatmaild/src/chatmaild/metadata.py>`
is contacted by a
@@ -155,7 +156,7 @@ Chatmail relay dependency diagram
filtermail-outgoing --- |10025 reinject|postfix;
filtermail-incoming --- |10026 reinject|postfix;
postfix --- |milter opendkim.sock|OpenDKIM
dovecot --- |doveauth.socket|doveauth;
dovecot --- |10084 create|doveauth;
dovecot --- |message delivery|maildir["maildir
/home/vmail/.../user"];
dovecot --- |lastlogin.socket|lastlogin;