Home > まめ知識 > dnsmasqを使って検証用にMXレコードを強引に指定する方法

dnsmasqを使って検証用にMXレコードを強引に指定する方法

メール送信の際、MTAはDNSに登録されているMXレコードを参照して宛先サーバを見つけることになりますが、稼働中ドメインのメールサーバを移行する場合、テスト段階でMXレコードを書き換えるというわけにはいきません。ですので、新しく設定したメールサーバがきちんと外部からのメールを受信できるかを確かめるとなると、telnetで直接接続してどーたらこーたら(*1)とか結構じゃまくさいです。

タップ開発チームとしてはじゃまくさいのは嫌ですので、できればさくっとメールクライアントから送信テストができると嬉しいのになあと思って色々考えました。で、考えた結果、社内DNSとして使っているdnsmasq(*2)にMXレコードが設定できれば解決するんじゃないかと思いついたので、やってみて、成功した、というお話です。

dnsmasqっていうのは、かなり端折って言いますと、BINDより何倍も手軽なDNSプログラムです。社内サーバの名前解決用にちょっとDNSサーバ立てたいなーって感じの時なんかには、自分の/etc/hostsファイルを参照する仕組みなので、設定もすごく簡単です。詳しくはいい記事を見つけましたので、このページなんかを見てみてください。

で、今までは名前解決用にしか使ってなかったそのdnsmasqなんですが、man眺めてたら、

-m, --mx-host=<mx name>[[,<hostname>],<preference>]

みたいな感じで、どうやらMXレコードも設定できるようなのでやってみました。

今回のポイントは以下の通りです。

  • 現在のメールサーバはns.mc-compass.com(157.205.227.133)
  • 新しいメールサーバはxxx.tapweb.co.jp(157.205.227.xxx)(*3)
  • dnsmasqサーバのIPアドレスは192.168.2.211
  • dnsmasqサーバのsmtpを使って送信テストをする

では、いってみます。以下のコマンドは、すべてdnsmasqサーバ(192.168.2.211)のサーバ上で実行しています。

まず、現在のDNSの設定状況をdigコマンドで確かめます。

# dig tapweb.co.jp mx

; <<>> DiG 9.4.3-P3 <<>> tapweb.co.jp mx
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43904
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1

;; QUESTION SECTION:
;tapweb.co.jp.                  IN      MX

;; ANSWER SECTION:
tapweb.co.jp.           5627    IN      MX      10 ns.mc-compass.com.

;; AUTHORITY SECTION:
tapweb.co.jp.           117750  IN      NS      dns11.aics.ad.jp.
tapweb.co.jp.           117750  IN      NS      dns12.aics.ad.jp.
tapweb.co.jp.           117750  IN      NS      dns13.aics.ad.jp.

;; ADDITIONAL SECTION:
ns.mc-compass.com.      5627    IN      A       157.205.227.133

;; Query time: 2 msec
;; SERVER: 192.168.2.254#53(192.168.2.254)
;; WHEN: Wed Sep  2 19:19:37 2009
;; MSG SIZE  rcvd: 147

こんな感じで、MXレコードは、ns.mc-compass.com(157.205.227.133)っていうサーバに設定されていることが分かります。

続いて、dnsmasqの設定です。MXレコードを設定するには、/etc/dnsmasq.confファイル内に、下記のような設定を加えます。

# vi /etc/dnsmasq.conf
mx-host=tapweb.co.jp,xxx.tapweb.co.jp,50

書いたら再起動。

# /etc/init.d/dnsmasq restart
Shutting down dnsmasq:                                     [  OK  ]
Starting dnsmasq:                                          [  OK  ]

ここで、resolve.confに自分自身を設定します。

# cat /etc/resolv.conf 
nameserver 192.168.2.211 # 自分のアドレス

で、もう一度MXレコードを確認してみると、

# dig tapweb.co.jp mx

; <<>> DiG 9.4.3-P3 <<>> tapweb.co.jp mx
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 512
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;tapweb.co.jp.                  IN      MX

;; ANSWER SECTION:
tapweb.co.jp.           0       IN      MX      50 xxx.tapweb.co.jp.

;; ADDITIONAL SECTION:
xxx.tapweb.co.jp.    6323    IN      A       157.205.227.xxx

;; Query time: 0 msec
;; SERVER: 192.168.2.211#53(192.168.2.211)
;; WHEN: Wed Sep  2 19:21:52 2009
;; MSG SIZE  rcvd: 81

やった!新しいサーバがきちんと参照できています。

ということで、このマシン上で、

# cat 'test' |mail omura@tapweb.co.jp

などとしてやれば、新しいサーバ(xxx.tapweb.co.jp)にメールが届くかどうかのテストができるというわけです。

今後は、新しいメールサーバの仕組みなどについても紹介できればと思っています。

*1: 例えば、この辺参照→http://ash.jp/net/telnet_smtp.htm

*2: http://www.thekelleys.org.uk/dnsmasq/doc.html

*3: 執筆時は設定中のため伏せています

Comments:0

Comment Form

Trackbacks:0

Trackback URL for this entry
http://dev.tapweb.co.jp/2009/09/77/trackback
Listed below are links to weblogs that reference
dnsmasqを使って検証用にMXレコードを強引に指定する方法 from tap dev blog

Home > まめ知識 > dnsmasqを使って検証用にMXレコードを強引に指定する方法

Search
Feeds

Return to page top