Postfix, Dovecot, CyrusSASLを用いたバーチャルドメイン環境で簡単にユーザーの追加、削除、リスト表示ができるスクリプトを書きました。
GitHubで公開しています。
GNU Bash, sed等に依存しているので、おそらくBSD等ではそのままでは動かないと思います。その他環境合わせて適宜スクリプトを変更して使ってください。
前提
以下の環境を前提としています。(合わない場合は、適宜スクリプトを変更する必要が有ります。)
- バーチャルドメイン環境であること。(デフォルトでは/var/mail/vhosts/DOMAIN/USER/以下にMaildir形式でメールを保存している環境であること)
- Postfix で
virtual_mailbox_maps = hash:/etc/postfix/vmailboxとしていること。 - CyrusSASLを使用し、
pwcheck_method = auxpropとして、sasldbとして/etc/sasldb2を使用していること。 - Dovecotを使用し、conf.d/10-auth.conf内でauth-passwdfile.conf.extを有効にした上で、その中で
driver = passwd-fileとし、またパスワードファイルとして/etc/dovecot/usersを使用していること。
仕組み
-
sasldblistusers2コマンドの結果、/etc/postfix/vmailbox,/etc/dovecot/usersを参照し、それぞれに登録されているメールアドレスが同一かを調べます。(異なっている場合はエラー) - ユーザーの追加、削除の際は、
saslpasswd2コマンドを使用し、また/etc/postfix/vmailbox,/etc/dovecot/usersの内容を変更します。(/etc/dovecot/usersに登録するパスワードのハッシュを求めるためにdoveadm pwコマンドを使用します)
基本的に上記以外の操作(バーチャルドメインの設定を含む)は手動で行う必要があります。