<!-- -*- mode:text coding:euc-jp -*-
   $FML: delivery.sgml,v 1.2 2008/08/19 07:11:02 fukachan Exp $
-->


<sect1 id="troubleshoot.delivery.duplication">
	<title>
	同じメールが何度も送られてくる場合
	</title>

<para>
元々送信者が複数のメールを出していたということもあります。
この場合メールの Received: や Message-Id: が異なります。
</para>

<para>
同じメール(たとえば Message-Id: が同一)
<footnote>
<para>
&fml8; は受信したメールの Message-Id: の記録をとっています。
&fml8; がこれらの Message-Id: が同じメールを受けとった場合、
最初の一通だけが通過します。 
</para>

<para>
ここでいう「再送」は、&fml8; ではなく、
そのあとの MTA による再送の可能性のほうが高いです。
もちろん &fml8; 自体が MTA 化した今では &fml8; による再送もありえます。
</para>
</footnote>
が二通届いたという場合、単なる再送かもしれません。
</para>

<para>
電子メール業界では
「行方不明になるくらいなら重複して届いた方がまし」
と考えられています。
データを失うくらいなら冗長でも重複して届けてしまう方が良いです。
よって MTA は配送が失敗した可能性のある場合、重複の可能性があってもあ
えて再配送を行ないます。
</para>

<para>
ただ何通も送られてくるようであれば、やはりシステムに何かかの異常があります。
</para>

<para>
いずれにせよ調べるべきポイントは「だれに同じメールが送られているのか？」
です。
</para>

<para>
ＭＬ受信者の一部にだけ送られているなら &fml8; 以外の配送システムのどこ
かが犯人です。
一方、ＭＬ受信者全員に送られているなら &fml8; が犯人でしょう。
まずは &fml8; のログを調べて下さい。
</para>

<para>
どの場合でも、メールヘッダを解析する必要があります。
複数届くというメールのサンプルを手に入れて下さい。
ただし、この時メールヘッダが省略されていない完全な形のものを
手に入れないと意味がありません。
</para>


<sect2>
	<title>
	メール受信時の失敗	
	</title>

<para>
同じ内容の複数のメールで本文だけでなく
From: や Message-ID: や Received: までが同じです。
</para>
	
</sect2>


<sect2>
	<title>
	どこかの MTA が再配送している。
	</title>

<para>
同じ内容の複数のメールで本文や From: は同じでも 
Received: が異なります。
メールサーバ A B C を通過してくると次のような
Received: がついているはずです。
<screen>
Received: by サーバC 時刻C
Received: by サーバB 時刻B
Received: by サーバA 時刻A
</screen>
再送しているサーバ以降の時刻は各メールで異なるはずですから、
時刻の異なる Received: が現れているところが犯人のサーバです。
たとえば
<screen>
Received: by サーバC 時刻C'
Received: by サーバB 時刻B
Received: by サーバA 時刻A
</screen>
なら B と C の間で問題があります
（まず、まちがいなく B が犯人 ）。 
</para>
	
</sect2>


<sect2 id="troubleshoot.delivery.loop">
	<title>
	同じメールが何度も送られてくる場合(メールのループ)
	</title>

<para>
&fml8; から MTA にいって MTA (もしくは配送されていった先のどこか別のサ
イトの MTA)から &fml8; に再度メールが配送される可能性がないわけではあ
りません。
</para>

<para>
ループが起こらないように、受信したメール、&fml8; が生成して送信したメー
ルの Message-Id: はキャッシュされているので、そのメールが回り回って返っ
てきても &fml8; はループとみなして配送しません。
</para>

<para>
なんにせよ、その再送されてくるというメールの完全なヘッダを手に入れて分
析する必要があります。
</para>

</sect2>


</sect1>
