TOPへ |
起票 2005.2.20/更新 2005.2.20
|
目次へ | |
|
|
|
流石になんとかしたくなりました。←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」 へ転送して終了、それ以外は、通常の保存と携帯への転送など、お好きな様にどうぞ。
その後は絶好調です。