Geek-Side

このエントリーをはてなブックマークに追加  

2005/03/06

Postfix Courier-Imap バーチャルドメインの設定

1台のマシンで複数のドメインを扱う方法を解説します。
ここでは、tma@gside.org と言うアドレスと、tma@example.com というドメインの 異なる2つのアドレスを,1台のPostfixで扱う方法を例にとります。

前提としては,gside.orgの設定は完了しており,追加する ドメインをexample.comとします。
Postfixの基本的な設定については、
Postfixのインストールと基本設定
をご覧ください。

ドメインを共有

異なるドメインを共有する形で扱います。
この場合,異なるドメインでもユーザー名が同じメールは,同一のユーザーのメールボックスに配送されます。
例として,tma@gside.orgと,tma@example.com宛てへのメールが送られてきた場合, これらのメールは同じユーザー tma のメールボックスに配送されます。

設定方法は /etc/postfix/main.cfを編集します。

#mydestinationに配送を追加したいドメイン名をカンマで区切って指定します。
mydestination = $myhostname,localhost.$mydomain,example.com

設定の変更を反映させるため、postfixを再起動します。

#main.cfの変更を反映させるため、postfixを再起動します。
# /etc/init.d/postfix restart

ドメインを別々で設定する

tma@gside.orgと,tma@example.com宛てへのメールを別々のユーザーに配送するには バーチャルエイリアスを用います。
/etc/postfix/main.cf の設定を行います。
#配送を追加したいドメイン名を指定します。
virtual_alias_domains = example.com
#バーチャルドメイン用のエイリアステーブルを指定します。
virtual_alias_maps = hash:/etc/postfix/virtual

virtual_alias_domains で指定したドメインは mydestination には指定しないよう注意してください。

次に virtual_alias_maps で指定したエイリアスファイルを作成します。
このファイルにはメールアドレスと配送先のユーザー名の対応をリストします。

#tma@gside.org宛てのメールは,ユーザー tma に配送されます。
tma@gside.org tma

#tma@example.com宛てのメールは,ユーザー hoge に配送されます。
tma@example.com hoge

上記例では tma@gside.org に送られたメールは tma ユーザーのメールボックスへ、 tma@example.com に送られたメールは hoge ユーザーのメールボックスへ配送されます。

設定の変更を反映させるため、以下のコマンドを実行します。

#virtualファイルの変更を反映します。
# postmap /etc/postfix/virtual

#main.cfの変更を反映させるため、postfixを再起動します。
# /etc/init.d/postfix restart

バーチャルMailboxでドメインを別々に設定する

メールを使用するユーザーが増えると、そのユーザーのためにOSのアカウントを作成する のは,セキュリティ上あまり良くありません。
バーチャルMailBox機能を使うと,OSのアカウントを増やすことなく,メールのみを使用するユーザーを 増やす事ができます。

例として,tma@gside.orgとhoge@example.comの二つのアドレスをバーチャルMailBoxで管理 する方法を示します。

Postfixの設定

/etc/postfix/main.cfを編集します。
# mydestinationには何も指定しないようにします。(virtual_mailbox_domainsに指定します。)
mydestination =

# バーチャルメールボックスを利用するドメインを指定

# myhostname には gside.orgが指定されているものとします。
virtual_mailbox_domains = $myhostname,example.com

# 配送エージェントを指定します。

virtual_transport = virtual

# バーチャルメールボックスの場所を指定

# バーチャルメールボックスはこのフォルダ配下になります。

virtual_mailbox_base = /home/takeshi/mail

# メールアドレスとそれに対する配送先を記したテーブル

virtual_mailbox_maps = hash:/etc/postfix/vmailbox

# virtual_uid_mapsから受け取るuidの最小値

virtual_minimum_uid = 100

# 配送エージェントがメールボックスの書き込みに使用するユーザーID

# 例では5000を固定で指定しています。
virtual_uid_maps = static:5000

# 配送エージェントがメールボックスの書き込みに使用するグループID

# 例では5000を固定で指定しています。
virtual_gid_maps = static:5000
virtual_mailbox_domainsに指定したドメインはmydestination,virtual_alias_domains には指定しないよう注意してください。

/etc/postfix/vmailboxを編集します。

#あて先と配送先を指定
#例ではtma@gside.org宛てのメールは/home/mail/tma_gside/.maildir に配送されます。
tma@gside.org  tma_gside/.maildir/
hoge@example.com  hoge_example/.maildir/

配送先の指定では、最後 / で終わっている点に注意してください。

virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
で指定したuid gid で書き込みができるように /home/mail/tma_gside/.maildir と /home/mail/tma_gside/.maildirを設定します。

#メールボックス用のディレクトリを作成します。
# mkdir -p /home/mail/tma_gside
# mkdir -p /home/mail/hoge_example

#maildirを作成します。

# maildirmake /home/mail/tma_gside/.maildir
# maildirmake /home/mail/hoge_example/.maildir

#maildirの所有権を変更します。

# chown -R 5000:5000 /home/mail/tma_gside/.maildir
# chown -R 5000:5000 /home/mail/hoge_example/.maildir

設定の変更を反映させるため、以下のコマンドを実行します。

#vmailboxファイルの変更を反映します。
# postmap /etc/postfix/vmailbox

#main.cfの変更を反映させるため、postfixを再起動します。
# /etc/init.d/postfix restart

Courier-Imapの設定

Postfixの設定が終われば、次はメールクライアントでメールを閲覧できるように、Courier-Imapを 設定する必要があります。
例ではバーチャルメールボックスで設定したtma@gside.orgとhoge@example.comの二つのアドレスについて、 Courier-Imapの設定を行います。

各メールアドレス毎に、メールボックスのパスを指定するために、userdbコマンドを実行します。
#ユーザーアカウントとメールボックスを設定します。
# userdb tma@gside.org set mail= /home/mail/tma_gside/.maildir home=/home/mail uid=5000 gid=5000
# userdb hoge@example.com set mail= /home/mail/hoge_example/.maildir home=/home/mail uid=5000 gid=5000

各メールアドレス毎にパスワードを設定します。CRAM-MD5で認証を行う場合は、以下の様にします。
コマンド実行後にパスワードの入力を2回求められるので、入力してください。
# userdbpw -hmac-md5 | userdb tma@gside.org set hmac-md5pw
# userdbpw -hmac-md5 | userdb hoge@example.com set hmac-md5pw

CRAM-MD5で認証を行わない場合は、以下の様にします。
# userdbpw | userdb tma@gside.org set imappw
# userdbpw | userdb hoge@example.com set imappw

データベースを作成します。
# makeuserdb

メールクライアントとしてThunderbirdを例に取ると、以下のような設定で接続を確認できます。
Thunderbird設定
Index
Postfixのインストールと基本設定
PostfixへのSMTP-AUTHの導入
Courier-Imapのインストールと基本設定
Postfixのウイルス対策(Antivir MailGateの導入)
Postfix Courier-Imap バーチャルドメインの設定

このエントリーをはてなブックマークに追加   ツイート