メールクライアントからのメール通信時に複数の同じ内容のメールが送られてしまう現象とその原因 new!
メールクライアント(Outlook)からメールを1通送信したところ、相手に同じ内容のメールが6通届いた、というお問い合わせをいただいたことがあります。
ログを確認すると、SMTP送信ログ(outlog)に記録されたメッセージIDは6通ともすべて異なり、配送時の詳細ログ(senderlog)にリトライの記録はなく、配送失敗ログ(faillog)にも記録はありませんでした。
本記事では、このような現象の切り分け方と、考えられる原因、対策を説明します。
メッセージIDが同じか異なるかが、切り分けのポイント
同じ内容のメールが複数届いたときは、まずログで、それぞれのメールのメッセージID(“B”で始まる10桁の連番)を確認します。
・メッセージIDが同じ場合 → E-Post側の配送段階(epstdd サービス)で、同じメールが重複して送られている可能性があります。下記記事「OCN宛のメールが同じメッセージIDのメールとして複数送信される」のようなケースです。
・メッセージIDが異なる場合 → E-Post(epstrd サービス)は、それぞれを「異なるメール」としてSMTP受信しています。たとえメールの内容が同じであっても、メッセージIDが異なるということは、メールクライアント側から複数回送信されてきたことを意味します。
今回のケースは後者で、メールクライアント側から同じメールが繰り返し送信されていたことになります。
原因:SMTP受信(受領)に時間がかかり、メールクライアントがタイムアウトと判断して再送した
SMTP受信詳細ログ(receivelog)を調べたところ、メール1通につき、グリーティング後の受領開始から "received ok." の受領完了までに、1分強から2分程度かかっていました。
メッセージID グリーティング 受領完了 所要時間
-----------------------------------------------------------------
B0000031425 14:27:09 14:28:52 0:01:43
B0000031426 14:29:09 14:31:08 0:01:59
B0000031428 14:31:10 14:33:11 0:02:01
B0000031430 14:33:10 14:34:53 0:01:43
B0000031431 14:35:10 14:36:51 0:01:41
B0000031432 14:37:10 14:38:15 0:01:05
-----------------------------------------------------------------
※途中で番号が飛んでいるのは、同じ時間帯に受信したほかのメールにも番号が使われたためです(たとえばB0000031429は、別の送信元から届いたメールです)。
※B0000031428の受領完了(14:33:11)より1秒早く、次のB0000031430の接続(14:33:10)が始まっています。メールクライアントが、前のメールの受領完了を待たずにタイムアウトと判断し、新しい接続で再送を始めたためです。
メール本文にURLが多く含まれていたためか、メールフィルタに設定しているSURBLサービス(multi.surbl.org)からの応答に時間がかかり、受領完了までに時間を要していました。
一方、Outlookの「サーバのタイムアウト」(サーバからの応答を待つ時間で、無通信タイムアウトにあたる設定)はデフォルトで1分です。受領完了の応答がその時間内に返らないため、メールクライアント側は送信に失敗したと判断し、メールを送信トレイに残したまま、次の送受信のタイミングで同じメールを再送します。
しかし、E-Post側ではその間に受領を完了して配送しているため、結果的に、相手には同じ内容のメールが、異なるメッセージIDで複数届くことになったと推察されます。
受領にかかった時間をログで確認する方法
受領にかかった時間は、接続マシンログ(acceptlog)でも確認できます。acceptlogは基本的に2行構成で、接続開始(1行目)の時刻と、受領完了 [ok](2行目)の時刻の間隔が、受領にかかった時間です。
(例)
[30/Dec/2025:08:30:44], (xxx.xxxx.jp), [xxx.xxx.xxx.xxx]:25, Client accept now.
[30/Dec/2025:08:32:06], (xxx.xxxx.jp), xxx.xxxx.xxx.xxx [xxx.xxx.xxx.xxx], (xxxxxx),<B0000097586>,ok
この間に何が行われていたかの詳細は、SMTP受信詳細ログ(receivelog)に記録されます。
対策
次のいずれかの対策をお取りください。
1.メールクライアント側のタイムアウト(無通信タイムアウト)の時間を延ばす
メールクライアント側に設定項目がある場合は、2分半から3分程度に延ばしてください。Outlookでは、アカウントの詳細設定にある「サーバのタイムアウト」がこの設定です。
2.メールフィルタの「チェック不要なIP」に、送信元PCのローカルIPアドレスを登録する
「メールフィルタ」にある「チェック不要なIP」ボタンをクリックし、表示される設定ファイル【passfilter.dat】に、接続元(送信元)マシンのローカルIPアドレスを記述します。これにより、該当マシンから送信されたメールは、SMTP受信段階でSURBLサービスへの問い合わせを含むメールフィルタ機能のチェックがスキップされます。
【passfilter.dat】ではワイルドカードを使った指定も可能です。
(例)
192.168.1.*
※メールフィルタの設定ファイル【mail.dat】とは異なり、【passfilter.dat】ではワイルドカードが使えます。
指定するのは、SMTPでE-Postに接続してくる接続元(送信元)のIPアドレスです。内部のローカルエリアからの送信は信用するものとして除外しておけば、余計な時間がかからずに済みます。外部から届くメールは、引き続きメールフィルタの対象です。
なお、メールフィルタはメールクライアントからの「送信」時にも働きます。その理由については、下記記事「メールフィルタ機能が働くのは、マニュアルではメール受信時としてあるが「送信・受信」の両方で行われている理解でよいのか」を参照してください。
(補足)通信経路の影響も考えられる場合
メールクライアントがVPN経由で接続している場合など、通信経路の状態によっても応答に時間がかかり、同じ現象が起こることがあります。実際、Outlookの「サーバのタイムアウト」を10秒などの短い時間に設定すると、送信トレイにメールが残ったまま「送信エラー(通信のタイムアウト)」となる一方、相手にはメールが届く、という同様の現象が再現できることが確認されています。
メールフィルタの除外設定だけで改善しない場合は、メールクライアントからE-Postまでの通信経路や、メールクライアント側のタイムアウト設定もあわせて確認してください。
(関連FAQ)
●OCN宛のメールが同じメッセージIDのメールとして複数送信される
●特定のMTAから同じメールを何回も受信してしまう
●接続マシンログ(acceptlog)について
●SMTP受信詳細ログ(receivelog)について
●メールフィルタ機能が働くのは、マニュアルではメール受信時としてあるが「送信・受信」の両方で行われている理解でよいのか