Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> バーチャルメールボックス

メールサーバの設定(バーチャルメールボックス編)

ここでは、postfixとdovecotを使用して、バーチャルメールボックスを使用したメールサーバを構築する方法を示す。

バーチャルメールボックスは主に、バーチャルドメインを利用して、一つのサーバで複数のドメインを使っている場合などに便利である。例えば、info@example.comとinfo@example.netのような同じユーザー名で、違うドメインの場合でも、バーチャルメールボックスを使えば簡単にユーザーを追加することができる。

ここでは、バーチャルメールボックスに関する設定のみ記述するので、一般的な設定やバックアップサーバの作成など他の話題に関しては、メールサーバの設定を参照のこと。

なお、すべてのドメインでユーザー名が重複しない場合は、バーチャルメールボックスを使わなくても、mydestinationにドメイン名を追加してやるだけでよい。

mydestination = $myhostname, localhost.$mydomain, localhost, example.com

Postfixの設定

バーチャルメールボックスを使えるようにする

バーチャルメールボックスを使用するには、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形式への移行

もし今まで、Mailbox形式で運用してきたのであれば、既存のメールをMaildir形式に変更する必要があるもしれない。

mb2mdを利用するのが簡単。yumではインストールできないので、

http://batleth.sapienti-sat.org/projects/mb2md/

よりダウンロードしてくる。

SMTP認証について

もし、メールクライアントが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

Dovecotの設定

バーチャルドメインでのDovecotの設定

バーチャルドメインなどを使ってメールボックスの場所が、通常と異なっている場合は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

ドメイン名やユーザーの数が多くなってきた場合、LDAPのようなもので管理するのが便利である。
まず、postfixとLDAPを連携する方法であるが、postfixがLDAPをサポートしているか下記のコマンドを打ち込んで調べる。

# postconf -m
btree
cidr
environ
hash
ldap
nis
pcre
proxy
regexp
sdbm
static
tcp
unix

このように、出力の中にldapが含まれていれば、サポートされている。

DovecotとLDAP

つぎに、DovecotとLDAPを連携する方法であるが、

関連項目

リンク

最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて17.04、18.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2014 Chikuma Engineering Co., Ltd. All Rights Reserved.