仕事場で、商用にサービスしているメールサーバが何台かあるのですよ。そのうちの1台なんですがqmailが走っています。
私がバリバリとサーバを構築していた時はsendmail全盛の時代だったので、qmailの存在は知っていましたがなんとなくいじっていませんでした。ところが、このサービス用のサーバにちょっとした問題が・・・
qmailの仕様なのですが、外部からInboundしてくるメールは一旦全部受けちゃうのですね。通常はこれで問題ないのですが、Fromフィールドを詐称した(適当な)SPAMがガンガンと飛び交っているので、問題が起きます。
普通ならSMTPのセッションが張られてRCPTが来た段階で「宛先のアカウントが存在するか?」をチェックして、アカウントが無ければSMTPのシーケンス内でUser Unknownを返すのですが、先も書いたようにqmailは疑いも無く全部受けちゃうから、受けた後にアカウントをチェックして、アカウントが無ければBounceメールが返ります。
一見問題は無いのですけれど、最近はFromフィールドが詐称(適当)なSPAMが多いので、Bounceメールが関係ないサーバに飛んじゃうんです。例えば、Yahooのメールアドレスで全然関係ない所からSPAMがやってくると、qmailは一旦全部受けますね。で、アカウントをチェックして、該当するアドレスが無いもんだからYahoo!さんにBounceを返しちゃう。SPAMの数が少ないうちはまだ良いのですけれど、大量にやられるとYahoo!さんにSPAMなDDoSになっちゃうんです。
これはqmailの仕様だから直せない。なので、別のデーモンに置き換えて対策する必要があります。
先週末からこれに取り組んでいて(別の事もやっていますけれど)、なんとか目途が立ちました。
qmailはセキュリティホールが無いと言われているそうです。確かにセキュリティホールは無いと思うのですけれど、仕様(実装)の問題って言うのは・・・どうなのかね。
現実的には、Postfixが一番良いと思いますよ。