メール送信するアプリのテスト方法

Webアプリの中のメール送信部分をデバッグする際に、いちいちメーラーで受信しないで済む方法はないかと考えて、MHonArcを使ってメールをHTML化するようにしてみた。以下はその備忘録。

MHonArcを設定する

# apt-get install MHonArc
# rpm -q MHonArc
MHonArc-2.6.16-0vl1
# mkdir /var/www/ml
# mkdir /var/www/ml/test
# cp /usr/share/doc/MHonArc-2.6.16/examples/utf-8.mrc /var/www/ml/test.rc
# chown -R nobody:nobody /var/www/ml

chownしているのは、HTMLを生成するプロセスがnobody権限でこのディレクトリに書き込めるようにするため。

/etc/aliases に以下を追記

test: "| /var/www/ml/test.sh"

/var/www/ml/test.sh の内容:

#!/bin/sh
/usr/bin/mhonarc -rcfile /var/www/ml/test.rc -add -outdir /var/www/ml/test
chmod a+r /var/www/ml/test/*

生成されるHTMLのパーミッションが600になってnobodyユーザ以外は読めなくなってしまうので、シェルスクリプトの最後でパーミッションを変更するようにした(全然イケてない方法だがとりあえず動く)。

/etc/httpd/conf.d/ml.conf:

Alias /ml/ /var/www/ml/

<Directory /var/www/ml>
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from 127.0.0.1
</Directory>

これで、test@localhost宛に送ったメールがhttp://localhost/ml/test/で見られるようになった。

拡張メールアドレスの設定

  • /etc/postfix/main.cf に以下の行を追記(コメントを外す)
recipient_delimiter = +

メールアドレスが複数ある場合、上記のエイリアスの設定をその数だけ追加してもいいのだが、100や200もあるとさすがにそれにも限界がある。拡張メールアドレスを有効にすると、test+foo@localhost, test+bar@localhost, ... は全部test@localhostに送られるようになる。