Время, указанное в электронном письме, неверно.

Вопрос или проблема

У меня возникли проблемы с временем в письмах, отправленных через mail.utils. Thunderbird показывает дату отправки писем, сгенерированных с помощью mail, как на 24 часа позже фактической даты отправки.

Чтобы показать разницу в заголовках, я отправил 2 письма из командной строки. Одно было отправлено напрямую через mail, а другое через php.

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

Заголовки для письма, сгенерированного с помощью mail, следующие:

Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from localhost (localhost [127.0.0.1])
    by mail.mike-mac.gen.nz (Postfix) with ESMTP id CD9DA2BC003C
    for <[email protected]>; 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 <[email protected]>;
    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: <[email protected]>
User-Agent: mail (GNU Mailutils 3.14)
Date: Tue, 10 Oct 2023 01:16:30 -1100
Message-Id: <[email protected]>
From: Mike McIntyre <[email protected]>

Заголовки для письма, сгенерированного с помощью PHP, следующие:

Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from localhost (localhost [127.0.0.1])
    by mail.mike-mac.gen.nz (Postfix) with ESMTP id ECCD12BC003C
    for <[email protected]>; 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 <[email protected]>;
    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: [email protected]
Subject: PHP test
X-datesent:01:16:38
Message-Id: <[email protected]>
Date: Tue, 10 Oct 2023 01:16:38 +1300 (NZDT)
From: Mike McIntyre <[email protected]>

Единственное отличие, которое я вижу, это в заголовке Date:

Отслеживание 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 <http://gnu.org/licenses/gpl.html>
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
Я добавил следующую строку в crontab

*/5 * * * * echo "testing"

Сгенерированные письма имеют правильное время, как и письма с ошибками, сгенерированные crontab.

Не зная, как crontab генерирует письма, я думаю, что это сужает проблему до письма, сгенерированного напрямую через /usr/bin/mail.mailutils.

редактирование #3
Пробовал принудительно задать значение TZ с помощью этого

mike@wilma:~$ cat /etc/profile.d/mailutils-date.sh 
# это попытка исправить поле Date в письмах, сгенерированных mail.utils
if [ -z "${TZ}" ]
then
 TZ=`cat /etc/timezone`
 export TZ
fi
### после перезагрузки ###
mike@wilma:~$ echo $TZ
Pacific/Auckland

Я также нахожусь в NZDT / UTC+13 и сталкиваюсь с такой же проблемой. Я полагаю, что это баг в GNU Mailutils, когда она неправильно обрабатывает смещения UTC за пределами диапазона от UTC-12 до UTC+12. Это было исправлено, но исправление еще не вошло в выпуск. Я думаю, что единственный обходной путь на данный момент – это собрать GNU Mailutils из исходников или изменить часовой пояс сервера (например, на UTC).

.

Ответ или решение

Вопрос: Время отправки письма отображается неправильно.

Ответ:

Проблема с отображением времени отправки электронной почты, которой вы столкнулись, связана с некорректной обработкой часового пояса программой GNU Mailutils при использовании диапазона UTC-12 до UTC+12. Ваша ситуация возникает при отправке писем через mail.utils, где время показано на 24 часа вперёд от фактического момента отправки.

Анализ проблемы:

Из представленных заголовков электронных писем видно, что проблема заключается в заголовке Date. Сравнивая письма, отправленные через командную строку и PHP, отмечается расхождение в обрабатываемых часовых поясах, особенно при отправке через mail.

  1. Используемое окружение:

    • Почтовый клиент: Thunderbird.
    • Почтовый сервер: Postfix и Dovecot.
    • Операционная система указывает на Pacific/Auckland (NZDT, +1300) как текущий часовой пояс.
  2. Обнаружены моменты:

    • Исполняемый файл mail – GNU Mailutils 3.14.
    • Проблема с отображением времени связана с записью времени при использовании mail, что наводит на мысль о баге в версии программы.

Предложенные решения:

  1. Использование альтернативного ПО: Если срочно требуется исправить проблему, можно рассмотреть вариант временного использования другой программы для электронной почты, поддерживающей корректную работу с часовыми поясами.

  2. Сборка GNU Mailutils из исходного кода: Так как ошибка была исправлена, но ещё не попала в официальный релиз, можно самостоятельно собрать последнюю версию из репозитория. Это требует определённого уровня технической подготовки и устанавливает программу из источника, не дожидаясь выхода новой версии.

  3. Изменение часового пояса сервера: Как временная мера, можно установить серверный часовой пояс в UTC, чтобы избежать ошибок обработки временных данных.

  4. Мониторинг обновлений: Следите за обновлениями GNU Mailutils, ожидая выхода версии с исправленным багом. Подписка на почтовые уведомления проекта или регулярная проверка сайта разработчиков может помочь своевременно получить уведомления об обновлениях.

SEO-оптимизация:

Для улучшения видимости данной информации в поисковых системах можно использовать ключевые слова: "некорректное время отправки электронной почты", "GNU Mailutils", "часовые пояса", "баг", "решение проблемы с временем отправки на сервере".

Если потребуется дополнительная помощь или инструкция, не стесняйтесь обращаться за консультацией.

Оцените материал
Добавить комментарий

Капча загружается...