Outlookの「仕分けルール」が期待通りに動作しない現象を10年越しで解決しました
要点
昔話を絡めて長々と書いてしまいましたが、要点は以下の通りです。
- Outlookの「仕分けルール」では、Microsoft Exchange Server管理の内部メールアドレスはSMTP形式メールアドレスではなく以下のようなX.500形式のアドレスとして扱われる。なので「address@example.com」といった文字列だと条件にマッチしない。
/O=Microsoft/OU=EXCHANGE ADMINISTRATIVE GROUP (XXXXXXXX)/CN=RECIPIENTS/CN=[名前]
- 問題解決に当たっては前向きな気持ちが大事
昔話含めて詳しい事を読みたい方は以下からどうぞ。
はじめに
以前勤めていた会社はその昔、メールソフトはSMTP/POP3を使用できるものであればなんでもOKだったのですが、ある時からメールサーバがMicrosoft Exchange Serverに切り替わり、使用できるメールソフトはMicrosoft Outlookのみとなりました。それまで「Becky!」や「Thunderbird」や「秀丸メール」といったメールソフトを使っていた人(私もです)は、検索機能などイマイチな部分があるOutlookを使わざるを得ない事を、大変不満に思っていました。
しかし、予定表やSkype for Businessとの連携がとても便利である事に気づき、もはや他のメーラーが代替となる事はできず、「Outlookは一部不便なところがあるが、仕方がないので我慢して使おう」と割り切る事にしました。
それから10年ほど経ち、今の職場でもOutlookを使う事になったので改めて色々調査したら当時から不満に思っていた以下の事象が最近解決したので書いておきます。
Outlookで不満に思っていた事(仕分けルールについて)
Outlookの「仕分けルール」を使うと、送信者メールアドレスおよび受信者メールアドレスによって格納フォルダを自動で振り分けるなどが出来、メールボックスを整理するのに便利です。
が、以下のように期待通りの動作をしない事が以前からありました。
- 送信者または受信者のメールアドレス(例:address@example.com)内文字列の全部、または一部が一致する事を条件にして仕分けをしても、該当する筈のメールが仕分けされない事がある
- 仕分けルール作成時にメールアドレスを入力せず、仕分けをしたいメールを選んで作成すると仕分けされる
Thunderbirdや秀丸メールといった他のメーラの「仕分けルール」相当のメール振り分け機能では問題なく仕分けできていた事がOutlookでは出来ないように思われ、なんでだろうと思いつつ「Outlookの使い勝手の悪さは仕方がない」とあきらめてしまい、原因特定をせずにいました。
転機、そして解決へ
が、最近ふとしたことで以下の条件で発生する事がわかりました。
・メールサーバがMicrosoft Exchange Serverを利用している事
・仕分け対象のメールアドレスが自組織のもの(たとえば会社なら所属社員のメールアドレス)である事
Microsoft Exchange Serverを利用している場合、Outlookで自組織のメールアドレスは「address@example.com」という形式ではなく「ばた64 太郎」というような名前そのものとして表示されるようです。この事自体もなんでなんだろうとずっと思っていました。
そしてさらに調べた結果、以下サイトにたどり着きました。
私が長年不便だなあと思っていた事が議論されています。ここからさらに、
Create rules that apply to an entire domain
というサイトが紹介されており、この中に以下のような記述があります。
To apply a rule only to internal Exchange email, create a rule that applies to all mail and add an exception for messages with @ in the sender's address. Internal Exchange email does not use a SMTP address and therefore, does not contain an @ sign. If you don't want to use Exceptions, you can look for /ou in the address instead.
Exchangeで管理されているメールアドレス(internal Exchange email)は、仕分けルールにおいてSMTP形式のメールアドレス(address@example.comみたいなの)で表現されないので条件マッチさせたい場合は「/ou」というキーワードで仕分けルールを作るとよい、というような事が書いています。
これに従って、
- 自社メールアドレスが送信者のメールを仕分けたい場合は「/ou」を含む事を条件とする
- 逆に自社メールアドレスが含まれない場合を条件にしたい場合は「/ou」を含む場合を例外として設定する
という事が出来るようになりました。
そして更に、職場のOutlookのアドレス帳内にて、「X.500」という形式で自分のメールアドレスが表現されている事に最近気づきました。具体的には以下のようなものです。
/O=Microsoft/OU=EXCHANGE ADMINISTRATIVE GROUP (XXXXXXXX)/CN=RECIPIENTS/CN=[名前] (XXXXXXXXは数字、[名前]はメールアドレスのアドレスパート)
ここまで気づいたら後はGoogleで調べて以下の情報に行き当たりました。「メール仕分け」においてはSMTP形式ではなく、X.500形式のアドレスが使用されるため、アドレス@ドメイン といった文字列に条件マッチさせるルールだと条件を一致させることができないという事のようです。
Exchange 環境における電子メール アドレス = LegacyExchangeDN
Exchange 環境における電子メール アドレス = LegacyExchangeDNoutlooklab.wordpress.com
Microsoft Exchange Server 環境にて、「送信者」「受信者」に「特定の文字」が含まれるルールを実行した場合、正常に動作しない。
https://support.microsoft.com/ja-jp/help/2789748support.microsoft.com
私は「自社から送信されたメール」という条件で仕分けがしたくて、自社ドメインを仕分け条件にしていたのですが、X.500形式のアドレスにはドメインが無いのでマッチしないわけです。という事で「/OU=EXCHANGE」という文字列の一部「/ou」が含まれているかどうかで判定可能、という事なんですね。
なお、上述のMicrosoftのサポートサイトにおいては以下のような対策例が提示されています。
例:
- /o=Microsoft が含まれていたら自社メールアドレスと判断する
- @の有無で自社メールアドレスかどうか(無かったら自社である)判断する