« | Home | »

2005.01.15

Majordomoのsequencerの改造

またまた、Majordomoです。
メーリングリストでタイトルにシーケンスナンバーを付けるのが一般化しています。
このため、Majordomoではresendの変わりにsequencerを使うが改造が必要なのは既に書いた
ところが、これでもOutlook ExpressではMIME decodeのルールに違反しているため、シーケンスナンバーの重なり防止が出来ない。
そこで、mime-decodeして改めてmime-encodeして正しいMIMEに直してやる必要がある。
このためにはmimer.plとmimew.plを取ってきて、sequencerの67行目あたりに次のように使用を宣言する。

require "shlock.pl";
+require "mimer.pl";
+require "mimew.pl";

そして、158行あたりを以下のように改造する。

&open_temp(IN, "/tmp/sequencer.$$.in") ||
&abort("sequencer: Can't open /tmp/sequencer.$$.in: $!");
while (<STDIN>) {
+       # by nob & tamotsu
+       if (/^Subject:/) {

+               $_ = &mimedecode($_);
+               $_ = &mimeencode($_);
+               s/[rR][eE]:.*[([].*d+[)]]/Re:/;
+               s/[rR][eE]:s*[rR][eE]:/Re:/g;
+       }
print IN $_;
}

さて、これで終わりだと思ったら、sequencerを使うとtaboo headerやtaboo bodyの「禁句」の指定が有効にならない。
taboo headerは添付ファイルの禁止する場合など、便利に使え是非欲しい機能である。
しかし、幸いにもsequencerはsequencerそのものに指定できる場所がある。

275行目あたりに下の赤字部分を挿入して添付ファイル(multipart/mixed)を禁止する。

                      /^subject:s*Failed mailb/ ||
/^subject:s.*bchangeb.*baddressb/ ||
/^subject:s*requestb.*badditionb/i ||
                            /^Content-Type:s*multipart/mixed/i   )) { 
&bounce("Admin request");
}

次にtaboo bodyであるが、私の運営しているMLで最近、出張に際して自動不在メール設定をした人がいて、メールがループする事故が起こった。
元来、長期にメールが受け取れないときは一時的にMLから退会して戻ったら入り直すべきとは思うがMLの運営側でも対策を考えることにした。
そこで、前述のシーケンス重なり防止の後ろに以下を挿入した。
自動応答不在メールの本文のどこかに必ずout-of-the-officeの語句を入れてもらい、これを引っ掛けてBounce mailにして逃げようというものである。

               s/[rR][eE]:s*[rR][eE]:/Re:/g;
s/[rR][eE]:s*[rR][eE]:/Re:/g;
}
#############################################
          if(/out-of-the-office/i){$taboo = 1;}
############################################
print IN $_;
}

さらに、taboo headerで追加した前述の後ろに以下のようにBounce mailを発行させる行を追加する。

                      /^subject:s*requestb.*badditionb/i ||
/^Content-Type:s*multipart/i   )) {
&bounce("Admin request");
}
#############################
if($taboo == 1){&bounce("Auto reply mail");}
############################

管理者には誰かMLに投稿する度にBounce mailが届くが、これは良しとした。
やれやれ、これで目的は達したか???

コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)