🦔

dovecotでメールのパスワードとログインのパスワードを分ける

2024/07/10に公開

パスワードをログインパスワードと分けたい

POP/IMAPサーバーにログインするためのパスワードは、通常はログインパスワードと一緒になります。
ログインパスワードと分けたいという要望は高いと思います。

方法は色々あるようですが、一番簡単なファイルによる手作業での更新をします。
以下の作業は、debian 12での作業記録です。

/etc/dovecot/conf.d/10-auth.conf

以下をコメントアウトします。(このシステムを使わない)

# !include auth-system.conf.ext

以下を追記します。(パスワードファイルを使う)

userdb {
  driver = passwd
}
passdb {
  driver = passwd-file
  args = /etc/dovecot/users
}

/etc/dovecot/conf.d/10-mail.conf

以下を追記します。

# dovecotの指定が必要
mail_uid = dovecot
mail_gid = dovecot
# このuid,gid以下のidのユーザーはアクセスできない
first_valid_uid = 106
first_valid_gid = 113

/etc/dovecot/users

ファイルを新規作成し、ファイルのオーナーとパーミッションを変更

sudo touch /etc/dovecot/users
sudo chown dovecot:dovecot /etc/dovecot/users
sudo chmod 0640 /etc/dovecot/users

手作業でパスワードを追記する。フォーマットは次の通り。
ユーザー名:{パスワードの種類}パスワード:ホームディレクトリ

user_name:{PLAIN}password:/home/user_name

プレーンテキストで保存するのが嫌な場合は、次のコマンドでパスワードをハッシュ化できる。

doveadm pw -s SHA512-CRYPT

上記コマンドの結果を下のように記入する。

user_name:{SHA512-CRYPT}$6$PV19aOUUAA9D17IX$CdWRAGsL9s9XdagYjQ.jjBbeu3HKgRenEBl3ACdxK6XJgU0tOwUuVtOoFejAxWewijbxBFt.f4t4I28wChhQM/:/home/user_name

dovecotを再起動する

sudo systemctl restart dovecot

起動しているか確認

sudo systemctl status dovecot

検証について

設定が正しくても、メールクライアントの挙動でアクセスできないことは多い。[1]
設定が正しいかは、telnetで確認した方が良い。
telnetでアクセスできれば、他の要素でメールクライアントが使えないだけである。
https://zenn.dev/tomoakinagahara/articles/0c13e08d071093

脚注
  1. SMTPが正しくないとか、暗号化されてないとか。どちらもPOP3の設定と直接関係がない。ThunderBirdとApple Mailでも挙動が違う。 ↩︎

Discussion