我可以依赖“日期:”电子邮件标题吗?

jog*_*rot 4 email smtp eml

我有一些用 getmail 抓取的邮件目录(收件箱和发送),我想给 eml 文件命名,代表每封邮件到达(或发送)的日期和时间:

johnsmith@example.org-inbox-2015-07-28T20.02.14+0000.eml
Run Code Online (Sandbox Code Playgroud)

(我希望 Windows 读取文件,所以没有冒号)

我注意到 eml 文件中只出现了一次“Date:”:

Date: Tue, 28 Jul 2015 20:02:14 +0000
Run Code Online (Sandbox Code Playgroud)

我可以依靠这个标题来重命名文件吗?它可靠吗?

(我计划为此任务编写 posix 或 bash 脚本)

buf*_*ufh 5

简短的回答:

Date标题(和大多数其他头)由客户端设置(而不是必需的),所以它可能只是任何东西,或缺席。

垃圾邮件 appart,由于该Date字段由 MUA(/MSA) 设置,并且仍然有很多人没有与 NTP 同步或不关心正确配置他们的工作站,因此通常是错误的。我还经常看到配置错误的自动邮件程序或 MTA...

Received标题中找到的日期稍微更值得信赖,因为它是由真正的 MTA 设置的,并且它们配置良好的可能性更高。

请注意,除了作为您的服务器(在您的情况下为 GMail)的最后一个(出现顺序最上面的)之外,它们也可以被伪造。

  • “稍微更值得信赖”——无法保证邮件传输代理会将时钟设置为正确的世纪,并且对于某些 MTA 来说,有充分的理由假设他们不会。例如,有人在 20 世纪 90 年代把这个盒子放在壁橱里,它的硬件时钟已经走时了,但它仍然在传送邮件,所以没有人知道它的存在。 (2认同)