メールサーバーの構築 : バーチャルドメインの設定
今日は、バーチャルホストの設定を行います。メールをバーチャルホストで管理することで、実際のユーザー構成と関係なくメールアカウントを作成でき、より柔軟な運用が行えます。
hosteddomains にドメインを追加
hosteddomains は "/etc/courier/locals" と同様にローカル配信されるドメインを記述するファイルです。locals に記述されたドメインのメールアドレスはドメイン名部分を除いた上でアカウントが検索されるのに対して、hosteddomains に記述されたドメインではメールアドレスそのままで検索されます。つまり、foo@example.com というメールアドレス宛のメールが送られてきた際、example.com が locals に記述されていた場合は foo というアカウント宛に配信されますが、hosteddomains に記述されていた場合は foo@example.com というアカウントに配信されるわけです。これにより、複数のドメインのメールアカウントを管理を実現しています。
hosteddomains の編集
"/etc/courier/hosteddomains" は標準では作成されていないかもしれません。存在しないときは新しく作成します。今回は、sourcewalker.com というドメインをバーチャルドメインとして扱い、sourcewalker.com のすべてのサブドメインはローカル配信するという変則的な設定をしてみました。 "locals", "hosteddomains" はそれぞれ以下のようになります。
locals
localhost .sourcewalker.com
hosteddomains
sourcewalker.com
編集後に "makealiases" と "makehosteddomains" を忘れずに実行しましょう。
esmtpacceptmailfor.dir の作成
"sourcewalker.com" を "locals" から外してしまったので、このままでは "sourcewalker.com" のアカウント宛てのメールがリレーされません。つまり、外部のメールサーバーからのメールを受けることができません。そこで、"/etc/courier/esmtpacceptmailfor.dir" ディレクトリ以下にリレーを許可するドメインをリストアップしたファイルを作成します。ファイル名はなんでもいいのですが、とりあえず "default" としておきましょう。"locals" と "hosteddomains" の両方の内容を記述します。以下のようにして作成するのが手っ取り早いです。
cd /etc/courier cat locals hosteddomains > smtpacceptmailfor.dir/default makeacceptmailfor
バーチャルアカウント管理用のユーザー・グループを作成
バーチャルアカウントの管理用に、専用のユーザーとグループを作成します。ここでは両方とも sourcewalker という名前で作成します。
groupadd sourcewalker useradd -g sourcewalker -m -s /bin/false sourcewalker
作成したら、それぞれの ID を "/etc/passwd" と "/etc/group" で確認しておきましょう。
バーチャルアカウントを作成
バーチャルドメインのアカウント管理には、いくつかの方法があります。userdb, MySQL, PostgreSQL, LDAP などが標準でサポートされています。ここではもっとも手軽で他にパッケージをインストールする必要がない、userdb を利用することにします。
userdb とは
userdb は Courier 本体に含まれているアカウント管理データベースで、テキストファイルの "/etc/courier/authlib/userdb" を記述し、"makeuserdb" コマンドでバイナリにコンバートするというお馴染みの方法によって作成・管理します。また、補助ユーティリティーとして "userdb" と "userdbpw" の 2 つのコマンドが用意されています。
"/etc/courier/authlib/userdb" の各行は以下のような構成になっています。
アカウント名<tab>フィールド名=値|フィールド名=値...
行頭にその行で記述するアカウントを管理し、ひとつのタブに続けてそのパラメータを上記のフォーマットで記述します。フィールド名には以下のものがあります。
uid | ユーザー ID |
gid | グループ ID |
home | ホームディレクトリ |
メールボックスのパス | |
shell | ログインシェル |
quota | メールボックスの容量制限 |
systempw | パスワード |
pop3pw | POP3 アクセス時のパスワード |
esmtppw | SMTP アクセス時のパスワード |
imappw | IMAP アクセス時のパスワード |
pop3pw, esmtppw, imappw は、省略すれば systempw が使用されます。
バーチャルドメインのアカウントを作成する
それでは、例として foo@sourcewalker.com というアカウントを作成してみましょう。まずはホームディレクトリとメールボックスを作成します。
mkdir /home/sourcewalker/foo maildirmake /home/sourcewalker/foo/.maildir chown -R sourcewalker:sourcewalker /home/sourcewalker/foo
次に、userdb にアカウントを追加します。ユーザーとグループの ID は仮に 100 にしていますが、実際には先ほど作成したアカウント管理用ユーザー・グループの ID を設定してください。
userdb foo@sourcewalker.com set uid=100 gid=100 home=/home/sourcewalker/foo userdbpw -md5 | userdb foo@sourcewalker.com set systempw (パスワードを入力) makeuserdb
これで foo@sourcewalker.com のアカウントが作成されました。
Courier の再起動
ここまで設定したら、念のため Courier を再起動します。どの設定が再起動しないと反映されないかは、私は把握していません(^^;。たいていは起動中でも書き換えられると思います。
/etc/init.d/courier restart
動作チェック
昨日と同様、Thunderbird で動作チェックしてみましょう。アカウントの設定は以下のようにします。受信/送信ユーザ ID にドメイン名部分が必要なことに注意してください。
項目 | 設定内容 |
---|---|
アカウント名 | お好みで |
メールアドレス | userdb に設定したアカウント名 |
受信ユーザ ID | userdb に設定したアカウント名 |
メール受信サーバ名 | メールサーバーの FQDN |
メール受信サーバの種類 | POP3 または IMAP |
送信ユーザ ID | userdb に設定したアカウント名 |
メール送信(SMTP)サーバ名 | メールサーバーの FQDN |
これでメールサーバーの構築はいったん終了にします。メッセージ送受信の暗号化やより高度な IMAP の活用など、やりたいことは山ほどあるので、時間をみて試していこうかと思います。
詳しくはこちらの記事をどうぞ!
この記事にコメントする