qmailであるドメインへ送るメールだけ配送しない方法
仕事で、あるドメインに配送するメールだけ/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でなんでも解決しようとする悪いクセだな…。