You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GNU Mailutils发送邮件Date头时间错误问题求助

GNU Mailutils发送邮件Date头时间错误问题求助

大家好,我遇到了一个关于GNU Mailutils发送邮件时间显示异常的问题,想请教一下各位:用mail命令发送的邮件,在Thunderbird里显示的发送时间比实际发送时间整整快了24小时。

为了排查问题,我从命令行分别发了两封测试邮件:一封用mail命令,另一封用PHP的mail函数,对比了它们的邮件头信息。

首先是我执行的两个测试命令:

mike@wilma:/etc/mail$ echo "Test" | mail -a "X-datesent:$(date +'%H:%M:%S')" -s 'CLI test' mike@mike-mac.net
mike@wilma:/etc/mail$ php -r 'mail("mike@mike-mac.net", "PHP test", "test", "X-datesent:" . date("H:i:s")) ;'

然后是**mail命令生成的邮件头**:

Return-Path: <mike@mike-mac.gen.nz>
X-Original-To: mike@mike-mac.net
Delivered-To: mike@mike-mac.net
Received: from localhost (localhost [127.0.0.1])
by mail.mike-mac.gen.nz (Postfix) with ESMTP id CD9DA2BC003C
for <mike@mike-mac.net>; Tue, 10 Oct 2023 01:16:31 +1300 (NZDT)
Received: from mail.mike-mac.gen.nz ([127.0.0.1])
by localhost (wilma.mike-mac.gen.nz [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id TiMiAEKqCXmS for <mike@mike-mac.net>;
Tue, 10 Oct 2023 01:16:31 +1300 (NZDT)
Received: by mail.mike-mac.gen.nz (Postfix, from userid 1000)
id B2D082BC003D; Tue, 10 Oct 2023 01:16:30 +1300 (NZDT)
X-datesent: 01:16:30
Subject: CLI test
To: <mike@mike-mac.net>
User-Agent: mail (GNU Mailutils 3.14)
Date: Tue, 10 Oct 2023 01:16:30 -1100
Message-Id: <20231009121631.B2D082BC003D@mail.mike-mac.gen.nz>
From: Mike McIntyre <mike@wilma.mike-mac.gen.nz>

接着是PHP生成的邮件头

Return-Path: <mike@mike-mac.gen.nz>
X-Original-To: mike@mike-mac.net
Delivered-To: mike@mike-mac.net
Received: from localhost (localhost [127.0.0.1])
by mail.mike-mac.gen.nz (Postfix) with ESMTP id ECCD12BC003C
for <mike@mike-mac.net>; Tue, 10 Oct 2023 01:16:38 +1300 (NZDT)
Received: from mail.mike-mac.gen.nz ([127.0.0.1])
by localhost (wilma.mike-mac.gen.nz [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id WrHE2C9CcL7b for <mike@mike-mac.net>;
Tue, 10 Oct 2023 01:16:38 +1300 (NZDT)
Received: by mail.mike-mac.gen.nz (Postfix, from userid 1000)
id D60532BC003D; Tue, 10 Oct 2023 01:16:38 +1300 (NZDT)
To: mike@mike-mac.net
Subject: PHP test
X-datesent:01:16:38
Message-Id: <20231009121638.D60532BC003D@mail.mike-mac.gen.nz>
Date: Tue, 10 Oct 2023 01:16:38 +1300 (NZDT)
From: Mike McIntyre <mike@mike-mac.gen.nz>

我对比后发现,唯一的差异就是Date头:mail命令生成的是-1100时区偏移,而PHP生成的是正确的+1300(NZDT时区)。

接下来我查了mail命令的来源和版本:

mike@wilma:/etc/mail$ which mail
/usr/bin/mail
mike@wilma:/etc/mail$ file /usr/bin/mail
/usr/bin/mail: symbolic link to /etc/alternatives/mail
mike@wilma:/etc/mail$ file /etc/alternatives/mail
/etc/alternatives/mail: symbolic link to /usr/bin/mail.mailutils
mike@wilma:/etc/mail$ file /usr/bin/mail.mailutils
/usr/bin/mail.mailutils: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=f7eaf662d3c899c2ea6118af56f4709a9a1fae74, for GNU/Linux 3.2.0, stripped
mike@wilma:/etc/mail$ mail --version
mail (GNU Mailutils) 3.14
Copyright (C) 2007-2022 Free Software Foundation, inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

服务器的时区信息是正常的:

mike@wilma:/etc/mail$ timedatectl
Local time: Tue 2023-10-10 01:28:02 NZDT
Universal time: Mon 2023-10-09 12:28:02 UTC
RTC time: Mon 2023-10-09 12:28:02
Time zone: Pacific/Auckland (NZDT, +1300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

我用的是Postfix和Dovecot,不知道会不会和它们有关。


更新1:检查时区配置

mike@wilma:~$ cat /etc/sysconfing/clock
cat: /etc/sysconfing/clock: No such file or directory
mike@wilma:~$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 36 Jun  5 15:51 /etc/localtime -> /usr/share/zoneinfo/Pacific/Auckland

更新2:排除Postfix/Dovecot问题

我在crontab里加了一行定时任务:

*/5 * * * * echo "testing"

定时任务生成的邮件时间是正确的,crontab触发的错误邮件时间也没问题。这说明问题应该只出在直接用/usr/bin/mail.mailutils发送的邮件上。


更新3:尝试强制设置TZ环境变量

我创建了/etc/profile.d/mailutils-date.sh文件,内容如下:

# this is an attempt to fix the Date field in emails generated by mail.utils
if [ -z "${TZ}" ]
then
TZ=`cat /etc/timezone`
export TZ
fi

重启后查看TZ变量:

mike@wilma:~$ echo $TZ
Pacific/Auckland

不过目前还没看到效果,问题依旧存在。

有没有大佬遇到过类似的问题?求指点一下怎么解决这个Date头时区错误的问题。


备注:内容来源于stack exchange,提问作者burtzerk

火山引擎 最新活动