「っぽい」
会社の内部で利用するシステムでの話。
宛先を間違えてメールを送信すると、普通はどこかのメールサーバから「こんな宛先は無い」ってことでエラーメールが送信者宛に返ってくることがあると思う。
よく見かけるのは「MAILER-DAEMON」さんからのメール。メールの中身も英語ばっかり・・・いやよく読めば、なぜエラーになったかも書いてはあるけども。で、エラーになった送信メールの内容も添付されていたりする。
で、先日のこと。普通に送付されてくるメールと、上述したこのMAILER-DAEMONさんのメールを区別して処理しなければならなくなった。
受信したメールのデータをPerlで書いたスクリプトに標準入力で突っ込んで、MAILER-DAEMONさんからのメールの時だけは送信者に通知する処理をしてほしいというのだ。
あ、ちなみに言うと、このシステムで送信するとき、送信者アドレスには送信する人の本当のアドレスではなく、システムで統一された一つの代表アドレスがセットされる。普通のメール送信であれば、Fromには自分のアドレスが入り、MAILER-DAEMONさんからのメールも送信者宛に送付されるので何の問題も無いのだが、このシステムはその辺の事情が特殊になっている。
スクリプトで処理をするのであれば、MAILER-DAEMONさんからのメールを他のメールと区別するため、何か特徴的なところをとらえて判断しなければならない。
というわけで、ずーっと普通のメールとMAILER-DAEMONさんからのメールを見比べていたのだが、この二つのメールの違いを具体的にあげるのに現在苦慮している。
人の目で見れば、エラーメールなどはすぐに見分けられる。メーラーデーモン「っぽい」ねって言うのは見ればわかるのだ。
「そうか。そういうMAILER-DAEMONっぽいところを見つけて判断すればいいんですね」と、自分の隣に座っているY君(仮)。
ぃゃぃゃその「っぽい」というところをPerlでどう表現するのかが問題なんだってば。
とりあえず違うところを列挙してみると、
- 送信者がMAILER-DAEMON
- 本文が全部英語
- エラーになった理由は本文に含まれている
- 送信したメールの本文はエラーメールの添付となっている
例えば、この送信者にしても「Mail Delivary Subsystem」さんってパターンもあるらしい。「この送信者なら必ずエラーメール」というわけにはいかないようだ。
メールに添付ファイルが付くこと自体も当たり前なことだから、エラーメール通知との判別には使え無さそう。
本文が全部英語・・・・・本文内をgrepすりゃいいか?半角英数記号以外が含まれていたら非英語みたいな判定か。依頼者からのメールが英語のみってことはまぁまず無いだろうし・・・たぶん。
で、この話を考えながらふと思ったのは、例えば自分などはいろんなソフトメーカーのソフトを買ってユーザ登録をして、そのメーカーからの情報メールを受け取っていたりする。
ソフトメーカーだけじゃない。例えばショッピングサイトであるとか、オンラインゲームの会社からのメールもたくさん来ている。
そういうものとスパムメールを区別することってできるんだろうか。
その手のメールとスパムメールの違いなんて、結構紙一重なんだと思う。
Y君(仮)「おお、確かに!その違いは難しいですね~」
自分が必要なメールは普通のメールで、必要無いメールはスパムメールになるんだ。
例えばよくファイアーウォールソフトについているスパムメールブロック機能であるとか、あとniftyのメールでも学習型のスパムメールブロック機能なんてのがある。あと、秀丸メールにもそんな機能があったなぁ・・・。
たしかどっかで聞いた話だと、ああいうのはスパムメールに含まれがちな単語の辞書を持ってて、その単語の出現頻度で点数を付けて、何点以上だとスパムメールという判断をする仕組みがあるらしい。
上述した「っぽい」をプログラムで具現化した一つの形なんだろう。
Y君(仮)曰く、「そういうのを考えるの苦手なんですよね~」。
そういう違いを見つけてスクリプト作って、うまく動作したときの快感ったら無いよ? そこが一番おもしろいところだと思うんだけどなぁw
でもさすがに辞書を作る気にはならない。うん。無理だw
とりあえず送信者アドレスブロックをすることにした。対処が必要なメールアドレスが新たに出てきたら、その時点で対象に追加する。モグラ叩きだなこりゃ・・・


最近のコメント