Webアプリでのメール送信テストにはRadish使うといい

 2009/11/20

一週間以上ブログへのPostが滞っていたのだが、やはり日々の仕事に追われた状況になるとinputしないので、outputできないんだよね。 ということで今日は過去のネタを書くよ。

Webアプリでメールを送信するケースは良くあるんだけど、テストは結構やりづらい。 よくある失敗パターンは下記みたいな感じ。年に数回こういうことするなーって会社でアナウンスされたりする。

  • 大量送信のテストで社内ネットワーク止めた
  • 携帯キャリア宛てに大量のメール送ってSpam扱いされた
  • 自分のメールボックスに大量のテストメールが来て受信に死ぬほど時間がかかる
  • 間違って本物の顧客のテストメール送ってしまった
  • 送信元アドレスも送信先アドレスもダミーなものを使ってインターネット上にメール投げた

で、こういう失敗って、環境の作り方で十分保護できる。僕のやっているパターンを書いておく。

Radishで開発端末にSMTPを立てて、メール送信はそのSMTPを通す

Radishはフリーでソースが公開されているPOP、SMTP、DNSサーバで、http://homepage2.nifty.com/spw/software/radish/で提供されている。

SMTP設定は以下のような感じ。待ちうけるIPアドレスとアクセス許可ネットワークの設定を行う。

radish3

一般設定では「キュー常時処理」にチェックを入れてしまうと、Radishは中継したメールをそのまま外に投げてしまうので、必ずチェックを外す。

radish2

これでメールを送信すれば以下のようにRadishのキューにメールが溜まる。ダブルクリックすればそのメールの中身がメールソフトで確認できるので、自分のメールボックスにゴミがたまることもない。

radish

さらに安全のためにsendmailもいじくる

とは言え、うっかりRadishでキューを全部処理してしまったりすると世間様にご迷惑をおかけするので、予めsendmail側で、開発に関係ないドメインにメールを送信しないようにしておくべきだ。

sendmailの場合は、/etc/mail/mailertableに以下のように書くと良い。

ryuzee.com          smtp:[192.168.1.50]
.                       local:trash

その上で、

makemap hash /etc/mail/mailertable < /etc/mail/mailertable

とし、sendmail.mcで

FEATURE(`mailertable', `hash -o /etc/mail/mailertable')dnl

を有効にして、sendmail.cfを作成し、sendmailを再起動すれば良い。

これによってryuzee.com宛てのメールは192.168.1.50のSMTPにリレーするが、それ以外のドメイン宛てのメールは全部捨てられる。 なお、smtp:のあとのアドレスを[]で囲んだ場合はDNSの逆引きが行われない。

 2009/11/20

サイト内検索


著作

寄稿

Latest post: