Dovecot Proxy with mysql passdb and oauth2 authentication: upgrade from 2.3.21 to 2.4.3 does not work

Urban Loesch via dovecot <[email protected]> Tue, 7 Apr 2026 14:18:28 +0200
Newsgroups gmane.mail.imap.dovecot
Message-ID <[email protected]>
Hi,

I am running a Dovecot IMAP/POP3 proxy in my test environment using the latest version, 2.3.21, installed from the Dovecot repository.
It functions as a pure IMAP/POP3 proxy for 7 different IMAP backends (currently always Dovecot 2.3.21).

The proxy retrieves all its information from a MySQL database mainly the ip-address to which backend he should pass the connection and forwards all 
authentication information to the backend. This has always worked without any issues so far.

Now I'm trying to upgrade the proxy from 2.3.21 to 2.4.3.
I tried to convert my 2.3.21 configuration to 2.4.3 with your very helpfull tool from https://dovecot.org/upgrader/.

But now when I try to start dovecot I get the followong error in my logs:

...
2026-04-07T12:00:57.692994+02:00 imap-dev dovecot: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
2026-04-07T12:00:57.695908+02:00 imap-dev dovecot: auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
2026-04-07T12:00:57.696532+02:00 imap-dev dovecot: auth: Fatal: Cannot initialize oauth2: Missing oauth2_introspection_mode setting
2026-04-07T12:00:57.697569+02:00 imap-dev dovecot: master: Error: service(auth): command startup failed, throttling for 4.000 secs
...

As I just said, the server only works as a proxy (no mailboxes hosted on itself, etc).

Have you any idea how I can solve this issues?

Below my current .deb packages installed and "doveconf -n" from 2.4.3.

Many thanks in advance
Urban

-----------------------
# dpkg -l |grep dovecot
ii  dovecot-core                  2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - core files
ii  dovecot-imapd                 2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - IMAP daemon
ii  dovecot-ldap                  2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - LDAP support
ii  dovecot-lmtpd                 2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - LMTP server
ii  dovecot-managesieved          2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - ManageSieve server
ii  dovecot-mysql                 2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - MySQL support
ii  dovecot-pop3d                 2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - POP3 daemon
ii  dovecot-sieve                 2:2.4.3-1+debian12             amd64        secure POP3/IMAP server - Sieve filters support
------------------------

# 2.4.3-1+debian12 (c1b22ef978): /etc/dovecot/dovecot.conf
# Pigeonhole version 2.4.3-1+debian12 (99939e07)
# OS: Linux 6.1.0-31-amd64 x86_64 Debian 12.13
# Hostname: imap-dev.domain.com
dovecot_config_version = 2.4.3
auth_cache_negative_ttl = 0
auth_cache_size = 128 M
auth_cache_ttl = 0
auth_debug = yes
auth_debug_passwords = yes
auth_failure_delay = 5 secs
auth_mechanisms = plain login oauthbearer xoauth2
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_%@
auth_username_translation = %@
dovecot_storage_version = 2.4.0
login_log_format_elements = user=<%{user}> method=%{mechanism} rip=%{remote_ip} lip=%{local_ip} mpid=%{mail_pid} %{secured} %{ssl_security}
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags 
copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext
protocols = imap sieve
sql_driver = mysql
ssl_min_protocol = TLSv1
verbose_proctitle = yes
namespace inbox {
   inbox = yes
   mailbox Drafts {
     special_use = "\\Drafts"
   }
   mailbox Junk {
     special_use = "\\Junk"
   }
   mailbox Sent {
     special_use = "\\Sent"
   }
   mailbox "Sent Messages" {
     special_use = "\\Sent"
   }
   mailbox Trash {
     special_use = "\\Trash"
   }
}
passdb sql {
   default_password_scheme = PLAIN
   query = SELECT NULL AS password, 'y' AS nodb, SUBSTRING_INDEX(SUBSTRING_INDEX(param, '[', -1), ']', 1) AS host, '%{user}' AS destuser, 'Y' AS 
nologin, 'Y' AS nopassword, 'Y' AS proxy, '%{mechanism}' AS proxy_mech FROM mail_username WHERE user = '%{user}' AND allow_login = 'y' AND 
('%{protocol}' = 'imap' OR '%{protocol}' = 'sieve');
}
mysql devdb1.domain.com {
   dbname = mailconfig_dev
   password = # hidden, use -P to show it
   user = imap-dev
}
sieve_script personal {
   driver = file
   path = ~/sieve
}
service imap-login {
   process_min_avail = 2
   restart_request_count = unlimited
   vsz_limit = 512 M
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service pop3-login {
   process_min_avail = 2
   restart_request_count = unlimited
   vsz_limit = 256 M
}
service tcpwrap {
   unix_listener login/tcpwrap {
     group = $SET:default_login_user
     mode = 0600
     user = $SET:default_login_user
   }
}
ssl_server {
   cert_file = /etc/letsencrypt/live/domain.com/fullchain.pem
   dh_file = /etc/dovecot/dh.pem
   key_file = /etc/letsencrypt/live/domain.com/privkey.pem
   prefer_ciphers = server
}
protocol imap {
   imap_capability = IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE
   login_greeting = Domain-Dev IMAP Server ready.
}
protocol pop3 {
   login_greeting = Domain-Dev POP3 Server ready.
   pop3_enable_last = yes
   pop3_uidl_format = %{uid | substr(0, 8)}%{uidvalidity | substr(0, 8)}
}



_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]