TOPへ
起票 2005.2.20/更新 2005.2.20
 目次へ  
   


未承諾広告をはじく!

 

 



qmailでも未承諾広告をはじきたい

流石になんとかしたくなりました。←2000年の記事です
qmailで何が出来るか????
仕分けには .qmail (dot-qmail) を使うのが順当です。
スクリプトは?
perlでやるのは重過ぎ、という意見もありますが、広告という文字をはじくにはもうそれしか方法がありません。
電子メール、一般的に本文はjisで書かれていますが、subjectは特殊なエンコードをしてあります。
Subject: =?ISO-2022-JP?B?GyRCJCI5LTlwJCIbKEI=?=
こんな感じ。この例では 「あ広告あ」というsubjectになってます。
subjectの文字を、前方を =?ISO-2022-JP?B? で、後方を =?= で囲んで、MIMEでエンコードしてあるんですね。
これをデコードするにのはその仕様に関する情報が揃いません。
そこでツールをお借りしました。
http://www.itboost.co.jp/perl/perl_08.php
こちらより mimer.pl を勝手にお借りして使ってみました。
スクリプトをそのまま載せます。

#!/usr/bin/perl
use Jcode; 広告という文字と比較する為に Jcodeも使います
require "/usr/myapp/mimer.pl"; このmimer.pl がmimeエンコードしてくれるファイルです
$flg=0;
$koukoku ='~ML~M~P'; この文字は「広告」という文字です
while(<STDIN>){ qmailはSTDINからメール本体を取り出せます
	if($_ =~ /Subject/i){
		last;
   }
};
$subject = $_;
$subject = mimedecode($subject); これが mimer.pl のコマンドでmimeデコードしてくれます
$subject = jcode($subject)->sjis;
if($subject =~ /$koukoku/) {$flg=1;}
if($flg){
	exit 0; 広告が含まれてるならcondredirectが使えるように0を返します
}else{
	exit 1;
} 
    

これを koukoku.pl という名前にしておいて
chmod +x /usr/myapp/koukoku.pl
としておきます。

で、subjectに「広告」という字が含まれていると0を返すスクリプトの出来上がり。
あとは .qmailに

   |condredirect  適当なアカウント@ayamizu.com  /usr/myapp/koukoku.pl
   ./Maildir/
   &携帯電話@docomo.ne.jp
 

とでも書いておくと、広告の入っているやつは 「適当なアカウント@ayamizu.com」 へ転送して終了、それ以外は、通常の保存と携帯への転送など、お好きな様にどうぞ。

その後は絶好調です。