postfixでメールアプリケーションを扱うときの注意事項

いいめものように、メールを受け取ってアレコレするメールアプリケーションを書くことはよくあるかと思います。

メールサーバとしてpostfixを使うと、こんな具合で実現できます。

#cat /etc/aliases
:
test:"|/var/mailApp/test.rb"
test@example.comでメールを受け取ったら/var/mailApp/test.rbを起動する、という具合です。

それはいいのですけど、この状態でtest.rbでエラーが起きると、メール送信者宛にバウンスメッセージというのが送付されます。

This is the Postfix program at host snares.example.com.
:
                       The Postfix program

>test@example.com< : Command died with
   status 1: "/var/MailApp/mailserver/test.rb". Command output:
   /usr/lib/ruby/1.8/logger.rb:518:in `initialize': Permission denied -
   /var/MailApp/mailserver/../log/MailServer.log (Errno::EACCES)
   from /usr/lib/ruby/1.8/logger.rb:518:in `open'  from
   /usr/lib/ruby/1.8/logger.rb:518:in `open_logfile'  from
   /usr/lib/ruby/1.8/logger.rb:487:in `initialize'  from
   /usr/lib/ruby/1.8/logger.rb:263:in `new'  from
   /usr/lib/ruby/1.8/logger.rb:263:in `initialize'  from
   /var/MailApp/mailserver/../common.rb:42:in `new'  from
   /var/MailApp/mailserver/../common.rb:42  from
!!!エンジニアにとっては背筋の凍り付くような内容です。メールアプリケーションのファイル構成から使っているモジュール、自分がどんなミスをしたかまで送信者に筒抜けになってしまいます。

とりあえず、test.rbの内容をこうしましょう。

begin
 元のコード
rescue => e
	exit(-1)
end

これで、test.rbがエラーを外にはくことはなくなるので、バウンスメールの内容も、ずいぶん穏当なものになります。

>test@example.com< : Command died with
   status 255: "/var/MailApp/mailserver/test.rb"

Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; Command died with status 255:
   "/var/MailApp/mailserver/test.rb"

ちなみに、posfix 2.3から、バウンスメールの内容をカスタマイズできるようになるらしいです。
Postfix manual - bounce(8)

メールサーバのバージョンアップが待ち遠しいなんて、久しく味わっていない感覚です。

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: postfixでメールアプリケーションを扱うときの注意事項

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/561

コメント(1)

もぎゃ Author Profile Page:

すっごいいまさらですけど、もっといい方法を教えていただきました。
エラーを抑制するとか | 眠る開発屋blog

test:”|/var/mailApp/test.rb 1>/dev/null 2>&1″

そういわれて見りゃそうですよね。

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2008年3月30日 23:41に書いたブログ記事です。

ひとつ前のブログ記事は「 [EE]日本語ランゲージパック 」です。

次のブログ記事は「 さくらインターネット「専用サーバ」エントリープラン提供開始 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type