Dovecot(2.4) を MariaDB と使用する
ココで設定して Dovecot を運用していたのだが、Fedora43 では Dovecot 2.4.1 となり、設定ファイルが大幅に変更された。その結果、起動しなくなってしまった。
そこで今回は、変更点などを中心に説明していこうと思う。
なお、Dovecot 2.4 の設定仕様は「Configuration Overview」にある。
「/etc/dovecot/conf.d/10-auth.conf」の変更点
disable_plaintext_auth は無くなったので、コメントアウトする。
#disable_plaintext_auth = no
「/etc/dovecot/conf.d/auth-sql.conf.ext」の変更
※ 中身は全て書き直した。参考はコチラ
sql_driver = mysql
# The mysqld.sock socket may be in different locations in different systems.
mysql /var/lib/mysql/mysql.sock {
user = データベース接続ユーザー
password = データベース接続パスワード
dbname = データベース名
}
passdb_use_worker = yes
passdb sql {
passdb_default_password_scheme = PLAIN
#query = SELECT userid AS username, domain, CONCAT('plain:', password) AS password FROM users WHERE userid = '%n' AND domain = '%d'
#query = SELECT userid AS username, domain, password FROM users WHERE userid = '%n' AND domain = '%d'
#query = SELECT userid AS username, domain, password FROM users WHERE auth_user = '%{user}' AND domain = '%{domain}'
query = SELECT userid AS username, domain, password FROM users WHERE auth_user = '%{user}'
}
userdb_use_worker = yes
userdb sql {
#query = SELECT CONCAT( '/home/vmail/dovecot/', domain, '/', userid ) AS home, 10000 AS uid, 10000 AS gid FROM users WHERE userid = '%n' AND domain = '%d'
#query = SELECT CONCAT( '/home/vmail/dovecot/', domain, '/', userid ) AS home, 10000 AS uid, 10000 AS gid FROM users WHERE auth_user = '%{user}' AND domain = '%{domain}'
query = SELECT CONCAT( '/home/vmail/dovecot/', domain, '/', userid ) AS home, 10000 AS uid, 10000 AS gid FROM users WHERE auth_user = '%{user}'
# For using doveadm -A:
iterate_query = SELECT userid as username, domain FROM users
}
※ 例えばユーザー名を「hoge@example.com」にした場合、%{user} が「hoge@example.com」になり、%{domain} には何も入らなかった。バグだろうか?(dovecot-mysql 2.4.1)
※ auth_user フィールドにはユーザー情報が「hoge@example.com」の形式で格納されています。
「/etc/dovecot/conf.d/10-mail.conf」の変更点
#mail_home = /home/vmail/dovecot/%d/%n
#mail_location = maildir:~/mail
mail_home = /home/vmail/dovecot/%{domain}/%{user}
mail_driver = maildir
mail_path = ~/mail
※ 「mail_location」は無くなった。代わりに「mail_driver」と「mail_path」が出来た。
再起動
# systemctl restart dovecot
テスト
※ ユーザー名を「hoge@example.com」にしてある場合のテスト。例えばログインユーザー名を「hoge」にしてある場合はこうはならないので注意。
# doveadm auth test hoge@example.com PASSWORD
passdb: hoge@example.com auth succeeded
extra fields:
user=hoge@example.com
ログの確認
# journalctl -u dovecot -f
