Java 向けの疑似 SMTP サーバの Web アプリを作った
疑似 SMTP サーバ
Ruby だと MailCatcher のような疑似(mock / fake / dummy) SMTP サーバがある。 開発中のアプリケーションでうっかり本番用のメールアドレスにメールを送信しないために便利である。 Java の現場では、疑似 SMTP サーバを入れるために Ruby をインストールするのはちょっと面倒である。 ランタイムが不要な言語で作られた疑似 SMTP サーバもいくつかあるが、文字コードの扱いがイマイチで日本語のメールを正しく扱えるものが少ないという問題もある。 そこで Java の現場で簡単に使える 疑似 SMTP サーバが必要だと考えた。
mail-baku
Java で使える疑似 SMTP サーバの Web アプリである mail-baku を開発した。
https://github.com/mallowlabs/mail-baku
ビルドした war は mail-baku/releases からダウンロードできる。
Tomcat の webapps
に war ファイルを放り込んで、(Apache httpd を使っている場合には AJP の設定すれば) http://localhost:8080/mail-baku/ で mail-baku にアクセスできる。
この Web アプリケーションは Web アプリであると同時に SMTP サーバとしても動作している。
ポート番号は 1025 番で SMTP を待ち受けている。
この Web アプリケーションが立ち上がった状態で、0.0.0.0 の 1025 番に向けてメールを送信するように開発中のアプリケーションを設定すれば、本番でうっかりメールを外部に送信することを防ぐことができる。
Tomcat を使ってない場合でもソースをクローンして、mvn ninja:run
とすれば Web アプリケーションと SMTP サーバが立ち上がる。
制約事項
BCC のメールアドレスは見ることができない。 これは SMTP サーバに利用している subethasmtp の制限なので許して欲しい。
まとめ
Java の現場で使える MailCatcher 風の疑似 SMTP サーバを作った。 Tomcat が立ち上がっていて、Ruby は入っていないという環境でメール機能をテストしたいという場合には使ってみて欲しい。