2005.01.23
MajordomoのSequencerの改造(2)・・・(mail)
またまたまた、Majordomoの改造の話です。
sequencerを改造してOutlook Expressでもメールシーケンスの重なりを起こらないようにしたが、Eudoraでは重なりが起こる事が分かった。
EudoraのSubjectはSubject:のWordの直後に改行が入るので、最初の方法ではシーケンス番号を取り除けない。
Subject: =?ISO-2022-JP?・・・
のようになっているので、Subject:行の次の行もmimedecodeしてmimeencodeしシーケンスを取り除く必要がある。
Subject:行の次の行も処理すべき対象か、それ以外の行かは、mimeencodeされた行には=?が現れる事で判別しているが、Subjectの継続行以外でmimeencodeされている可能性はFrom, To, Reply行であるので、これらは除く。
また、メールの本文中にシーケンスの重なり除去のアルゴリズムに引っかかるものが存在すると困るのでシーケンス番号の除去はメールのheader部だけに作用させるようにした。
これらの条件を考慮した結果が次である。
$in_header = 1; while (<STDIN>) { if ($in_header){ if (/^s*$/) {$in_header =0 ;} if (/^Subject:/ || (/=?/ && !/From|To|Reply/)) { $_ = &mimedecode($_); $_ = &mimeencode($_); s/[rR][eE]:.*[([].*d+[)]]/Re:/; s/[rR][eE]:s*[rR][eE]:/Re:/g; } } ############################################# if(/out-of-the-office/i){$taboo = 1;} ############################################ print IN $_; }
どうも、スッキリした方法では無いですね。
誰か、良いアイデアがあればお教えください。
17年前の記事に今更かとも思いましたが
上の s/[rR][eE]:s*[rR][eE]:/Re:/g; は
s/[rR][eE]:\s*[rR][eE]:/Re:/g; の間違いではないでしょうか。
Posted at 2022.08.17 1:31 AM by kouji
コメントありがとうございます。
もうずいぶん昔にFreeBSDを触るのをやめてしまい、サーバも廃却してしまいました。なにせもう数年で80歳を超える年齢で、レンタルサーバーで過去の記事と、わずかに備忘録として書き込むことが極たまにあるぐらいですので・・・。
それでも、見に来てくれる方があるのは嬉しい限りです。
Posted at 2022.08.17 3:43 AM by Naka