閉じたメール送受信環境を構築する
メール送信クライアントやお問い合わせフォームのウェブアプリケーションの動作テストする場合、メール送受信環境が必要となる。メール送受信環境はどの組織でもあるが、実環境をそのまま利用すると、何かあった場合に問題となる。大抵閉じた環境を構築し、そこで動作テストするわけだが、メール送受信環境の構築は正直めんどくさい・・・あまり構築する機会がないと、設定の仕方も忘れることもしばしば。いい機会なので、構築手順をまとめておく。
環境
送信側ホスト mails から受信側ホスト mailr にメールを送信する環境を作成する。この環境は VMware Server の HostOnly ネットワーク(VMnet1)で構築することで、物理ネットワークから隔離する。Postfix、BIND といったサーバソフトウェアは Ubuntu パッケージからインストールしている。メールの宛先ドメインには example.com*1を利用する。
送信側ホスト(mails)の設定
Postfixの設定
転送を許可するドメインとして、example.com を許可するため、relay_domain に example.com を設定する。
myhostname = mails mydestination = $myhostname, localhost.localdomain, , localhost relay_domain = example.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.219.0/24
OSの設定
example.com の名前解決のため、DNS サーバとして受信側ホスト mailr を指定する。
# vi /etc/resolv.conf(以下のように編集する)
nameserver 192.168.219.110
受信側ホスト(mailr)の設定
BINDの設定
閉じた環境であるため、Root Name Server へのゾーン情報は不要。メール送信先ドメインとして example.comを利用するため、example.com のゾーンファイルを作成する。一時的にパッケージをダウンロードするため、NAT・Bridge 仮想ネットワーク構成に変更することも考慮し、BIND の再帰問い合わせも無効にしておく。
# vi /etc/bind/named.conf(以下の設定を追加) zone "." { type hint; file "/dev/null"; //file "/etc/bind/db.root"; }; zone "example.com." { type master; file "/etc/bind/db.example.com"; }; # vi /etc/bind/named.conf.option(以下の設定を追加) options { allow-recursion { none; }; }; # cp /etc/bind/db.empty /etc/bind/db.example.com # vi /etc/bind/db.example.com(以下のように編集) ; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA ns.example.com. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns.example.com. IN MX 100 mx.example.com. mx IN A 192.168.219.110
Postfixの設定
example.com 宛てのメールを mailr にローカル配送するため、mydestination パラメータに example.com を追記する。Postfix を Ubuntu パッケージからインストールする際に、postfix パッケージの configure にて Internet Site の設定を選択したため、main.cf にはその他の設定もある。
# vi /etc/postfix/main.cf(以下のように編集) myhostname = mailr mydestination = $myhostname, localhost.localdomain, , localhost, example.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.219.0/24
動作確認
■送信側ホスト mails # sendmail -t From: root@mails To: user01@example.com Subject: test This is test. . ■受信側ホスト mailr user01 アカウントでログイン $ mail Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/user01": 1 message 1 new >N 1 root@mails Thu Sep 3 20:54 17/630 test & n(新規メールを読むため、「n」を入力) Message 1: From root@mails Thu Sep 3 20:54:21 2009 X-Original-To: user01@example.com From: root@mails To: user01@example.com Subject: test Date: Thu, 3 Sep 2009 20:54:15 +0900 (JST) This is test.
参考情報
- Postfix Architecture Overview
- Postfix Address Classes
- Postfix Virtual Domain Hosting Howto
- Postfix の仮想ドメインについて説明している。example.com 宛てのメールとホスト名宛てのメールを別のファイルに保存したい場合の設定について説明している。
【収集用メールアドレス】:q1w2e3w2@gmail.com
*1:example.comはRFC2606にて例示用ドメインとして定義されている