Exchangeは同じメッセージと思われる物を短期間に同じメールボックスで複数受信した場合、2通目以降のメールは重複としてドロップされ、メールボックスに配信されません。
何らかの事情で同じメールを複数回受信する必要がある場合(例えば、Exchange外でメールアーカイブを利用していて、誤ってExchangeで消してしまったメールをアーカイブから再送する場合など)には2通目のメールが受け取れない事があるので注意が必要です。
同じメッセージと見なされる条件は以下の通りです。
- 同一のMessageIDヘッダであること
- 同一のDateヘッダであること
- 同一のメールボックスへの配送であること
これは、Exchange Onlineにおいても同じ動作をします。例えばTo:に直接自分のアドレス、Cc:にメーリングリスト(配布グループ)を指定して送ったような場合は、1通しか届きません。
外部のメーリングリストを利用していて、付与されたサブジェクトや、Reply-Toを元にメーリングリスト毎にフォルダ分けをしていた場合など、自分がToに入っている物は通常そちらが先に届いてしまって、そのフォルダに欠番がでてしまう様な形になり、影響を受けます。
また、これらの情報がキャッシュされている期間について、Exchange Server 2010まではデフォルトで1時間で、その時間はレジストリによりチューニング可能でしたが、クラウドサービスであるExchange Onlineについては当然そんなチューニングはできません。
というわけで、デフォルト値を調べてみたいと思います。まずは、適当にスクリプトを作って5分に1回同じMessage IDとDateヘッダのメールを流し続けます。PowerShellで組むの面倒だったので、適当にbashから以下を無限ループで実行し続けます。
while : do cat <<EOM | sendmail test@example.com From: test@example.com To:test@example.com Date: Wed, 25 Feb 2015 00:00:00 +0900 Message-ID: <201502250000.00000@localhost.localdomain> Subject:`date`: test mail This is test. . EOM sleep 300 done
すぐに最初のメールが届きます。(2/25 00:28:58)
さて、何時間待ったら次のメールが届くでしょうか?1時間待っても届きません。
現在。8時間待っても届いてません。(メッセージ追跡を見るとPendingになってます)
皆さんは何時間だと思います? いくつか選択肢を。
1日…キリがいい2/26配信されませんでした2日…Exchangeのキューイング期間2/27配信されませんでした5日…一般的な MTAのキューイング期間3/2まだ配信されません1週間…キリがいい無期限…再起動されたり、フェールオーバーすると消える特に決まってない…容量だけ決まってて自動的に上書きされる
(3/4 追記)
3/4 16:07:39 7日+16時間で来ました。
ちょっと半端な時間ですね…。比較的長い時間が設定されていて、ある程度流れるとローテーションされるということなのですかね?
(3/5 追記)
3/5 16:08:08 ちょうど24時間で届きました。
ということは、昨日新しいモジュールが展開されて仕様が24時間に変わったということでしょうか!?
続きはこちらの記事で
Pingback: メールヘッダでExchange Onlineの構成を推測 | 日々徒然
Pingback: DuplicateDeliverによる配信不可 | 日々徒然