Перестала работать почта (получение новых входящих писем)

Проблема воспроизводится на старых версиях платформы до Platform 1.17.1 включительно.

:speech_balloon: Description
Причина прекращения поступления почты заключается в удалении писем на почтовом ящике.
После удаления, нумерация писем на ящике начинается с единицы. Вследствие смещения нумерации новые письма не поступают на экземпляр из-за неуникальности номеров.

Процесс получения писем на экземпляр запускается в начале каждой минуты для каждого активного почтового аккаунта и состоит из следующих шагов:

  1. Формирование выборки сегодняшних писем (созданных начиная с 00:00 UTC текущего дня) для одного почтового аккаунта.
  2. Определение уникальности писем. Для каждого сегодняшнего письма выполняется поиск записи sys_email с таким же номером в поле mail_id, созданной текущий почтовый аккаунт. Если такая запись sys_email найдена - письмо считается неуникальным и не поступает на экземпляр.

Переход в список входящей почты через навигатор: System Mailboxes → Incoming Emails

:heavy_check_mark: Workaround

После удаления писем на ящике выполнять изменение нумерации Mail ID для ранее созданных писем:

const emailRecord = new SimpleRecord('sys_email');emailRecord.addQuery('direction', 'incoming');emailRecord.addQuery('mail_id', '>', 0);emailRecord.query();

while (emailRecord.next()) { emailRecord.mail_id = emailRecord.mail_id * -1; emailRecord.update();}

Если удаление происходит по расписанию оптимальным решением будет настроить скрипт по расписанию для исправления номеров.

Для перезапуска обработки писем начиная с определённой даты необходимо:

  1. Обновить созданные до удаления писем на ящике с инвертированием значения mail_id (скрипт указан выше).
  2. Запустить команду для получения недостающих писем с указание параметра даты. Например, php yii cron/parse-incoming-mail 'SINCE "7 June 2022"'

https://www.php.net/manual/en/function.imap-search

1 лайк

Добрый день, Ришат, коллеги!

возникла похожая по симптомам ситуации на версии 1.21. Часть почты не получена, часть получается с запозданием 1-3,5 часа. Протокол IMAP, платформа SimpleOne регулярно раз в минуту успешно заходит на Exchange и насколько я понял запрашивает списки писем.
Можно ли использовать предложенный выше способ в 1.21?

Константин, добрый день!

В описанном здесь случае почта перестаёт поступать совсем, так что если у вас наблюдается запаздывание, то причина почти наверняка не в нумерации писем, поэтому использовать данный способ не советую

Ок, Спасибо за оперативный ответ, Денис !