重複メッセージの除去(Exchange Online)

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

20150225_01

すぐに最初のメールが届きます。(2/25 00:28:58)
20150225_02

さて、何時間待ったら次のメールが届くでしょうか?1時間待っても届きません。

現在。8時間待っても届いてません。(メッセージ追跡を見るとPendingになってます)
20150225_00

皆さんは何時間だと思います? いくつか選択肢を。

  • 1日…キリがいい 2/26配信されませんでした
  • 2日…Exchangeのキューイング期間 2/27配信されませんでした
  • 5日…一般的な MTAのキューイング期間 3/2まだ配信されません
  • 1週間…キリがいい
  • 無期限…再起動されたり、フェールオーバーすると消える
  • 特に決まってない…容量だけ決まってて自動的に上書きされる

(3/4 追記)
3/4 16:07:39 7日+16時間で来ました。

20150304_02

ちょっと半端な時間ですね…。比較的長い時間が設定されていて、ある程度流れるとローテーションされるということなのですかね?

(3/5 追記)
3/5 16:08:08 ちょうど24時間で届きました。

ということは、昨日新しいモジュールが展開されて仕様が24時間に変わったということでしょうか!?

続きはこちらの記事

2 thoughts on “重複メッセージの除去(Exchange Online)

  1. Pingback: メールヘッダでExchange Onlineの構成を推測 | 日々徒然

  2. Pingback: DuplicateDeliverによる配信不可 | 日々徒然

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です