信頼できる差出人ファイル更新No.30577
TUBU-RED さん 07/03/11 00:20
 
いつも大変便利に使わせてもらっています。

迷惑メールフィルタに関して、質問があります。

業務上「自ら作成し送信したメールアドレス」を
信頼できる差出人に登録しないように設定したく、
秀丸メールの自動起動マクロ(送受信の開始直前
と受信が一段落した時)に、tkf_SafeSender.txt
の内容を書き換える(\t2\tを含む行を削除)マクロを
走らせています。

さて、tkf_SafeSender.txt を書き換えても、
これが秀丸メール上にて反映されるタイミングが
どうも遅いらしく、意図する動作を実現してくれません。

具体的には、tkf_SafeSender.txt 内では、マクロによって
すでに削除されているはずのアドレスが、
全般的な設定→迷惑メール対策→迷惑メールフィルターの設定
→信頼できる差出人 にて開かれるアドレス一覧に掲載され、
かつこのアドレスからのメールがしっかりとSafe Senderに
分類されるのです。

私としては、受信時に適用されるフィルターは、その時点での
フィルターのファイルの内容に合致して欲しいと思うのですが、
いかがでしょうか?

お忙しいところ恐縮ですが、よろしくお願いいたします。

[ ]
RE:30577 信頼できる差出人ファイル更新No.30579
アルビレオ さん 07/03/11 01:10
 
ユーザーのアルビレオです。

>さて、tkf_SafeSender.txt を書き換えても、
>これが秀丸メール上にて反映されるタイミングが
>どうも遅いらしく、意図する動作を実現してくれません。

一般的にこういった外部設定ファイルが読み込まれるのは、プログラムを起動し
たときと正規に用意された方法で設定を変更したときだけで、ファイルを書き換
えただけでは設定を読み直すことはありません。

このケースではマクロにLoadAndGetSpamFilter関数というのが用意されているの
で、自動更新マクロの最後でこれを実行するようにすればいいと思います。

[ ]
RE:30579 信頼できる差出人ファイル更新No.30581
TUBU-RED さん 07/03/11 13:07
 
アルビレオ様

TUBU-REDです。早速のお返事ありがとうございます。

LoadAndGetSpamFilter関数を読み込んでも、
(特定の条件で)上手く行きません。

「自動で生成したメール」を「自動送受信で送信し」
それが自動で信頼できる宛先として登録された場合、
この情報はファイルに書き込まれると同時に、何かしらの
バッファのようなものに取り込まれてずっと残っており、
これが残っていると tkf_SafeSender.txtを編集して
LoadAndGetSpamFilter関数を使ってもその編集をうまく
反映させることができませんでした。

具体的には

1:(定期受信にて)受信・送信

2:(受信一段落時の自動起動マクロにて)
  2-A:メールを生成、送信
  2-B:tkf_SafeSender.txtを編集
  2-C:LoadAndGetSpamFilter

3:(定期受信にて)受信・送信

これを繰り返した時、2-Aで自動で登録される
アドレスが邪魔をして、2-Bの編集がうまく本体に
反映されません。

最下部にこの状態を再現させるマクロ(2本)を
掲載しました。定期送受信をONにして、test_受信時.mac
(LoadAndGetSpamFilter関数を含む)を受信が一段落した時に
自動起動させると、

tkf_SafeSender.txt ファイルそのものには
from_*****@ju.shin なるアドレスと
to_*****@sou.shin なるアドレスがたまっていきますが、

実際に秀丸メール本体上では
to_*****@ju.shin のみが反映されます。

メール送信先を自動的に登録しないというオプションを
追加していただければ一発で解決ですが、作者に頼るばかり
でもどうかと思い奮闘しましたが行き詰まっています。

よろしくお願いいたします。

TUBU-RED
=====================
ファイル1:test_受信時.mac
(受信が一段落した時に自動起動)
=====================

loaddll "TKInfo.dll";

#n = dllfunc("SetQuietMode", 1 );

$TheSafeSenderFile = dllfuncstr("HomeDir") + "tkf_SafeSender.txt";
$TheProcess = hidemarudir + "\\hidemaru.exe /xtest_SafeSender処理.mac " + $T
heSafeSenderFile;

run $TheProcess;

$To = "to_" + str(tickcount) + "@sou.shin";

newfile;1
disabledraw;
$s = dllfuncstr( "SetHeader", "Subject", "spam_test" );
$s = dllfuncstr( "SetHeader", "From", "xxxx@irima.sen" );
$s = dllfuncstr( "SetHeader", "To", $To );

gofiletop;
insert "スパムテスト " + $To;

savelf;
#n = dllfunc( "SetMainWndTop" );
closehidemaru 1;

#n = dllfunc("SetQuietMode", 0 );

$filter = dllfuncstr("LoadAndGetSpamFilter");


=====================
ファイル2:xtest_SafeSender処理.mac
(上記ファイル内で使用)
=====================
gofiletop;
insert "from_" + str(tickcount) + "\\ju.shin\t4\t2007/01/01\n";
saveexit;

==================
以上です。

秀丸メールのバージョン:3.73
OS:Windows 2000

[ ]
RE:30581 信頼できる差出人ファイル更新No.30583
秀まるお2 さん 07/03/11 21:26
 
 tkf_SafeSender.txtファイルが外部で更新されたらちゃんと読み込み直すよう
な処理をしているはずだと思いますが…。タイミング的な問題があるので、たと
えば受信している最中だとダメとか、そういうのがあるのかもしれません。

 その辺はテストしてみないとなんとも言えないのでなんですが、その、
tkf_SafeSender.txtを更新するタイミングが具体的にどのタイミングなのかと、
具体的なマクロの例か何か教えて欲しい所ではあります。

 分からないとしてもそれなりにテストしてみようと思いますけど。(明日)

 あと、アルビレオさんの話にある、LoadAndGetSpamFilter関数は、一度迷惑
メールフィルターがメモリにロードされた後に呼んでも、ただその迷惑メールフ
ィルターのハンドルか何かを返すだけでして、フィルターそのものをロードしな
おすような処理はしてなかったと思います。なので、そのやり方は意味が無いと
思います。(たぶん)

 アルビレオさんも、自分でマクロを作って確かめた訳でないのであれば、あん
まり憶測で返事しないで欲しいです。せめて「憶測ですが」とか「実際に確認し
た訳ではありませんが」とか断って返事して欲しいです。

[ ]
RE:30583 信頼できる差出人ファイル更新No.30584
アルビレオ さん 07/03/12 01:15
 
アルビレオです。

> あと、アルビレオさんの話にある、LoadAndGetSpamFilter関数は、一度迷惑
>メールフィルターがメモリにロードされた後に呼んでも、ただその迷惑メールフ
>ィルターのハンドルか何かを返すだけでして、フィルターそのものをロードしな
>おすような処理はしてなかったと思います。なので、そのやり方は意味が無いと
>思います。(たぶん)
>
> アルビレオさんも、自分でマクロを作って確かめた訳でないのであれば、あん
>まり憶測で返事しないで欲しいです。せめて「憶測ですが」とか「実際に確認し
>た訳ではありませんが」とか断って返事して欲しいです。

すみません、以後確認していない場合ははっきりわかるようにします。
(それと未確認のことはなるべく書かないように)

以前似たような感じのマクロを作りかけて途中でやめた覚えがあるので、はっき
りと確認はしていませんでした。
で、せっかくなので改めて実験してみました。
その結果ですが、秀丸エディタでtkf_SafeSender.txtを書き換えて保存、
LoadAndGetSpamFilter を実行してから振り分けを行うと X-TuruKame-Filter:は
書き換わりました!
でも念のためにtkf_SafeSender.txtを書き換えるだけでマクロを実行せずに振り
分け実行でもX-TuruKame-Filter:は更新されてる…あれれ?
設定ダイアログの「信頼できる差出人」リストもファイルを更新するだけで反映
されています。
どうも外部から更新したときはLoadAndGetSpamFilterを呼ばなくてもちゃんと読
み直すようで、ここらへんを勘違いしていたみたいです。

さらにいろいろ試してみると、読み直しが行われるのは振り分けの実行時と「全
般的な設定」-「迷惑メール対策」で「迷惑メールフィルタの設定」ボタンを押
したときのようで、「迷惑メールフィルタの設定」ダイアログが開いた状態でフ
ァイルを更新すると「信頼できる〜」リストは変化しませんでした。

そんなわけでTUBU-REDさんが確認したときにたまたま「迷惑メールフィルタの設
定」あるいは「信頼できる差出人」ダイアログを開いた状態たったのでリストが
更新されなかっただけで、通常の使用であればファイルを書き換えるだけで問題
ないように思えてきましたがどうでしょうか?
ちなみに私がテストしたのはちょっぴりバージョンが古く、
 秀丸メールVersion 4.67
 Windows XP SP2
です。

[ ]
RE:30584 信頼できる差出人ファイル更新No.30585
TUBU-RED さん 07/03/12 08:29
 
TUBU-REDです。

この問題に時間を割いていただいた皆様に感謝します。

アルビレオさんより、私がマクロを実行していた際に
たまたま・・・・していたのでは?という主旨のお話が
ありました。

前掲コメント最下部にて私の状況を再現する(のに必要最小限な)
マクロを書きましたが、このマクロを「定期送受信中」
に「自動で」起動させると状況は発生します。
他のダイアログが開いていると、定期送受信も起こらない
ので、今回の場合はその条件は当てはまらないかも
しれません。

私も、色々な試行錯誤を繰り返しましたが、
うまく反映されたりされなかったり、どのタイミングが
問題なのか、結局は特定に至りませんでした。ただ、
問題を再現させるマクロを見つけた(前回コメント
最下部掲載)という所です。

前回の私のコメントが長いのでそのマクロの要旨を再掲すると

受信が一段落したあとのマクロにて
A:メールを生成、送信(信頼アドレスが追加される)
B:信頼アドレスのファイルを編集して保存

このとき、Bが反映されない、ということです。

よろしくおねがいいたします。

TUBU-RED

[ ]
RE:30585 信頼できる差出人ファイル更新No.30586
秀まるお2 さん 07/03/12 09:48
 
 マクロの内容が分からないのと、その実行タイミングが「定期送受信中」とい
う意味がいまいちはっきりしませんが…

 「マクロ・マクロ登録...・自動起動」の「受信が一段落した時」に登録して
実行してるってことであれば、タイミング的に、safe senderと判定される可能
性はあると思います。というのはつまり、実行の順番が、

 1番目.送信する
 2番目.受信する
 3番目.マクロ実行

 ということになれば、1番目の「送信する」の段階で信頼できる差出人が新た
に登録されてしまうので、その結果、2番目の「受信する」の処理でsafe
senderと判定されるケースは出てくると思います。

 「全般的な設定・送受信・詳細」の「送信と受信の順番」を「受信してから送
信する」にすればうまくいくかもしれません。

 それと、最初の話にあったように、tkf_SafeSender.txtを書き換えて保存した
はずがうまく読み込み直しされないという可能性もあるのかもしれません。(詳
しく検証してませんが)

-----------

 解決策として、マクロの実行タイミングを「送受信の開始直前」にするといい
かもしれません。ただしその場合は「今すぐ送信」の場合にもマクロが実行され
てしまうので、マクロの先頭に

    if( hidemaruhandle(0) != dllfunc("MainWnd") ) {
        endmacro;
    }

 と入れておく必要があると思います。

 もう1つ、tkf_SafeSender.txtを確実に更新して迷惑メールフィルターに読み
込ませる手段があります。迷惑メールフィルターを使わない設定にしてから
EnvChanged関数を呼び出すと迷惑メールフィルターがアンロードされるので、そ
れからもう一度迷惑メールフィルターを使う設定にしてEnvChanged関数を呼んで
やれば、tkf_SafeSender.txtが確実に読み込み直しされます。

 具体的には、

   openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
   writeregnum "UseFilter", 0;
   #n = dllfunc("EnvChanged");
   writeregnum "UseFilter", 1;
   #n = dllfunc("EnvChanged");
   closereg;

 となります。これをやれば確実にtkf_SafeSender.txtが読み込み直しされるは
ずだと思います。

 それか、そもそも「信頼できる差出人の自動収集」って機能自体をオプション
でOFFにするように、僕の方で迷惑メールフィルターを直す手もありますけど。
そんなに難しい話ではないので、なんでしたら追加してもいいです。

 (そもそもなんでこういうニーズがあるのか分かりませんが)

[ ]
RE:30586 信頼できる差出人ファイル更新No.30589
TUBU-RED さん 07/03/12 14:46
 
ご返答ありがとうございます。

結論から言いますと、最後に紹介して頂きました
レジストリをいじる方法で問題は解決しました。
ありがとうございました。

以下は補足です。

「定期送受信中」について:
これは、設定→全般的な設定→定期受信 にて「定期的に受信する」
がONになっている時に自動で行われる送受信作業のことです。
本体のコマンドにて、能動的に行う送受信(Ctrl+Mなど)と区別する
ためにこのように書きました。


送受信の順番/マクロ起動のタイミングについて:

いずれも検証済ですが、問題の解決には至りませんでした。
蛇足ですが、マクロの実行タイミングを「送受信の開始直前」にする
と「メールを生成して未送信フォルダに保存して閉じる」
という動作が「他の秀丸メールウィンドウがマクロを終了するまで
待っています」というダイアログを引き出し、closehidemaru
が効かなくなり、生成メールが残ってしまいます。


要望の背景について:

1.複数のパソコンから夫と妻が送信。送信情報を一元管理するため
すべて自分にCCを送信。。
2.迷惑メールは目に触れたくない(妻の要望)。
3.迷惑メール判定の失敗による不都合をなくしたい(私の要望)。

という、単純ながら背反する命題を両立させるために、
迷惑メールと判定されたメールに「読まなかったよ」という
返信を出す事にしました。

このことにより、逆にスパムを招来するのではないか、との危惧も
ありましたが、半年の運用にて大きな成果を発揮し、今後もこの方針を
続けたく思っています。

自分から自分に送ったメールの宛先を信頼できる差出人として
自動登録する場合、「受信」アドレスとして登録されます。
この性質を利用して、本当に自分が送信したアドレスと、
自動で生成される迷惑メールへの返信を区別し、片方だけを
登録したいと思ったわけです。

長文失礼いたしました。
秀丸メールの発展を心よりお祈りしています。
(そして頼りにしています)

TUBU-RED

[ ]