web-dev-qa-db-ja.com

電子メールクライアントを使用して電子メールサーバー間で転送するときに電子メールのタイムスタンプを維持する

PostfixとDovecotを使用して2つの異なるメールサーバーを実行しています。一部のユーザーは両方のサーバーにアカウントを持っており、メールクライアントを介して一方から他方にメールを転送することがあります。その場合、メールは元の時刻ではなく、転送された時刻のタイムスタンプとともに新しいサーバーに表示されます。

これは、メールが新しいメッセージのようにPostfixキューに戻ってくるためだと思います。元のタイムスタンプを維持する方法はありますか?

これはIMAPを使用しており、電子メールは両方のサーバーにMaildir形式で保存されます。

1
drewag

これは、ファイルの日付をメッセージヘッダーのDate:行の値に設定するPerlスクリプトです。 http://www.athensfbc.com/public/fix_msg_dates

使用法:fix_msg_dates.pl <メッセージディレクトリへのパス>

-リック

4
Rick Sanders

IMAPでMaildirストレージを使用していますか?もしそうなら、メッセージを新しいフォルダに移動するだけでよいはずです。メールクライアントを使用して、2つのIMAPフォルダ間でコピーすることも可能です。

通常、これが優先される日付であるため、メッセージにDateヘッダーが含まれていることが重要です。一部のクライアントは、代わりに納期を好みます。他のすべてが失敗した場合、メッセージがフォルダに表示された日付を使用する可能性があります。メッセージにDateヘッダーがある限り、日付は同じままである必要があります。

2つのサーバー間で電子メールを送信すると、メッセージがメールストリームに再挿入され、Dateヘッダーが置き換えられます。

編集:DovecotとThuderbirdでの私の経験では、Dateヘッダーが存在する限り、IMAPを使用してファイルを移動しても日付は変更されません。 Dateヘッダーがない場合、日付はファイルがThunderbirdに表示される日付に設定されます。 IMapの内部日付値は、RFC-3501インターネットメッセージアクセスプロトコルセクション2.3.3で指定されています。 RFCを読んだことに基づいて、Delivery-dateヘッダーが重要なヘッダーになると思います。

IMapを使用してファイルを移動している場合、Postfixは関係しないため、関係ありません。 Postfixは、メッセージがサーバー間でメール送信される場合にのみ関係します。

2
BillThor

私はここで私の答えを発見しました: http://www.dovecot.org/list/dovecot/2008-July/032165.html

あるサーバーから別のサーバーに電子メールを転送する場合、IMAPクライアントは APPENDコマンド を使用する必要があります。このコマンドには、「内部」または「受信済み」を新しいサーバーに伝達するオプションの日付パラメーターがあります。ただし、これはオプションのパラメータであるため、クライアントは送信する必要はありません。省略した場合、仕様ではデフォルトで現在の時刻に設定する必要があると規定されています。それが私の場合に起こったことであり、メールクライアントは元の内部時間を報告しませんでした。

議論はまた、Dovecotがファイルのタイムスタンプを使用して内部時間を報告することを明確にしています。したがって、事後に受信時刻を修正したい場合は、ファイルにタイムスタンプを設定してから、キャッシュファイルを削除できます。

0
drewag