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でなんでも解決しようとする悪いクセだな…。