Hello,
I’m encountering a reproducible parsing issue in Dovecot 2.4 on Debian 13 (Trixie). Even when /etc/dovecot/conf.d/auth-sql.conf.ext contains a valid passdb block, Dovecot reports that the block is empty.
Environment:
- Debian 13 (Trixie)
- Dovecot 2.4 (from Debian repository)
- Clean install, no custom patches
Error: doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/auth-sql.conf.ext line 1: passdb { } is missing section name
Steps to reproduce:
Remove the file: rm -f /etc/dovecot/conf.d/auth-sql.conf.ext
Recreate it cleanly: cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF' passdb { driver = sql args = /etc/dovecot/sql.conf.ext }
userdb { driver = sql args = /etc/dovecot/sql.conf.ext } EOF
Verify the file contents: sed -n '1,20p' /etc/dovecot/conf.d/auth-sql.conf.ext | cat -A
Output: passdb {$ driver = sql$ args = /etc/dovecot/sql.conf.ext$ }$ $ userdb {$ driver = sql$ args = /etc/dovecot/sql.conf.ext$ }$
Run: doveconf
Actual result: Dovecot still reports that the passdb block is empty, even though the file is valid.
Expected result: Dovecot should accept the passdb block and load SQL authentication normally.
Additional notes:
- No BOM (ef bb bf) present.
- No CRLF (^M) present.
- No stray characters.
- File is not a symlink.
- No duplicate auth-sql.conf.ext files exist.
- The include line in 10-auth.conf is correct.
- The error persists even after full deletion and recreation of the file.
This appears to be a parser or include-path issue in Dovecot 2.4.
Any guidance or confirmation would be appreciated.
Have you tried to add a section name, like
passdb auth { }
Also if you have only few/one passdb, the section name can default as driver, like
passdb sql { ... }
That said, args no longer works in 2.4, see https://doc.dovecot.org/latest/core/config/auth/databases/sql.html how to configure it.
Aki
On 27/12/2025 02:42 EET John Hill via dovecot <[1]dovecot@dovecot.org>
wrote:
Hello,
I'm encountering a reproducible parsing issue in Dovecot 2.4 on Debian
13 (Trixie).
Even when /etc/dovecot/conf.d/auth-sql.conf.ext contains a valid passdb
block,
Dovecot reports that the block is empty.
Environment:
- Debian 13 (Trixie)
- Dovecot 2.4 (from Debian repository)
- Clean install, no custom patches
Error:
doveconf: Fatal: Error in configuration file
/etc/dovecot/conf.d/auth-sql.conf.ext line 1: passdb { } is missing
section name
Steps to reproduce:
1. Remove the file:
rm -f /etc/dovecot/conf.d/auth-sql.conf.ext
2. Recreate it cleanly:
cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF'
passdb {
driver = sql
args = /etc/dovecot/sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/sql.conf.ext
}
EOF
3. Verify the file contents:
sed -n '1,20p' /etc/dovecot/conf.d/auth-sql.conf.ext | cat -A
Output:
passdb {$
driver = sql$
args = /etc/dovecot/sql.conf.ext$
}$
$
userdb {$
driver = sql$
args = /etc/dovecot/sql.conf.ext$
}$
4. Run:
doveconf
Actual result:
Dovecot still reports that the passdb block is empty, even though the
file is valid.
Expected result:
Dovecot should accept the passdb block and load SQL authentication
normally.
Additional notes:
- No BOM (ef bb bf) present.
- No CRLF (^M) present.
- No stray characters.
- File is not a symlink.
- No duplicate auth-sql.conf.ext files exist.
- The include line in 10-auth.conf is correct.
- The error persists even after full deletion and recreation of the
file.
This appears to be a parser or include-path issue in Dovecot 2.4.
Any guidance or confirmation would be appreciated.
_______________________________________________
dovecot mailing list -- [2]dovecot@dovecot.org
To unsubscribe send an email to [3]dovecot-leave@dovecot.org
References
Visible links
- mailto:dovecot@dovecot.org
- mailto:dovecot@dovecot.org
- mailto:dovecot-leave@dovecot.org
I will study this and see if I can get it working. Thanks
On 12/26/25 10:07 PM, Aki Tuomi wrote:
https://doc.dovecot.org/latest/core/config/auth/databases/sql.html how to configure it.
On 2025-12-26 16:42, John Hill via dovecot wrote:
- Recreate it cleanly: cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF' passdb { driver = sql args = /etc/dovecot/sql.conf.ext }
userdb { driver = sql args = /etc/dovecot/sql.conf.ext }
This is your problem. What you have above is suitable up to and including version 2.3. It no longer works.
Look at the instructions for converting 2.3 to 2.4 on the Dovecot website.
Cheers
Cam
Cam Ellison via dovecot said on Fri, 26 Dec 2025 20:31:57 -0800
On 2025-12-26 16:42, John Hill via dovecot wrote:
- Recreate it cleanly: cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF' passdb { driver = sql args = /etc/dovecot/sql.conf.ext }
userdb { driver = sql args = /etc/dovecot/sql.conf.ext }
This is your problem. What you have above is suitable up to and including version 2.3. It no longer works.
Look at the instructions for converting 2.3 to 2.4 on the Dovecot website.
Which exact URL? There are several pages on this subject, and they tend to contradict each other.
Thanks,
SteveT
Steve Litt
On 2025-12-27 08:38, Steve Litt via dovecot wrote:
Cam Ellison via dovecot said on Fri, 26 Dec 2025 20:31:57 -0800
On 2025-12-26 16:42, John Hill via dovecot wrote:
- Recreate it cleanly: cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF' passdb { driver = sql args = /etc/dovecot/sql.conf.ext }
userdb { driver = sql args = /etc/dovecot/sql.conf.ext }
This is your problem. What you have above is suitable up to and including version 2.3. It no longer works.
Look at the instructions for converting 2.3 to 2.4 on the Dovecot website. Which exact URL? There are several pages on this subject, and they tend to contradict each other.
This one: https://doc.dovecot.org/2.4.2/installation/upgrade/2.3-to-2.4.html.
The change in approach between the two is significant.
Importantly for this situation, auth-sql.conf.ext should look something like this:
Authentication for SQL users. Included from 10-auth.conf.
<doc/wiki/AuthDatabase.SQL.txt>
sql_driver = mysql
mysql domainname { host=localhost dbname=dummydb user=dummyuser password=whatever port=3306 }
userdb sql { userdb_sql_query = SELECT CONCAT('/var/vmail/',email_username) AS home, 5000 AS uid, 5000 AS gid FROM usertable WHERE email_username = '%{user|username}' iterate_query = SELECT email_username AS username, domain FROM usertable } passdb sql { default_password_scheme = BLF-CRYPT passdb_sql_query = SELECT password FROM passwordtable WHERE ID IN (SELECT ID FROM usertable WHERE email_username='%{user|username}') }
Cheers
Cam
Thanks every little bit helps --john
On 12/27/25 12:32 PM, Cam Ellison via dovecot wrote:
On 2025-12-27 08:38, Steve Litt via dovecot wrote:
Cam Ellison via dovecot said on Fri, 26 Dec 2025 20:31:57 -0800
On 2025-12-26 16:42, John Hill via dovecot wrote:
- Recreate it cleanly: cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF' passdb { driver = sql args = /etc/dovecot/sql.conf.ext }
userdb { driver = sql args = /etc/dovecot/sql.conf.ext } This is your problem. What you have above is suitable up to and including version 2.3. It no longer works.
Look at the instructions for converting 2.3 to 2.4 on the Dovecot website. Which exact URL? There are several pages on this subject, and they tend to contradict each other.
This one: https://doc.dovecot.org/2.4.2/installation/upgrade/2.3- to-2.4.html.
The change in approach between the two is significant.
Importantly for this situation, auth-sql.conf.ext should look something like this:
Authentication for SQL users. Included from 10-auth.conf.
<doc/wiki/AuthDatabase.SQL.txt>
sql_driver = mysql
mysql domainname { host=localhost dbname=dummydb user=dummyuser password=whatever port=3306 }
userdb sql { userdb_sql_query = SELECT CONCAT('/var/vmail/',email_username) AS home, 5000 AS uid, 5000 AS gid FROM usertable WHERE email_username = '%{user|username}' iterate_query = SELECT email_username AS username, domain FROM usertable } passdb sql { default_password_scheme = BLF-CRYPT passdb_sql_query = SELECT password FROM passwordtable WHERE ID IN (SELECT ID FROM usertable WHERE email_username='%{user|username}') }
Cheers
Cam
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
The URL in the first reply. That and copilot got me fixed. This was way hard. And mis info everywhere. On Dec 27, 2025 11:38 AM, Steve Litt via dovecot <dovecot@dovecot.org> wrote:
Cam Ellison via dovecot said on Fri, 26 Dec 2025 20:31:57 -0800
>On 2025-12-26 16:42, John Hill via dovecot wrote:
>>
>> 2. Recreate it cleanly:
>> cat > /etc/dovecot/conf.d/auth-sql.conf.ext <<'EOF'
>> passdb {
>> driver = sql
>> args = /etc/dovecot/sql.conf.ext
>> }
>>
>> userdb {
>> driver = sql
>> args = /etc/dovecot/sql.conf.ext
>> }
>>
>This is your problem. What you have above is suitable up to and
>including version 2.3. It no longer works.
>
>Look at the instructions for converting 2.3 to 2.4 on the Dovecot
>website.
Which exact URL? There are several pages on this subject, and they tend
to contradict each other.
Thanks,
SteveT
Steve Litt
http://444domains.com
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-leave@dovecot.org
participants (4)
-
Aki Tuomi
-
Cam Ellison
-
John Hill
-
Steve Litt