閉じたメール送受信環境を構築する

メール送信クライアントやお問い合わせフォームのウェブアプリケーションの動作テストする場合、メール送受信環境が必要となる。メール送受信環境はどの組織でもあるが、実環境をそのまま利用すると、何かあった場合に問題となる。大抵閉じた環境を構築し、そこで動作テストするわけだが、メール送受信環境の構築は正直めんどくさい・・・あまり構築する機会がないと、設定の仕方も忘れることもしばしば。いい機会なので、構築手順をまとめておく。

環境


送信側ホスト 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 を追記する。PostfixUbuntu パッケージからインストールする際に、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.

参考情報

【収集用メールアドレス】:q1w2e3w2@gmail.com

*1:example.comはRFC2606にて例示用ドメインとして定義されている