バーチャルアカウントの設定
 

概要:

 メールだけを使用するユーザーに対してシステムカウントの登録をするのは管理が大変ですし、好ましくありません。また異なるバーチャルドメインに対して異なるカウントID(例えばinfo@example1.comとinfo@example2.com)を登録することができません。
Postfix virtualメールボックス配送エージェントを使うと、すべてのメール受信ユーザーにバーチャルメールボックスを 持たせることができます。
 設定を簡単にできるようメールを受信するシステムアカウントを1つにして、その管理の元に各バーチャルアカウントを設定して、メールを送配信します。
システム内で送受信されるメールを外部から受信するためには次章のメール転送の設定が必要です。

前提:

1.バーチャルメールボックス

1.1 PostfixとDovecotの関係

 PostfixとDovecotは元々異なるシステムのため連携するために幾つかの注意点があります。それはパスワードとメールボックスに関するものです。ここではパスワードについては前章にあるようにDovecotのSMTP-Authを使用して共通化しているので問題ありません。
 メールボックスについてはPostfixで配信されたメールボックスをDovecotで受信する必要があります。メールの配信・受信には場所とアクセス権の情報が必要です。これらの情報は共通化されないので、PostfixとDovecotの両方に一致するように設定します。設定方法はシステムアカウントへのメールの運用方法により設定が異なります。
 システムアカウントのメールとバーチャルアカウントのメールをそのまま別々のメールアカウント(別々のメールボックス)として運用するのであれば問題ないのですが、同じメールアカウントとして運用する場合は次章のメール転送の設定が必要です。特にメールボックスをシステムアカウントのメールボックスで運用するには設定が少し複雑になります。

1.2 バーチャルメールボックスの作成

 個別のシステムアカウントは作らないので、メールを読み書きする共通のシステムアカウントが必要となります。ここではuid=10000 gid=10000 アカウント名=vmailとしています。

# groupadd -g 10000 vmail

# useradd -u 10000 -g 10000 -d /var/spool/vmail -r -s /sbin/nologin vmail

# mkdir /var/spool/vmail

# chown vmail. /var/spool/vmail

# chmod 700 /var/spool/vmail

SElinuxをOnにしている場合は、作成したディレクトリーにファイルタイプを設定します。SELinuxを参照

2.Postfix

2.1 main.cf

# vi /etc/postfix/main.cf
     :
  (前略)
     :
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  ↓ $mydomainを外します。
mydestination = $myhostname, localhost.$mydomain, localhost
     :
  (中略)
     :
以下を追加します。
### VIRTUAL ###
virtual_mailbox_domains = example.com example.net sub.example.net
# バーチャルドメインは上記のように空白またはカンマで区切って列挙するか下記のようにファイルを指定します。
virtual_mailbox_domains = /etc/postfix/virtual_domains
virtual_mailbox_base = /var/spool/vmail   ← 上記で作成したディレクトリー
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:10000   ← 上記で作成したアカウントのuid
virtual_gid_maps = static:10000   ← 上記で作成したアカウントのgid

2.2 バーチャルドメインの登録(ファイルで設定する場合)

上記main.cfでバーチャルドメインをファイルで指定した場合そのファイルを作成・編集します。

# vi /etc/postfix/virtual_domains

ここでは以下の3ドメインを設定します。 システムアカウントもバーチャルメールボックスを使用するため本来のドメインも登録します。

example.com   ← 本来のドメイン
example.net   ← バーチャルドメイン
sub.example.net   ← サブバーチャルドメイン

2.3 バーチャルメールボックス

Postfix用に各メールアドレスに対してメールボックスのディレクトリーを設定します。dovecotのauth-passwdfile.conf.extファイル中userdbで設定するargs = uid=vmail gid=vmail home=/var/spool/vmail/%d/%nと一致させます。%dはメールアドレスのドメイン部分(@の後)、%nはアカウント部分(@の前)です。
ディレクトリーの最後の / が必要です。

# vi /etc/postfix/vmailbox
外部から来たシステムアカウント宛メールの設定です。
admin@example.com example.com/admin/Maildir/
centos@example.com example.com/centos/Maildir/
メールアカウントuserとinfoを別々のメールとする場合です
user@example.net example.net/user/Maildir/
info@example.net example.net/info/Maildir/
メールアカウントuserとinfoをアカウントuserのメールとする場合です
user@sub.example.net sub.example.net/user/Maildir/
info@sub.example.net sub.example.net/user/Maildir/

バーチャルメールボックスのPostfix検索テーブルを作成・更新します。

# postmap vmailbox
# ls -l vmailbox.db      ← DBファイルが作成/更新されたことを確認

2.4 メールボックスのディレクトリー作成

上記の各ユーザーのメールボックスのディレクトリーを事前に作成します。下記はadminの例です。
メールを受信した場合Postfixが自動的にディレクトリーを作成してくれますが、Dovecotはディレクトリーを作成してくれません。そのため、メールが無い場合にメールクライアントを起動した時にエラーになるのを避けるためです。代わりにユーザーを作成した時に「ようこそ」メールのようなものを送信してもいいかもしれません。

# mkdir -p /var/spool/vmail/example.com/admin/Maildir/{new,cur,tmp}
# chmod -R vmail. /var/spool/vmail/example.com/admin

2.5 Postfix再読込み

# service postfix reload ← Postfix再読込み
postfix を再読み込み中:                                    [  OK  ]

3.Dovecot

前章の'DovecotによるSASL化'からバーチャルアカウント用の変更点について記述します。

3.1 auth-passwdfile.conf.extの設定

Dovecot用にメールボックスのディレクトリーを設定します。
パスワードを設定するファイルは/etc/dovecot/passwdのままですが、メールボックスの場所が各アカウントのディレクトリー下から/var/spool/vmailディレクトリー下に変わります。パスワードファイルで個別に設定することもできますが、簡単にするためにauth-passwdfile.conf.extで一括で登録します。

# cd /etc/dovecot/conf.d
# vi auth-passwdfile.conf.ext
# Authentication for passwd-file users. Included from auth.conf.
#
# passwd-like file with specified location.
# <doc/wiki/AuthDatabase.PasswdFile.txt>

passdb {
  driver = passwd-file
#  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = /etc/dovecot/passwd
}

userdb {
#  driver = passwd-file                ← コメントアウトする。
#  args = username_format=%u /etc/dovecot/users
#  args = /etc/dovecot/passwd          ← コメントアウトする。
  driver = static                      ← 追加する。
  args = uid=vmail gid=vmail home=/var/spool/vmail/%d/%n       ← 追加する。
}

上記でuid、gidには先ほど作成したシステムアカウントの情報を設定します。%dはメールアドレスのドメイン部分(@の後)、%nはアカウント部分(@の前)です。

3.2 メールアカウント設定変更

パスワードファイルにメールアカウント(メールアドレス)とパスワードを登録します。

  1. ) パスワードの生成
    パスワードはdoveadmコマンドで生成します。
    # doveadm pw -s HMAC-MD5
    Enter new password:      ← パスワードを入力
    Retype new password:     ← パスワードを確認のため再入力
    {HMAC-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b
    
  2. ) パスワードファイル設定
    パスワードファイルを設定します。バーチャルアカウントの場合は、メールアドレスに対して上記で生成したパスワードを{HMAC-MD5}の部分を含めて記述します。uid、gid、Homeディレクトリーは不要です。
    # vi /etc/dovecot/passwd
    
    admin@example.com:{HMAC-MD5}cb1dbd769e9bb1d42a1ba59de16a961edad51e4b2aef57c9ada8035d6547cce6
    centos@example.com:{HMAC-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b
    user@example.net:{HMAC-MD5}b6417c4a20462e8f452cb1dbd7a4fb152ba7c64b056547cce6adfd06de78fa10
    info@example.net:{HMAC-MD5}c3367b2f3f41201978bd059de16a961edad51e68c51352546d72fa8b2cafd03a
    user@sub.example.net:{HMAC-MD5}8135099db2bfc9d0e7a8ac1aac59d453232fef93cb636d15e54a360816bc7a15
    
  3. ) Dovecot再読込み
    # service dovecot reload ← Dovecot再読込み
    Dovecot Imap を再読み込み中:                               [  OK  ]
    

4.確認

 メールクライアントに各バーチャルアカウントを設定し、バーチャルアカウント間でメールの送受信テストをします。

 
 

最終更新のRSS
Last-modified: 2014-12-14 (日) 16:46:05 (3412d)