Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ

メール・ルール処理の優先度に注意

解説をスキップして操作方法を読む

デジタルアドバンテージ
2004/05/29
 
対象ソフトウェア
Outlook 2003
Outlook Express
複数のメール・ルールを定義する場合、条件にマッチするルールが2つ以上あると、その順番や処理内容によっては意図したとおりに動作しないことがある。
あるルールの適用後、ほかのルールを適用させたくない場合は、ルール処理を中断させるアクションを明示的に定義する必要がある。
デフォルトのルールを表現するには、ルール定義リストの先頭に置くか、各ルールの最後に必ず処理の中断アクションを置くようにする。
 
解説

 Windows TIPS「メッセージ・ルールを活用する(Outlook Express編)」では、メールの自動分類などに利用できる、メッセージ・ルール(以下、Outlook 2003の「仕訳ルール」とまとめて、メール・ルールと呼ぶことにする)の使い方について解説した。メール・ルールとは、受信したメールがある「条件」にマッチした場合、指定された「アクション」を実行するというものである。

メール・ルールの例
これはOutlook Expressのメール・ルール(Outlook Expressでは「メッセージ・ルール」という)の例。ルールの一覧は[ツール]メニューの[メッセージ ルール]−[メール](Outlook Expressの場合)、もしくは[ツール]メニューの[仕訳ルールと通知](Outlook 2003の場合)で確認することができる。
  定義されたルールの一覧。
  これをクリックすると、選択したルールの位置(優先度)が上へ移動する。上位にあるルールの方が先に処理される。
  これをクリックすると、選択したルールの位置(優先度)が下へ移動する。
  現在選択されているルールの内容。青字の部分をクリックすると、その値や条件などを変更することができる。

 このように、メール・ルールは複数定義することができ、さまざま条件でフォルダに分類したり、削除したり、メール・メッセージの表示色を変更したりできる。

 ところでこのダイアログを見ると、各ルールの順番(処理順序)を変更するための[上へ]と[下へ]という2つのボタンがある(画面中の)。Outlook 2003の[仕訳ルールと通知]ダイアログにも同様に、ルールの並び順を変更するための[↑(上へ)]と[↓(下へ)]という2つのボタンが用意されている。あるルールを選択してからこれらのボタンをクリックすることにより、ルールの置かれる位置が変わり、その処理の順番が変更される。

複数メール・ルールの挙動に注意

 さてこのように複数のルールが定義されている場合、あるメール・メッセージが2つ以上のルール(条件)にマッチしたとすると、どのように動作するだろうか。直感的には次の図のように、ある条件にマッチすると、それに該当するアクションが実行され、このメールに対する処理はそこで終了し(図中の「STOP」)、次のメール・メッセージの処理(マッチする条件の検索とアクションの実行)へ移ると考えられる。

期待するメール・ルールの処理手順
直感的には、複数のルールが定義されていても、最初に条件にマッチしたルールのアクションのみが実行され、そのメール・メッセージに対する処理は終了すると考えられる。次のメール・メッセージを取得後は、また一番上のメール・ルールから処理(マッチする条件の検索とアクションの実行)が行われる。1つのメールに適用されるルールは1つだけということである。

 あるメール・メッセージがたとえ複数のルールにマッチするとしても(マッチするルールが複数定義されているとしても)、一番上にある1つのルールのみが実行されると考えられる。これは、例えばルータにおけるパケット・フィルタの処理で行われている挙動である。ルータのパケット・フィルタでは、ある特定のプロトコルやIPアドレス、ポート・番号などで条件を定義し、それにマッチした場合は、パケットを通過させたり、ブロック(拒否/破棄)させたりする。例えばTCPの80番ポートに対するアクセスだけを許可すると、Webサーバに対するアクセスだけを許可することができる。

 だがOutlook ExpressやOutlook 2003における実際のメール・ルールの処理は、このような動作にはなっていない。ある条件にマッチするルールを見つけると、そのアクションを実行した後、さらに次のルールとマッチするかどうかが調べられるのである。つまり、あるアクションを実行しても、メール・ルールの処理はそこでは終了せず、次のルールの処理へと進む。その結果、すべてのルールが処理され、条件にマッチすれば、そのアクションが実行される。これを図にすると、次のようになる。

実際のメール・ルールの処理手順
ある条件にマッチするルールのアクションを実行しても処理はそこで終了・中断せず、次のルールの処理(マッチする条件の検索とアクションの実行)が行われる。このようにしてすべてのルールに対して上から順番に処理が行われる。条件にマッチするメールが複数存在すれば、そのアクションはすべて実行される。

 もしあるメールにマッチするメール・ルールが1つしか定義されていなければ、このような挙動でも問題はない。メールはどれか1つの条件にかマッチせず、実行されるアクションもただ1つしかないからである。

 だがもし複数の条件にマッチするようなら、複数のアクションが実行されることになる。お互いに影響のないアクションならばそれらが順番に実行されるだけだが、同じ操作を行うアクションの場合は注意が必要である。例えばアクション1が「フォルダ1への移動」、アクション2が「フォルダ2への移動」ならば、受信したメールはまずフォルダ1へ移動するが、すぐにアクション2が適用され、最終的にはフォルダ2へ移動することになる。


操作方法

ルールの実行を中断させるには

 このような事態を防ぎ、意図したとおりにルールを適用させるには、各アクションの最後で、それ以上の処理を中止させるという処理を行えばよい。Outlook Expressでは[ルールの処理を中止する]という処理を選択すればよいし、Outlook 2003の場合は[仕訳ルールの処理を中止する]という処理を選択する。デフォルトではこの処理は忘れがちなので、注意が必要である。

Outlook Expressにおける処理の中断ルール
あるルールのアクションを実行後、もうそれ以上ルールを適用させたくなければ、ルールの処理を明示的に中断させる必要がある。
  必要なアクションのほかに、この[ルールの処理を中止する]というアクションも同時に選択する。
  追加されたアクション。このアクションにより、これ以上のルールの条件検索は行われず、次のメールの処理へ移行する。

 Outlook 2003の場合もほぼ同様のアクションが用意されているので、それを利用する。Outlook 2003ではアイコンを使ってアクションの内容を分かりやすく表示しており、処理の中断は「×」印のような形のアイコンで表されている。

Outlook 2003における処理の中断ルール
Outlook 2003では、メール・ルールで利用可能な条件やアクションの数が多い。またアイコンを使って処理内容を表示するなど、分かりやすくなっている。
  現在定義されているルール。ここでは1つだけ定義している。
  アクションの内容を表すアイコン。これは指定したフォルダへの移動を表している。
  これは現在のルールの処理後、後続のルールの適用を行わず、ここで処理を中断させるという意味のアイコン。次のを選択すると表示される。
  ルールの処理を中断し、これ以降のルールの適用をキャンセルするというアクション。
  追加で指定されたアクション。

デフォルト・ルールの記述について

 ところで、メール・ルールを多数定義してメールを細かく各フォルダに分類したあと、それ以外のすべてのメール(どのルールにもマッチしないメール)をまとめて、例えば「未整理フォルダ」というフォルダに分類したいとする。分類フォルダの内容は、あとで必要に応じて手動で整理したり、まとめて削除したりすればよいだろう。

 このような処理を行うためには、どのルールにもマッチしない場合に実行される、デフォルトのメール・ルールを定義すればよい。具体的には、次のいずれかの方法が利用できる。

■方法1―すべてのアクションにおいて「処理の中断」を行う
 まずすべてのルールのアクション部において、その最後に「処理の中断」という動作を選択しておく。そしてルール定義リストの一番下(一番最後に実行されるルール)に、「すべてのメールに対して、未整理フォルダへ移動する」というルールを新たに定義すればよい。こうしておけば、条件がマッチしたアクションは実行されるが、その最後に処理の中断があるので、それ以上の処理は行われなくなる。そして、どの条件にもマッチしない場合に限って、最後のルールが適用されることになる。なお「すべてのメールに対して」という条件を指定するには、Outlook Expressでは[すべてのメッセージに適用する]というチェック・ボックスを選択する。Outlook 2003の場合は、仕分けルールの条件部において、チェック・ボックスを1つも選択しない状態にすればよい。こうするとすべてのメールにマッチするという条件になる。

 この方法は、いわば正攻法とでもいうべき方法であるが、いちいち各アクションの最後に「処理の中断」という動作を入れなければならない。もしそれを忘れていると、意図しない動作(分類したはずのメールがすべて未整理フォルダへ移動させられる)が起こる可能性があるので注意が必要である。そこで、次のような方法を使うのもよいだろう。

■方法2―デフォルト・ルールをルール定義リストの先頭に置く
 複数のルールが存在している場合、ルール定義リストの先頭から順番に実行され、同じ処理ならば後のルールの方が意味を持つ、という挙動を生かしたのがこの方法である。「すべてのメールに対して、未整理フォルダへ移動する」というルールを定義リストの先頭に挿入しておく。当然このルールは一番最初に実行されるが、もし後続のルールにマッチしてフォルダ移動が行われれば、そちらが意味を持つ。この結果、後続のどのルールにもマッチしない場合に限って、未整理フォルダへ移動することになる。方法1と違って、各ルールの最後に「処理の中断」という動作を入れなくてもよいし、もし入れ忘れたとしても、動作には影響はない。

 以上の方法を組み合わせれば、もっと複雑な条件やアクションを記述できるので、工夫してみてほしい。例えば、送信者アドレスによってメールの色を分類して、どこの社のだれの発言かを分かりやすくする例を考えてみよう。自組織(自社)ドメインが送信元になっているメールを青色にし、さらにその中でも特に自分が出したメールは赤色にしてみる。この場合のルールとしては、まず先頭に「送信者アドレスが“@example.co.jp”ならメールを青にする」というルールを定義し、2番目には「送信者アドレスが“myaddress@example.co.jp”ならメールを赤色にする」というルールを定義する。いずれのルールでも、フォルダ移動などはなく、単にメールの件名の色が変わるだけである。これにより、後続のフォルダ分けルールに影響を与えることなくメールの色を変更することができる。End of Article

関連記事
  Windows TIPS:メッセージ・ルールを活用する(Outlook Express編)(Windows Server Insider)
  Windows TIPS:Outlook Expressのメッセージ・ルールをバックアップする方法(Windows Server Insider)
  Windows TIPS:メッセージ・ルールを活用する(Outlook 2003編)(Windows Server Insider)
     
「Windows TIPS」

@IT Special

- PR -

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間
ソリューションFLASH