パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。毎日更新を目指す!

fml 4.0 で From: の書き換え

最近、fml4.0 を使った ML でメールが良く返ってくるようになっている。事例の一つとして、送信者が aol.com のメールアドレスだった場合に、googlehotmail 等から拒否されてしまう。原因としては、この ML では from: ヘッダーが、投稿されたメールのそのままで配信してしまうところにありそうだ。

そこで、方針としては、From: ヘッダーを書き換えて、元の From: ヘッダーの中身をダブルクォートでくくって、その後ろに<>(不等号カッコ)で MailingList のメールアドレスを書く形式にするものを考えた。

グーグル先生で調べてみると、From: を書き換える例は色々あるのだが、大抵は、From: ヘッダーは ML のアドレスにして、元々の From: ヘッダーは、本文に書く、というものだ。本文は BASE64 エンコードされていたりするので、From: を本文に追加するのは結構厄介そうだし、なんとなくかっこ悪いので、避けたい所。

ただ、元の From: をダブルクォートで括る場合、もともとダブルクォートでくくられているとまずい。ダブルクォートをエスケープするか、さくっと削除してしまうのがいいのか。2バイト系の文字の2バイト目がダブルクォートになる可能性があると面倒。Shift-JIS や JIS、EUC だと大丈夫そうだが。さらに、From: が MIME encode されていたらどうするか。

ということで、とりあえず簡単なやり方からためしていこうと思う。ML のディレクトリの cf ファイルの最後に

$SMTP_OPEN_HOOK = q%
 my($fromStr);
 $fromStr = $Envelope{'h:from:'};
 $fromStr =~ s/"//g;
 $Envelope{'fh:from:'} = " \"".$fromStr." \"<".$MAIL_LIST.">";
 $Envelope{'fh:reply-to:'} = $MAIL_LIST;
 %;

を追加して makefml config してみた。はてさてどうなるか。といか、From: を変えたらエラーで返ってくるメールが減るだろうか。