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

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

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

ここでは、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を連携する方法であるが、

関連項目

リンク


Google Bookmarksに追加 Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加
本文中の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と表示しています。Ubuntuは、必要に応じて9.04、10.04のようにバージョン番号をつけて区別しています。MandrivaはMandriva Linuxを表します。

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