我的 CentOS 服务器上运行着 sendmail。服务器设置为 BST 并且 tzdata 正确。
$ date
Tue Jul 2 10:53:56 BST 2013
$ ll /etc/localtime
lrwxrwxrwx 1 root root 33 Jun 28 17:07 /etc/localtime -> /usr/share/zoneinfo/Europe/London
我有一个 bash 脚本在此服务器上运行,它通过 cronjob 发送邮件。 cronjob 设置为每天运行早上 7 点。
00 07 * * * sh /root/check_mail_process.sh
日志/var/log/cron
显示服务器在指定时间运行作业。
Jul 1 07:00:01 ukibimon01 crond[15407]: (root) CMD (sh /root/check_mail_process.sh)
有/etc/mail/sendmail.cf
以下设置:
# time zone handling:
# if undefined, use system default
# if defined but null, use TZ envariable passed in
# if defined and non-null, use that info
#O TimeZoneSpec=
此外,该机器上未设置 TZ 变量。
sendmail 使用智能中继。
我还使用智能中继将邮件发送到交换服务器。
# "Smart" relay host (may be null)
DSexchange_server_address
问题是我收到邮件了一小时后上午 8 点。 Outlook 的标头信息位于此处:
服务器 (TLS) ID 14.16.324.0; 2013 年 7 月 2 日,星期二07:00:13 +0000 收到:来自 BY2PRD0411HT003.namprd04.prod.outlook.com(IP) BY2PRD0411HT005.namprd04.prod.outlook.com (IP) 与 Microsoft SMTP
因此,sendmail 从其他地方获取时间并使用
答案1
你确定你的责任是正确的吗?
with Microsoft SMTP
- 它不表示sendmail。
您确定 sendmail 正在您的 CentOS 上接受 127.0.0.1:25 的连接吗?
答案2
服务器在 UTC 上运行。您作为用户的时间表示采用 GMT/BST。
文件中的上午 7 点cron
是 0700 UTC,现在(十月初)您将其视为 0800 BST。这对应于您在 Exchange 上收到电子邮件的时间。
答案3
例如,对于太平洋标准时间,您可以按如下方式设置。
我会尝试sendmail.cf
:
O TimeZoneSpec=PST8PDT
或在sendmail.mc
:
define(`confTIME_ZONE', `PST8PDT')dnl