目次 >> バーチャルメールボックス
ここでは、postfixとdovecotを使用して、バーチャルメールボックスを使用したメールサーバを構築する方法を示す。
バーチャルメールボックスは主に、バーチャルドメインを利用して、一つのサーバで複数のドメインを使っている場合などに便利である。例えば、info@example.comとinfo@example.netのような同じユーザー名で、違うドメインの場合でも、バーチャルメールボックスを使えば簡単にユーザーを追加することができる。
ここでは、バーチャルメールボックスに関する設定のみ記述するので、一般的な設定やバックアップサーバの作成など他の話題に関しては、メールサーバの設定を参照のこと。
なお、すべてのドメインでユーザー名が重複しない場合は、バーチャルメールボックスを使わなくても、mydestinationにドメイン名を追加してやるだけでよい。
mydestination = $myhostname, localhost.$mydomain, localhost, example.com
バーチャルメールボックスを使用するには、main.cfに下記の設定を追加する。
virtual_mailbox_domains = $myhostname, localhost.$mydomain $mydomain, example.com virtual_mailbox_base = /var/spool/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_domainsには、バーチャルメールボックスで使用したいドメイン名を追加していく。この際に、mydestinationという項目に、ここで追加したドメインと同じものがないようにすること。さもないと、そのドメイン宛のメールはUnixアカウント宛に配送されてしまう。
virtual_mailbox_baseは、受信したメールがスプールされるディレクトリを指定している。
バーチャルメールボックスのユーザーはUnixアカウントのユーザーとは違うので、別に設定してやる必要がある。
バーチャルメールボックスのユーザーの設定は
/etc/postfix/vmailbox
で行う。このファイルは、テキストファイルで、メールアカウントとスプールディレクトリを並べて書いたものである。具体的には下記のように記述する。
foo@example.com example.com/foo/ hoge@example.com example.com/hoge/ hoge@example.net example.net/hoge/
vmailboxファイルを変更した場合、必ず
# postmap /etc/postfix/vmailbox
でバーチャルメールボックスのデータベースを更新を行う。
以上の設定で、foo@example.com宛のメールは/var/spool/mail/vhosts/example.com/foo/にhoge@example.com宛のメールは/var/spool/mail/vhosts/example.com/hoge/以下にスプールされるようになる。
特定のアドレスに来たメールを別のメールアドレスのメールボックスに入れてしまいたい場合は、/etc/postfix/virtualというファイルに転送元、転送先の順に記入すればよい。転送先は外部のメールアドレス宛でも良い??
foo@example.com boo@example.net
この例では、foo@example.com宛のメールはすべてboo@example.netのメールボックス内に格納されることになる。
もし今まで、Mailbox形式で運用してきたのであれば、既存のメールをMaildir形式に変更する必要があるもしれない。
mb2mdを利用するのが簡単。yumではインストールできないので、
http://batleth.sapienti-sat.org/projects/mb2md/
よりダウンロードしてくる。
もし、メールクライアントがSMTP認証に対応しているなら、POP before SMTPよりもSMTP認証を使うことを勧める。
まず、バーチャルメールボックスを使わない、すなわち、Unixユーザーアカウントのアカウント名およびパスワードでSMTP認証をする場合の設定をした場合、メールクライアントソフトで、Unixユーザーアカウントのアカウント名およびパスワードをSMTP認証の設定欄に設定すれば、利用できる。
しかしながら、この方法では、既存のUnixユーザーアカウントのどれかを使う必要があり、バーチャルメールボックスを利用するユーザーが増えれば増えるほど、Unixユーザーアカウントを作成してやる必要が出てくる。
これでは、バーチャルメールボックスを使う意味が半減してしまう。
Unixユーザーアカウントを使用したくない場合は
/usr/lib/sasl2/smtpd.conf
64ビットOSの場合は
/usr/lib64/sasl2/smtpd.conf
を書き換える。
pwcheck_method: saslauth
を
pwcheck_method: auxprop
に書き換える。この場合はsaslauthdは常時起動している必要はない。
そして、saslpasswd2コマンドによってユーザーを作成しパスワードを設定します。ユーザー及びパスワードのデータベースは通常/etc/sasldb2に作成される。このファイルはpostfixから読み込めるようにしておく必要がある。具体的には、
# saslpasswd2 -u ドメイン名 -c ユーザー名
でユーザーを追加します。
なお、SMTP認証を有効にするには、バーチャルメールボックスを使わない場合と同様、main.cf内でsmtp_sasl_auth_enableをyesにし、smtpd_recipient_restrictionsにpermit_sasl_authenticatedを加える必要がある。
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
古いOutlookなどでは、標準に準拠していないため、下記の設定を行わないとエラーとなる。
broken_sasl_auth_clients = yes
バーチャルドメインなどを使ってメールボックスの場所が、通常と異なっている場合はmail_location(FC4やFC5付属のdovecotではdefault_mail_env
)を変更する。そして、ユーザーアカウントとは違うパスワードを使用するので、
/etc/dovecot-passwd
でパスワードの設定を行う。
パスワードは
$ openssl passwd
Password:
Verifying - Password:
hsC4PsUzaYX9A
で出力される、最後の文字列をdovecot-passwdファイルに書き込む。具体的には下記のようになる。
user1@example.com:hsC4PsUzaYX9A user2@example.com:Uf9N00Aas1pOo user3@example.com:ngoZsFL4b1UbU user4@example.com:yD9GR3NNDMrtI
postfix+dovecotで運用している場合、日常的に行われるユーザーの追加方法は下記のとおり。
まずはpostfixの設定。
/etc/postfix/vmailbox
にユーザー名とディレクトリの場所を追加する。この時ディレクトリは存在しなくても、あとでpostfixが自動的に作成してくれる
# postmap /etc/postfix/vmailbox
でバーチャルメールボックスのデータベースを更新
# /etc/init.d/postfix reload
でpostfixを再起動する。SMTP認証を使っている場合は、
# saslpasswd2 -u ドメイン名 -c ユーザー名
でユーザーを追加する。
つづいてdovecotの設定
$ openssl passwd
コマンドでパスワードを暗号化しておく。その上で
/etc/dovecot-passwd
にユーザー名と暗号化されたパスワードを書き込む
/etc/init.d/dovecot restart
でdovecotを再起動。
ドメイン名やユーザーの数が多くなってきた場合、LDAPのようなもので管理するのが便利である。
まず、postfixとLDAPを連携する方法であるが、postfixがLDAPをサポートしているか下記のコマンドを打ち込んで調べる。
# postconf -m
btree
cidr
environ
hash
ldap
nis
pcre
proxy
regexp
sdbm
static
tcp
unix
このように、出力の中にldapが含まれていれば、サポートされている。
つぎに、DovecotとLDAPを連携する方法であるが、
最終更新日