― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2016年10月28日(金) 11:33 
オフライン

登録日時: 2016年10月28日(金) 11:18
記事: 2
どなたかお知恵をお貸しください。

IMAPのメールに対してフィルタをかけようとしています。

ある条件でフォルダに移動させているのですが、フィルタの条件が被ってしまうメールがあり、
フィルタリング時に2つのフォルダを行ったり来たりします。

>フィルタA 件名が「aaa」で始まるメッセージを「AAA」フォルダに移動
>フィルタB 差出人に「bbb.ccc.jp」を含むメッセージを「BBB」フォルダに移動

この条件で「bbb.ccc.jp」から件名「aaa」から始まるメールが届くと「AAA」と「BBB」フォルダ間を行ったり来たりします。

件名の「aaa」はMLなどに付いてくる定型文字列でMLのフォルダとしています。
フィルタは上から順に評価されるとのことですが、私の環境の場合、受信トレイ下の階層にフォルダが作られてしまうため、
フォルダに移動してからもフィルタリングの対象と見られてしまう様です。

フィルタの適用は一つのメールに対して一回だけにするなど、何か良い解決策はございませんでしょうか?
長文失礼いたしました。

_________________
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年10月29日(土) 08:32 
※質問するときは、「フォーラムの利用に関するご案内」、とりわけ「質問するときは」に目を通し、OS の種類や Thunderbird のバージョンといった使用環境についての最低限の情報を書き添えることをお勧めします。

ご利用の環境条件や IMAP サーバーの条件など、具体的な運用状況がよくわかりませんので、さしあたり Thunderbird のメッセージフィルタに関する一般論だけ......。

BBAB さんが書きました:
この条件で「bbb.ccc.jp」から件名「aaa」から始まるメールが届くと「AAA」と「BBB」フォルダ間を行ったり来たりします。

"行ったり来たり" という状態がどういうものかよくわかりませんし、それが Thunderbird(本体またはアドオン等)の不具合として起こっているのか、メッセージフィルタの条件付けに不備があって衝突や矛盾が起こっているためなのか、いまある情報ではそのあたりもわかりません。

BBAB さんが書きました:
>フィルタA 件名が「aaa」で始まるメッセージを「AAA」フォルダに移動
>フィルタB 差出人に「bbb.ccc.jp」を含むメッセージを「BBB」フォルダに移動

「フィルタA」と「フィルタB」、それぞれ実際にどのようなフィルタ条件を設定しておられますか?

"差出人が「bbb.ccc.jp」で件名が「aaa」から始まるメール" が届いたとき、つまり受信したメールが「フィルタA」と「フィルタB」両方の条件に合致するとき、確実に実行したい動作はどれですか?
(a)件名を優先して「AAA」フォルダに移動したい
(b)差出人を優先して「BBB」フォルダに移動したい
(c)内容によって移動先フォルダを判断したい
(d)その他(具体的に説明してください)

(a)の場合、差出人が bbb.ccc.jp からのメールであっても、件名が aaa で始まる場合は、そちらを優先して AAA フォルダに移動するという意味になります。別の言い方をするなら、bbb.ccc.jp からのメールは、件名が aaa で始まらないものだけを BBB フォルダに移動させるという意味になるでしょう。

(b)の場合、件名がどうであれ、差出人が bbb.ccc.jp なら無条件で BBB フォルダに移動させるという意味になります。

(c)の場合、メッセージフィルタではご希望の動作を実現できません。なぜなら、受信のつど内容を見てユーザーが判断するようなものは、メッセージフィルタで事前に条件を固定できないため、自動的な処理もまたできないからです。

このうち、参考として(a)の例を挙げておきます。
あくまで、ご提示の情報(「フィルタA」と「フィルタB」の2つの条件)だけを前提にしたものです。他にも多くのフィルタ条件が設けられているのなら、それらの内容を考慮すべき必要もあるかと思います。
------------------------------------------------
[フィルタ1]
◉ すべての条件に一致
 [差出人] - [に次を含む] - [bbb.ccc.jp]
 [件名] - [に次を含まない] - [aaa]
以下の動作を実行する:
 [メッセージを移動する] - [BBB]

[フィルタ2]
 [件名] - [が次で始まる] - [aaa]
以下の動作を実行する:
 [メッセージを移動する] - [AAA]
------------------------------------------------
(動作概要)
「フィルタは上から順に評価される」の優先順位に従い、まず [フィルタ1] が適用されます。
ここでは、差出人が bbb.ccc.jp で、なおかつ件名に aaa を含まない(*) メールが判定され、BBB フォルダへの移動が実行されます。
次に [フィルタ2] が適用されます。
件名が aaa で始まるメールが判定され、一律に AAA フォルダへの移動が実行されます。[フィルタ1] では、差出人が bbb.ccc.jp でも件名に aaa を含むメールは BBB フォルダに移動されませんから、[フィルタ2] ですくい上げられると思います。

(*) [件名] については、[が次で始まらない] という項目が存在しないので、[に次を含まない] としてあります。もし差出人が bbb.ccc.jp のメールの件名のどこかに aaa の文字列を含む場合、[フィルタ1] では BBB フォルダに移動されないケースが起こりえます。aaa が一般的な文言であるほど、この確率は高くなるでしょう。(関連=下記補足)

(考察)
Thunderbird のメッセージフィルタが正常に働いているのなら、フィルタ条件に衝突や矛盾が起こらないよう指定条件の精度を高めることで、問題が改善されるかもしれません。
しかし、フィルタ条件に衝突や矛盾がないよう正確に設定しても問題が再発するなら、Thunderbird まわり(本体またはアドオン)に何らかの問題が起こっているのかもしれません。
IMAP サーバー側でのメールの振り分け機能を使っているなど、IMAP サーバー側の設定内容と Thunderbird の関係が影響を及ぼしているケースも否定しきれないと思います。
Thunderbird 側で mail.server.default.applyIncomingFilters のようなオプション設定を追加しているとか、アドオンなどで何かしらのカスタマイズを施しているのなら、一度「セーフモード」や「新しいプロファイル」で Thunderbird を素の状態に戻して動作を点検・比較したほうがいいこともあるかと思います。
(参考)
・Thunderbird のセーフモード | Thunderbird ヘルプ
https://support.mozilla.org/ja/kb/safe-mode
・複数のプロファイルを使用する | Thunderbird ヘルプ
https://support.mozilla.org/ja/kb/using ... e-profiles

BBAB さんの実際の環境条件、Thunderbird の設定内容やアドオンの導入状況、IMAP サーバー側の事情、現用のメッセージフィルタの全体像などによっては、さらに工夫すべき事項があるかもしれないことを留意の上、ご自身の運用状況を再点検してみてください。

(補足)
BBAB さんが書きました:
件名の「aaa」はMLなどに付いてくる定型文字列でMLのフォルダとしています。

メーリングリストの場合、受信したメールには必ず Reply-To のメールヘッダが含まれ、そこにはメーリングリストのアドレスが記述されているはずです。
メッセージフィルタの [フィルタの設定] ウィンドウで、条件のドロップダウンメニュー最下段にある [カスタムヘッダ...] から Reply-To を追加し、
 [Reply-To] - [に次を含む / が次と一致する] - [(メーリングリストのアドレス)]
のようにしても、特定のメーリングリストであることの条件付けができます。
aaa のような件名に含まれる定型文字列の場合、同じ文字列を含む(始まる)メールが来る可能性もゼロではありません。しかし、Reply-To はメーリングリスト固有の値(アドレス)が入っているので、件名に含まれる文字列で判定するよりも、確実性が高いと思います。
これを応用すると、件名を対象にしないで上記の設定内容と同じことができるはずです。

とりあえず以上です。的外れな話になっていたらすみません。

_________________
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0


通報する
ページトップ
  
引用付きで返信する  
投稿記事Posted: 2016年10月29日(土) 12:28 
オフライン
Moderator

登録日時: 2007年7月20日(金) 14:46
記事: 370
メッセージフィルタでメッセージ本体を移動するだけでなく、
検索フォルダとメッセージタグも組み合わせてはどうでしょうか。

検索フォルダの使い方 | Thunderbird ヘルプ

_________________
mar
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0

通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年10月29日(土) 13:20 
オフライン

登録日時: 2013年12月26日(木) 09:33
記事: 686
お住まい: 太陽系、地球、日本、ふてニャン県
BBAB さんが書きました:
ある条件でフォルダに移動させているのですが、フィルタの条件が被ってしまうメールがあり、
フィルタリング時に2つのフォルダを行ったり来たりします。
>フィルタA 件名が「aaa」で始まるメッセージを「AAA」フォルダに移動
>フィルタB 差出人に「bbb.ccc.jp」を含むメッセージを「BBB」フォルダに移動
この条件で、(メールX) 「bbb.ccc.jp」から件名「aaa」から始まるメール、が届くと「AAA」と「BBB」フォルダ間を行ったり来たりします。
(メールX)は、説明の都合上、私がつけたものです。

説明だけでは、手動でフィルターを適用した時の話なのか、新規メッセージに自動でフィルターが適用された時の話なのか、不明だし、
実際に何が行われて何が起こっているのかも不明なので、
両方のケースについて、私が知っている、そのフィルタールールだけで起こり得るかもしれない「メッセージフィルターによってフォルダ間を行ったり来たり」のケースについて書いておきます。

[手動でフィルターを適用した場合で、バグが関係する場合]

(A) 「AAA」フォルダでフィルタを適用
「AAA」フォルダに(メールX)がある時は、(メールX)が、先にフィルタAにヒットして「AAA」フォルダに移動、になるはずだが、
既に「AAA」フォルダにあるから「移動ではない」になってしまうようで、ここでは終わってくれず、
下のフィルタBが適用され、ヒットして「BBB」フォルダに移動される。
(B) 「BBB」フォルダでフィルタを適用
「BBB」フォルダに(メールX)がある時は、定義通りに、(メールX)が、先にフィルタAにヒットして「AAA」フォルダに移動される。
という風になります。

(B)の方は、フィルターの定義がそうなっているんだから、当然です。
しかし、(A)の方は、順番通りにルールが適用されていないように見えて、ちょっといやらしいですね。
バグなんですが、既に解決していたかもしれません。

[IMAPで、Namespaceが使用されていなくて、新規メッセージに自動でフィルターが適用される場合]

(A)新規メッセージの自動的なチェックを行っている。
(Bー1)Inbox/AAA、Inbox/BBBのフォルダープロパティーで、新規メールチェックの時にこのフォルダーを含む、の設定をしている、
(B-2)あるいは、サーバー設定でIDLEコマンドの使用を許可し、サーバーがIDLEコマンドをサポートしていて、
フィルターがInbox/AAA、Inbox/BBBにメールを移動したあと、
Cached Connectionsに余裕があるので、Inbox/AAA、Inbox/BBBを開かれたままの状態にできる。
(C)Inbox以外でも新規メッセージに対する自動的なメッセージフィルターを行わせる、特別な設定を行っている。
  メッセージフィルターでのメールの移動の無限ループが起こり得るので、この設定は、デフォールトではオフ。

これを行っていると、
(1) (メールX)が、フィルターにより、Inbox⇒Inbox/AAAに移動される
(2) Inbox/AAAで、(メールX)が新規メッセージとして検知され、フィルターが適用される。
その時に、上記の(A)の問題が起こると、(メールX)がInbox/BBBに移動される。
(3) Inbox/BBBで、(メールX)が新規メッセージとして検知され、フィルターが適用される。
その時に、フィルターがそのように定義してあるから、(メールX)はInbox/AAAに移動される。
(4) Inbox/AAAに於いて(メールX)は新規メッセージだから、(2)が起こり、(2)/(3)が繰り返される。
ということが起こり得ます。

Namespace=INBOX/(or INBOX.)の時は、
(D)Inboxの子供の場合、(B-1)の設定をしなくても、(B-1)の設定がされている時と同様に新規メールのチェックに行く、
ということが、起こったかもしれません。
Namespaceに関係なく、IMAPでInboxの子供の時は必ず、だったかもしれませんけど。
理由は、そういった要求があったからなのか、特殊な条件の時の問題回避のためかは知りませんが、Inboxの子供はInboxと同じように扱う、というようなコードは、読んだことがあります。
IMAPでTrashとInbox/Trashの両方があるとどちらもごみ箱フォルダになる、というケースの時だったかもしれませんが。
でも、
(E)Inboxの子供の場合、(C)の設定をしなくても、(C)の設定がされている時と同様に自動的にフィルターを適用する、
というような問題は、記憶にありません。

IMAPで(C)を行っていて自動でフィルターが適用される場合の話ならば、(C)を止めれば済む話になりますが、
手動であれ自動であれ、こういった問題で、どうにも避けようがない場合には、
一回しかフィルタールールが適用されないように、タグなどを活用するといいかもしれません。
 フィルタA:タグがTagAを含まない&&件名が「aaa」で始まる => TagA/TagBをつけて、「AAA」フォルダに移動
 フィルタB:タグがTagBを含まない&&差出人に「bbb.ccc.jp」を含む => TagA/TagBをつけて、「BBB」フォルダに移動
一度TagA/TagBをつけておけば、タグがつけられないというようなバグに遭遇しない限り、次回からは条件にヒットしません。
AlreadyFilteredというような共有のタグやスターでも構いませんし、未読の条件・既読に変える、のセットでも構いません。

IMAPの場合は、以下のような回避策も考えられます。
ー 新規メッセージはUnread(未読)メールだけ、ということを利用して、フィルターで既読に変えて置き、必要ならタグやスターをつけておく。
  こうすれば、フィルターで移動したメールに対しては、新規メッセージに対する自動的なフィルターは適用されないはず。
ー サーバー側のフィルターを活用して、メーラー側でのフィルターは止める。
ー メールの移動先を、他の全部Inboxの下ではないIMAPサーバーのフォルダー(たとえばGmail IMAP)や、
  ローカルのフォルダー(ローカルフォルダ、ダミーのPOP3サーバー)ーに変える。

ご参考までに。

[追記]
定義の順番に依存しない、曖昧さのないフィルターの定義、というのも、こういった問題に対しては有効です。
 If From doesn't contain a@a.a.a && Subject contains AAA, Move to AAA
 If From doesn't contain a@a.a.a && Subject doesn't contain AAA, Move to CCC
 If From contains a@a.a.a && Subject contains AAA, Move to BBB
 If From contains a@a.a.a && Subject doesn't contain AAA, Move to BBB
たとえ、バグのせいで、メールがAAAフォルダにあるとMove to AAAが無視されたとしても、
他のフィルタールールによってそのメールが他のフォルダーに移動されることは、どういう順番で定義したとしても、起こらないから、
たとえバグがあったとしても、AAAフォルダに留まることになり、一件落着。

仕様的には、先に定義してある ... Move to AAAのところで、Move to AAA、Stop further filter execution、と、書く必要がないStop further filter executionをいれておけば、バグの回避策になるはずだけれど、
Stop further filter executionを指定した時のバグはまだ完全には解決していなかった気がするし、
Move to AAAを無視する時はその後のアクションも無視するかもしれないので、非常にリスキーです。
ご注意を。
[追記おわり]


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年10月31日(月) 10:25 
オフライン

登録日時: 2016年10月28日(金) 11:18
記事: 2
みなさま

丁寧なご提案ありがとうございました。
なんとなく解が見つかりそうです。

・一度フィルタにかかったメールはスター付きにする。
・スター付きのメールにはフィルタをかけない。

この条件でフィルタを作ってみます。

ありがとうございました。


:D

_________________
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2016年11月28日(月) 15:37 
オフライン

登録日時: 2013年12月26日(木) 09:33
記事: 686
お住まい: 太陽系、地球、日本、ふてニャン県
Bugzilla.mozilla.orgで、Bug 1215933 に遭遇しました。
BBAB さんがご覧になった現象そのもので、Thunderbird 45で簡単に再現しました。
見ていると未読数がころころ変わって面白いのですが、無限ループなので、フィルターログを有効にしている場合には放っておくといずれディスクを使い切るし、サーバーにはえらい迷惑をかけるし、一度「オフライン作業」にしてループを止めても、ループが止まってくれる何らかのアクションをとらない限り、「オンライン作業」に戻した途端にまた無限ループが始まりますから、厄介な問題ですね。

フィルターの定義で"Filter after Junk Classification"を使用している時の問題で、今までは起こっていなかったようなので、Thunderbird 45からの新しい問題のようです、
以下の問題は Bug 232569 で、以前一度起こらなくなっていて、Thunderbird 45では問題が起こりましたから、Bug 232569 が再び起こるようになった、ということのような気がします。
メールX : Subject=aaa...
フィルタールール#1 : If subject begins with aaa, move to Folder1
フィルタールール#2 : If subject begins with aaa, move to Folder2
Folder1にメールXがある時にFolder1で"Run filters on folder"を行うと、Folder2に移動される。

"Filter after Junk Classification"を使用している時の問題なので、
"Filter after Junk Classification"を止めて"Filter before Junk Classification"にする、
というのが、一番楽な回避策になるでしょう。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 6 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[85人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean