qmailでメールを捨てるには

qmailでメールを捨てるにはdot-qmailにどう書くのがよいか。

$ echo '#' > ~/.qmail-trash

のように「#」とだけdot-qmailに書くのが一番簡潔だと思います。

なんで「#」で捨てられるのかというと、要はdot-qmailに配送命令を書かなければよいだけなんです。

ほんじゃ、空のファイルでいいじゃんと思う向きもいると思いますが、ファイルサイズがゼロだとdot-qmailのファイルがないものとして扱われ他の方法で配送処理されるためダメなんです。じゃあというわけで空行を書くと、qmailの仕様でdot-qmailの最初の行は空行ではいけないと決められているのでqmail-localに怒られしまってダメです。

なので、コメントである「#」を書いて、ファイルサイズがゼロでなく、かつ、最初の行が空行でもないdot-qmailにするわけです。

このへん、詳しくはdot-qmail(5)を。

あと、dot-qmailに「/dev/null」を書くのはヒジョーによくないです。試してみるとわかりますが、「/dev/null」と書いたdot-qmailにメールを送ってみると、qmail-localが怒ります。「Unable_to_write_/dev/null:_invalid_argument._(#4.3.0)」と。

エラーになるだけで捨てられるのならまぁいいのですが、この場合exit 111、つまりtemporary failure(終了コードについてはqmail-command(8)を参照)になるので、エラーになったメールは捨てられず、qmailがあきらめるまで/dev/nullに配送しようとして失敗、というのを延々と繰り返してしまいます。