この方法の最終結論はこちら

仕事で、あるドメインに配送するメールだけ/dev/nullとかにリダイレクトする(要は闇に葬る)という要件があって、その方法を探していました。

SMTPサーバに送る前にプログラムでハジけってはなしなのですが、今回はSMTPサーバに送ってしまった後でリモート配送するときにハジきたいということで、いろいろ調べてみたのですが、qmailだけで解決する最適なソリューションがみつかりませんでした。

ということで下記のPerlで作ったダミーのSMTPサーバを立ち上げて、smtproutesに「example.com:localhost:26」と書いて、ダミーSMTPサーバに流すようにしました。

qmailだけで解決する方法を知ってる方がいたら教えてください!
use strict;
use Net::SMTP::Server;
use Net::SMTP::Server::Client;
use Carp;

my $server = new Net::SMTP::Server('localhost', 26) ||
    croak("Unable to handle client connection: $!\n");

while(my $conn = $server->accept()) {
    my $client = new Net::SMTP::Server::Client($conn) ||
        Carp::croak("Unable to handle client connection: $!\n");
    $client->process;
}
追記(Tue Jun 13 15:13:13 2006)
id:hideokiさんから、localsでローカル配送にしてvirtualdomainsでvpopmailに渡せばいけるんじゃね?ということ。なるほど。vpopmailあればそれでいけそう。あと、もしかしたらvpopmailがなくてもいけそうな気がしないでもない。

追記(Tue Jun 13 15:20:43 2006)
vpopmailの解決方法でできました。おぉ。
今vpopmailなしで、qmail単体でできないか試しちう。

最終結論(Tue Jun 13 15:26:17 2006)
1. localsに葬りたいドメイン(example.comとか)を書く
2. virtualdomainsに「example.com:foo」と記述しておく
3. /var/qmail/alias/.qmail-foo-default に # とだけ記述しておく

これだけでやりたいことできました。最初のダミーSMTPサーバのプログラムなんていらねー!
Perlでなんでも解決しようとする悪いクセだな…。