2013年8月5日月曜日

dovecot passwd-fileについて

今回は、Dovecotの認証データベースの1つであるpasswd-fileについてです。


特徴は、以下のようになります。

  • /etc/passwdと(ほぼ)同じ書式で記述ができる(⇒ extra_fieldが追加できる
  • 認証で必要な箇所だけ記述すれば利用できる(下記の設定例を参照ください)
  • システムアカウントにもバーチャルアカウントにも利用できる


以下、設定例です。
※評価はCentOS6.4(x86_64) + dovecot 2.2.4で行っています。


システムアカウントで利用する場合

※SSHのパスワードなどと、メールのパスワードを別にしたい場合に有用です

1./etc/dovecot/usersを以下のように作成します。
user01:{PLAIN}password
user02:{PLAIN}password

2.passwd-fileを利用する為の設定

/etc/dovecot/conf.d/10-auth.conf:
※以下の行を有効にします
!include auth-system.conf.ext
!include auth-passwdfile.conf.ext

/etc/dovecot/conf.d/auth-system.conf.ext:
※以下の行だけ有効にします
userdb {
  driver = passwd
}

/etc/dovecot/conf.d/auth-passwdfile.conf.ext:
※以下の行だけ有効にします
passdb {
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
}

最終的な全体設定は以下のようになります。
# doveconf -n
# 2.2.4: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-358.14.1.el6.x86_64 x86_64 CentOS release 6.4 (Final)
disable_plaintext_auth = no
listen = *
mail_debug = yes
mail_location = maildir:~/Maildir
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
protocols = pop3
ssl = no
userdb {
  driver = passwd
}


バーチャルアカウントでの利用する場合

下記ではメールBOXなどの情報をstaticに持たせています


1./etc/dovecot/usersを以下のように作成します。
user01@example.com:{PLAIN}password
user02@example.jp:{PLAIN}password

2. passwd-fileを利用する為の設定

/etc/dovecot/conf.d/10-auth.conf:
※以下の行を有効にします
!include auth-passwdfile.conf.ext
!include auth-static.conf.ext

/etc/dovecot/conf.d/auth-passwdfile.conf.ext:
※以下の行だけ有効にします
passdb {
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
}

/etc/dovecot/conf.d/auth-static.conf.ext:
※以下の行だけ有効にします
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/home/vmail/%d/%u
}
※vmailユーザはあらかじめ以下のように作成しておく必要があります
# groupadd -g 5000 vmail
# useradd -g 5000 -u 5000 -s /sbin/nologin vmail

最終的な全体設定は以下のようになります。
# doveconf -n
# 2.2.4: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-358.14.1.el6.x86_64 x86_64 CentOS release 6.4 (Final)
disable_plaintext_auth = no
listen = *
mail_debug = yes
mail_location = maildir:~/Maildir
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
protocols = pop3
ssl = no
userdb {
  args = uid=vmail gid=vmail home=/home/vmail/%d/%u
  driver = static
}


以上で、/etc/dovecot/usersに記述した2ユーザーでアクセスするとメールBOXは
以下のようになります。

# pwd
/home/vmail
# ls -l
total 8
drwx------ 3 vmail vmail 4096 Aug  5 00:06 example.com/
drwx------ 3 vmail vmail 4096 Aug  5 00:05 example.jp/
# find .
.
./example.jp
./example.jp/user02@example.jp
./example.jp/user02@example.jp/Maildir
./example.jp/user02@example.jp/Maildir/dovecot-uidvalidity.51fe6dce
./example.jp/user02@example.jp/Maildir/maildirfolder
./example.jp/user02@example.jp/Maildir/dovecot.index.log
./example.jp/user02@example.jp/Maildir/dovecot-uidlist
./example.jp/user02@example.jp/Maildir/dovecot-uidvalidity
./example.jp/user02@example.jp/Maildir/tmp
./example.jp/user02@example.jp/Maildir/cur
./example.jp/user02@example.jp/Maildir/new
./.bash_logout
./example.com
./example.com/user01@example.com
./example.com/user01@example.com/Maildir
./example.com/user01@example.com/Maildir/maildirfolder
./example.com/user01@example.com/Maildir/dovecot.index.log
./example.com/user01@example.com/Maildir/dovecot-uidlist
./example.com/user01@example.com/Maildir/dovecot-uidvalidity
./example.com/user01@example.com/Maildir/tmp
./example.com/user01@example.com/Maildir/cur
./example.com/user01@example.com/Maildir/new
./example.com/user01@example.com/Maildir/dovecot-uidvalidity.51fe6de3
./.bash_profile
./.bashrc
#


0 件のコメント:

コメントを投稿