臨界に突入するメールを止める.
1999/10/29 Kyoma TAKAHASHI
具体的には,epmail に来たメールの内,
To: postmaster あるいは To: epmail が合計2行以上ある
メールを撃墜する.
止めるべきメールを受け取った場合,
/home/epmail/bin/stopwepmail.pl は,
/var/log/syslog に一行書き込み,
/home/epmail/stopped-mail に止めたメールを残して
終了コード 99 で終了する.
ローカル配送を行う qmail-local は,終了コード 99 を,
「配送は成功したが、 qmail-localは以降の配送命令を無視せよ」
という意味に取るので,/home/epmail/.qmail の2行目以降の
配送指示は実行されなくなる.
参考:http://www.jp.qmail.org/q103/jman8/qmail-command.html
/home/epmail/.qmail:
| /home/epmail/bin/stopwepmail.pl
&epmail-member
/home/epmail/bin/stopwepmail.pl:
#!/usr/bin/perl
# stopwepmail.pl
# Kyoma TAKAHASHI 1999/10/29
# Thanks for Okuyama's help
$cnt = 0; $mailhb = '';
while () {
if (/^To:\s+epmail.+/) { $cnt += 1 }
if (/^To:\s+postmaster.+/) { $cnt += 1 }
$mailhb .= $_;
}
if ( $cnt < 2 ) { print $mailhb; exit 0; }
else {
$from = $ENV{'SENDER'}; $to = $ENV{'RECIPIENT'};
$ermsg = 'Message from '.$from.' to '.$to.' is going to start chain reaction!! Stopped it.';
system "/usr/bin/logger -t stopwepmail.pl '$ermsg'";
open (STOPMAIL,">> /home/epmail/stopped-mail");
print STOPMAIL $mailhb;
close (STOPMAIL);
exit 99;
}