使用电子邮件客户端在电子邮件服务器之间进行传输时,请维护邮件时间戳

我使用Postfix和Dovecot运行两个不同的电子邮件服务器。 我的一些用户在两台服务器上都有帐户,有时通过他们的电子邮件客户端将电子邮件从一个传送到另一个。 当他们这样做的时候,电子邮件会在新服务器上显示,而不是原来的时间。

我认为这是因为电子邮件将返回到Postfix队列,就像它是一个新的消息。 有没有办法我可以保持原来的时间戳?

这是使用IMAP和电子邮件在Maildir格式存储在两台服务器上。

这是一个Perl脚本,它将文件date设置为消息头中Date:行的值。 http://www.athensfbc.com/public/fix_msg_dates

用法:fix_msg_dates.pl <消息目录的path>

-Rick

您是否使用带有IMAP的Maildir存储? 如果是这样,应该可以将消息移动到新的文件夹中。 也应该可以使用邮件客户端在两个IMAP文件夹之间进行复制。

邮件中有一个Date标题是很重要的,因为这通常是首选的date。 有些客户会更喜欢交货date。 如果一切都失败了,他们可能会使用该文件夹中出现的信息的date。 只要邮件有一个Date标题,那么date应该保持不变。

两台服务器之间的电子邮件会将邮件重新input到邮件stream中,并导致date标题被replace。

编辑:我与Dovecot和Thuderbird的经验表明,只要date标题存在,date不会更改时使用IMAP移动文件。 如果date标题不存在,则date将设置为Thunderbird中文件的显示date。 IMap内部date值在RFC-3501“Internet消息访问协议”部分2.3.3中指定。 根据我对RFC的阅读,我期望Delivery-date标题是重要的标题。

如果您使用IMap移动文件,Postfix是不相关的,因为它不涉及。 只有邮件在服务器之间邮寄时才会涉及到Postfix。

我在这里发现了我的答案: http : //www.dovecot.org/list/dovecot/2008-July/032165.html

将电子邮件从一台服务器传输到另一台服务器时,IMAP客户端必须使用APPEND命令 。 此命令有一个可选的date参数,用于将“内部”或“接收”传送到新服务器。 然而,这是一个可选的参数,客户端不需要发送它,如果省略,规范说明它应该默认为当前时间。 这就是我的情况,邮件客户端没有报告原来的内部时间。

讨论还澄清,Dovecot使用文件的时间戳来报告内部时间。 所以如果我想纠正接收的时间后,我可以设置文件的时间戳,然后删除caching文件。