Message-ID を必要としない重複メールチェNo.00753
Iranoan さん 08/01/08 20:08
 
 秀まるおさん今日は、Iranoan です。
 「重複メールのチェック」で、いろいろ条件を決めれるようになりましたが、
Message-ID が一致していることが必要条件のままです。これは本来の使い方
からすると、あたり前なのですが、この条件が無くてもチェックできるように
ならないでしょうか?

 やりたいのは、本来の使い方からは離れているのですが、迷惑メールをでき
るだけ効率よく読まずに済ますことです。

 要望の背景としては、次のとおりです。迷惑メールの判定が間違いなければ、
迷惑メールと判定されたメールを全て読まなければ良いのですが、当然間違い
があるので、日に 2, 3 度確認します。このとき、URL や改行位置が違うぐら
いで、本文がほぼ同じの Message-ID やアドレスの異なるメールが多くありま
す。その為、これらのメールを手早く削除できれば、処理が随分楽になります。

 またこの機能は、半自動で削除することができれば、バックグランドで行え
ばよいので、たとえ時間が掛かっても私にとってはありがたいです。

[ ]
RE:00753 Message-ID を必要としない重複No.00755
秀まるお さん 08/01/09 08:48
 
 重複メールのチェックでMessage-Idを比較しないようにってことだと、本当に
手抜きして作ればとんでもなく遅くなると思います。特に「メール本文の内容が
ほぼ一致している」の条件のみで比較すると、メールの数の二乗に比例して遅く
なると思います。

 というのは、重複メールのチェックの処理自体が、Message-Idでのチェックに
ついては高速になるように特別なテーブルを作って比較する作りにしてるけども、
その他の比較については総当たり的な単純なやり方でやってるからですけど。特
に「メール本文…」についてはメールの本文をファイルからロードして比較する
のですごく遅いです。

 あと、「メール本文の内容がほぼ一致」といっても、実際には改行と空白/タ
ブ文字を除去して単純に比較してるだけなので、URLが違ってたり英数字が1文
字でも違っていれば違うメールと判定されます。なのでそもそも「似たような迷
惑メールを1つにまとめる」みたいな用途には使えないと思います。

 Received:ヘッダが一致してる(=発信元のサーバーが同じ)とか、そういう法
則で比較するならまだ分かりますけど。

[ ]
RE:00755 Message-ID を必要としない重複No.00758
Iranoan さん 08/01/09 13:32
 
 秀まるおさん今日は、Iranoan です。
>  あと、「メール本文の内容がほぼ一致」といっても、実際には改行と空白/タ
> ブ文字を除去して単純に比較してるだけなので、URLが違ってたり英数字が1文
> 字でも違っていれば違うメールと判定されます。なのでそもそも「似たような迷
> 惑メールを1つにまとめる」みたいな用途には使えないと思います。
 そうですか。私の場合、本文がまったく同じ迷惑メールもあるので有効かと
思ったのですが、仕方がないですね。

[ ]
RE:00758 Message-ID を必要としない重複No.00760
秀まるお さん 08/01/09 17:56
 
 個人的に、

> 迷惑メールと判定されたメールを全て読まなければ良いのですが、当然間違い
> があるので、日に 2, 3 度確認します。

 ということ自体に疑問がありますけども…。

 秀丸メール標準の迷惑メールフィルターは、自分ではかなり「迷惑じゃない
メールを間違って迷惑メールと解釈してしまう」っていうミスは起きないように
しているつもりです。もしそういう誤判定があるのなら、そっちの原因というか、
例えばそういう、間違ってヒットしてしまう迷惑ワードの例なんかを教えて欲し
いです。

 ただし、広告的な内容を含むメールマガジン類が迷惑ワードにヒットしてしま
うのはしょうがないてすけど。そういう場合は、そもそも定期購読してるメール
マガジン類については信頼ワードで回避させてもらうしかありません。

 ちなみに僕自身は迷惑メールと判定されたメールは何も確認しないで、何日か
に1回のペースでさっくり削除しています。

[ ]
RE:00760 Message-ID を必要としない重複No.00761
Iranoan さん 08/01/09 18:20
 
 秀まるおさん今日は、Iranoan です。
>  秀丸メール標準の迷惑メールフィルターは、自分ではかなり「迷惑じゃない
> メールを間違って迷惑メールと解釈してしまう」っていうミスは起きないように
> しているつもりです。
 学習型のフィルタを使っているのが原因です。
 確かに標準のフィルタを使えば、「迷惑じゃないメールを間違って迷惑メー
ルと解釈してしまう」ことは無いですが、見逃してしまう迷惑メールも有るの
で、学習型を使っています。

[ ]
RE:00761 Message-ID を必要としない重複No.00764
秀まるお さん 08/01/10 09:40
 
 以下のマクロを使えば同じSubjectのメールを削除することが出来ます。

 こういうのでいいんじゃないかと思います。安全のためにquestion文を入れま
したけど、実際にはそれを取って使ってください。

    loaddll "tkinfo.dll";
    #sort = dllfunc("SortMethod");
    #n = dllfunc("SetSortMethod", 1);
    #c = dllfunc("MailCount");
    #i = 0;
    while( #i < #c - 1 ) {
        #n = dllfunc("SetMailIndex", #i);
        $text1 = dllfuncstr("CurrentHeader", "Subject");
        $id1 = dllfuncstr("CurrentHeader", "Message-Id");
        #i2 = #i + 1;
        while( #i2 < #c ) {
            #n = dllfunc("SetMailIndex", #i2);
            $text2 = dllfuncstr("CurrentHeader", "Subject");
            $id2 = dllfuncstr("CurrentHeader", "Message-Id");
            if( $text1 == $text2 && $id1 != $id2 ) {
                question "削除しますか?";
                if( result == yes ) {
                    #n = dllfunc("Delete", 1);
                    #c = #c - 1;
                } else {
                    endmacro;
                }
            } else {
                break;
            }
        }
        #i = #i + 1;
    }
    #n = dllfunc("SetSortMethod", #sort);

[ ]
RE:00764 Message-ID を必要としない重複No.00766
Iranoan さん 08/01/10 14:12
 
 秀まるおさん今日は、Iranoan です。
>  以下のマクロを使えば同じSubjectのメールを削除することが出来ます。
 ありがとうございます。
 Subject だけでは不安なので、自分でも考えて見ます。

[ ]
RE:00766 Message-ID を必要としない重複No.00767
秀まるお さん 08/01/10 14:40
 
 例えばメール本文の最初の3行だけ比較するとかなら、

        $body1 = gettext(0, 0, 0, 3);

 とかやって、

            if( $text1 == $text2 && $body1 == $body2 && $id1 != $id2 ) {

 って判定してもいいかと思います。

[ ]