複数のメールドメインを運用できるバーチャルメールボックス

ALL
スポンサーリンク

下記の記事でpostfix でのメールサーバの設定を説明しました。
ここで設定したメールドメイン以外に、同じサーバで他にも dog@animal.jp , grape@fruit.jp といった異なるドメイン(メールアドレスの@より右側)のメールを運用したい場合は、追加の設定が必要です。

CentOS6でのメールサーバの設定(postfixその1)
CentOS6でのメールサーバの設定(postfixその2)
CentOS6でのメールサーバの設定(dovecot)

1つのサーバで複数ドメインのサービスを運用するのがバーチャルドメインで、バーチャルドメイン用のメールの運用に必要な設定がバーチャルメールボックスの設定です。

例えば、既に box@object.jp をPostfix の設定で運用している状態で、バーチャルメールボックスの設定を行うことで、追加で dog@animal.jp , grape@fruit.jp といった異なるドメインのメール運用が可能になります。

以降では、バーチャルメールボックスの為の追加の設定を説明します。

運用するバーチャルドメイン用メールについて

各メールアカウントのメール保存先ディレクトリは、以下とします。
またメール保存形式は、Maildir形式とします。

/home/mailuser/メールドメイン名/メールアカウント名/Maildir/

各メールアカウントに関する設定ファイルの場所は以下とします。
メールアカウント追加の度に、以下のファイルへの設定追加が必要となります。
なお、メールアカウント追加の手順については、本記事の末尾の方で説明しています。

メールアカウント情報(パスワード・メール保存先ディレクトリ)の記述ファイル

/home/mail/secret/dovecot-passwd

各メールアカウントのメール保存先ディレクトリの設定ファイル

/etc/postfix/vmailbox

.forward や /etc/aliases 相当の、エイリアス(別名)や転送設定の記述ファイル

/etc/postfix/virtual

上記の仕様に基づき、設定を以降で行います。

設定

バーチャルメールボックスの設定を行います。
以下、rootで作業します。

必要なパッケージをインストールします。

yum install cyrus-sasl-md5

メールアカウント情報(パスワード・メール保存先)の記述ファイルを用意します。

mkdir -p /home/mail/secret
touch /home/mail/secret/dovecot-passwd

各メールアカウントのメール保存先ディレクトリの設定ファイルを用意します。

touch /etc/postfix/vmailbox

.forward や /etc/aliases 相当の、エイリアス(別名)や転送設定の記述ファイルを用意します。

touch /etc/postfix/virtual

バーチャルメールボックス用のユーザを作成します。
GID,UIDを指定してユーザを作成します。
ここで指定したGID(=20000)とUID(=20000)は、後ほど、設定ファイルの中で記述します。

/usr/sbin/groupadd -g 20000 mailuser
/usr/sbin/useradd -g 20000 -u 20000 mailuser
chsh -s /sbin/nologin mailuser

メールドメイン毎のメールの保存先ディレクトリを用意します。
ディレクトリ名は /home/mailuser/メールドメイン名 です。
既に @object.jp をPostfix の設定で運用している状態で、追加で @animal.jp , @fruit.jp を運用する場合は、 以下のようにディレクトリを用意します。

mkdir -p /home/mailuser/animal.jp
mkdir -p /home/mailuser/fruit.jp

次にpostfix のmain.cf の設定を行います。

/etc/postfix/main.cf

virtual_mailbox_base = /home/mailuser
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_mailbox_domains = dog.test1.jp , orange.fruit.jp
virtual_minimum_uid = 20000
virtual_uid_maps = static:20000
virtual_gid_maps = static:20000
virtual_mailbox_limit=0
virtual_alias_maps = hash:/etc/postfix/virtual

virtual_mailbox_base = /home/mailuser

メールアカウントのメール保存先のベースディレクトリを指定します。
ベースディレクトリについては、次の virtual_mailbox_maps を参照して下さい。

virtual_mailbox_maps = hash:/etc/postfix/vmailbox

メールアカウントのメール保存先を設定しているファイルのパスを指定します。
このファイルの内容は、

メールアドレス メール保存先

の書式で記述します。
メール保存先は、先の virtual_mailbox_baseオプションで指定したベースディレクトリからの相対パスを指定します。

例えば、/etc/postfix/vmailbox の内容を下記のようにすると、dog@animal.jp 宛てのメールは、/home/mailuser/animal.jp/dog/Maildir/ に保存されます。

dog@animal.jp animal.jp/dog/Maildir/

virtual_mailbox_domains = animal.jp , fruit.jp

バーチャルメールボックスで運用するメールドメイン(メールアドレスの@より右側)を指定します。
既に @object.jp をPostfix の設定で運用している状態で、追加で @animal.jp , @fruit.jp を運用する場合は、 animal.jp , fruit.jp と記述します。

virtual_minimum_uid = 20000
virtual_uid_maps = static:20000
virtual_gid_maps = static:20000

バーチャルメールボックス用のユーザのGID,UIDを指定します。

virtual_mailbox_limit=0

ユーザのメールボックスの最大容量をバイト単位で指定します。
0を指定すると、無制限になります。
Maildir形式では、この値は保存できる1メールのサイズです。
メールのサイズには、メール本文以外のメールヘッダも含みます。

virtual_alias_maps = hash:/etc/postfix/virtual

バーチャルドメインのユーザは、メール転送のための .forward や /etc/aliases が利用出来ません。
代わりに、ここでメール転送のための設定を行います。
メール転送用のエイリアス情報が記述されたファイルのパスを指定します。

ファイルは /etc/aliases の書式と同じで、

転送元アドレス 転送先アドレス

となります。
転送を行わない場合は、ファイルの中身は空にします。

次にメールアカウントのパスワードやメール保存先を記述したファイルのパスを指定します。

/etc/dovecot/conf.d/auth-passwdfile.conf.ext

passdb {
  driver = passwd-file
  args = /home/mail/secret/dovecot-passwd
}
userdb {
  driver = passwd-file
  args = /home/mail/secret/dovecot-passwd
}

args = で指定するファイルの書式は次のものです。

メールアドレス:パスワード:20000:20000:::::Maildir:メール保存先ディレクトリの上位ディレクトリ名

パスワード の箇所は、次のコマンド実行の表示結果を記述します。
設定したいパスワードを入力し、表示されたものを {CRAM-MD5} から含めて、パスワード の箇所に記述して下さい。

doveadm pw -s CRAM-MD5

例えば、下記のように記述します。
下記例では、dog@animal.jp 用の設定で、メール保存先ディレクトリの上位ディレクトリ は /home/mailuser/animal.jp/dog(=メール保存先は/home/mailuser/animal.jp/dog/Maildir)となります。

/home/mail/secret/dovecot-passwd

dog@animal.jp:{CRAM-MD5}cd43fafc9fd1592f447d593588305087ad6e9eba4d660b13b4043ab60313dd58:20000:20000:::::Maildir:/home/mailuser/animal.jp/dog

設定ファイルの更新を行います。

postmap /etc/postfix/vmailbox
postmap /etc/postfix/virtual

必要なサービスの設定を行い、最後に Postfix に反映します。

chkconfig saslauthd on
/etc/init.d/postfix reload

以上で必要な設定は完了です。

メールアカウントの設定

メールアカウントの設定を行います。
ここでの設定は、メールアカウント追加の際にも行ってください。

メール保存先ディレクトリの用意

メール保存先ディレクトリを用意します。
保存先ディレクトリは、/home/mailuser/メールドメイン名/メールアカウント名/Maildir/ です。
例えば、orange@fruit.jp の場合は以下のように作成します。

mkdir -p /home/mailuser/fruit.jp/orange/Maildir/

メールアカウント情報(パスワード・メール保存先ディレクトリ)の記述

/home/mail/secret/dovecot-passwd に次の書式で行を追加します。

メールアドレス:パスワード:20000:20000:::::Maildir:メール保存先ディレクトリの上位ディレクトリ名

パスワード の箇所は、次のコマンド実行の表示結果を記述します。
設定したいパスワードを入力し、表示されたものを {CRAM-MD5} から含めて、パスワード の箇所に記述して下さい。

doveadm pw -s CRAM-MD5

例えば、下記のように記述します。

dog@animal.jp:{CRAM-MD5}cd43fafc9fd1592f447d593588305087ad6e9eba4d660b13b4043ab60313dd58:20000:20000:::::Maildir:/home/mailuser/animal.jp/dog

各メールアカウントのメール保存先ディレクトリの記述

/etc/postfix/vmailbox に次の書式で行を追加します。

メールアドレス メール保存先

メール保存先は、先の virtual_mailbox_baseオプションで指定したベースディレクトリからの相対パスを指定します。

例えば dog@animal.jp の場合は、次のように記述します。

dog@animal.jp animal.jp/dog/Maildir/

エイリアス(別名)や転送設定の記述ファイルの記述

/etc/postfix/virtual に次の書式で行を追加します。

転送元アドレス 転送先アドレス

例えば dog@animal.jp に来たメールを tuna@fish.jp に転送する場合は、次のように記述します。

dog@animal.jp tuna@fish.jp

以上でバーチャルメールボックスの設定は完了です。

参考

[Linux] CentOS6のDovecot(バージョン2)でPostfixのバーチャルメールボックスにアクセスできるようにする
メールサーバの設定(バーチャルメールボックス編):tech.ckme.co.jp
Postfix(バーチャルドメイン)の設定の巻 – PukiWiki
Postfix チュートリアル – バーチャルドメイン
Postfix設定パラメータ
UserDatabase/ExtraFields – Dovecot Wiki

コメント