Одной из частых проблем при администрировании 1С:Документооборот является внезапное прекращение рассылки уведомлений пользователям. Ситуация усложняется тем, что при поверхностной проверке все кажется исправным: тестовые письма уходят, но реальные уведомления застревают в очереди. В этой статье мы подробно разберем диагностику этой проблемы, проанализируем причины ошибки SSL/TLS при отправке почты сервером и рассмотрим способы решения.
Рассмотрим ситуацию, с которой часто сталкиваются администраторы:
Первым делом нам необходимо убедиться, что проблема именно в механизме отправки, а не в настройках e-mail пользователей. Для этого выполним следующие действия:
1. Проверим, работает ли базовая отправка писем (в том числе через списки рассылки). Для этого можно воспользоваться ссылкой на список учетных записей (через "Функции для технического специалиста" или прямую ссылку):
e1cib/list/Справочник.УчетныеЗаписиЭлектроннойПочты
Нажмем кнопку Проверить учетную запись. Если приходит письмо с темой "Тестовое сообщение 1С:Документооборот", значит, на клиенте (на вашем компьютере) настройки верны.
2. Проверим попытки отправки в очереди. Откроем регистр Очередь уведомлений. Обратим внимание на поле Количество попыток отправки. Если оно достигло максимума (обычно 3 попытки), система больше не будет пытаться отправить это уведомление.
3. Проанализируем Журнал регистрации. Это самый важный этап. Нам нужно найти ошибки, возникающие в момент работы регламентного задания. Фильтруем журнал по событию "Ошибка" и метаданным, связанным с почтой.
Часто при детальном изучении лога ошибки (или при отладке фонового задания) мы можем обнаружить следующее сообщение:
Ошибка при вызове метода контекста (Подключиться)
{ОбщийМодуль.Почта.Модуль(185)}:Соединение.Подключиться(Профиль, ПротоколИнтернет);
...
по причине:
Произошла ошибка при работе с SMTP. Код ошибки: 27 (Ошибка установки защищенного SSL/TLS соединения.)
Давайте разберемся, почему возникает эта ошибка и почему проверка соединения работала.
Парадокс "Клиент-Сервер":
Когда вы нажимаете кнопку "Проверить" в пользовательском режиме, код выполняется на Клиенте (вашем компьютере). Если у вас есть доступ к интернету, открыты порты и установлены сертификаты, проверка проходит.
Однако рассылка уведомлений выполняется регламентным заданием на Сервере 1С. Сервер — это другая машина, с другим сетевым окружением. Ошибка с кодом 27 означает, что сервер 1С не смог установить защищенное соединение с почтовым сервером (например, mail.ru, yandex.ru, gmail.com).
Это самая распространенная причина. Платформа 1С использует свой собственный файл с корневыми сертификатами для проверки SSL-соединений. Если этот файл устарел, 1С не доверяет сертификату почтового сервера (например, Mail.ru) и разрывает соединение.
Решение:
cacert.pem в папке установки платформы на сервере (обычно C:\Program Files\1cv8\8.3.xx.xxxx\bin\).Убедитесь, что с сервера, где работает служба 1С, открыт доступ к почтовым портам. Для защищенных соединений обычно используются:
Иногда системные администраторы блокируют исходящий трафик с сервера, что приводит к ошибкам соединения именно в фоновых заданиях.
Если вы используете публичные почтовые сервисы (Mail.ru, Yandex, Google), использование обычного пароля от ящика в настройках 1С может быть заблокировано политикой безопасности провайдера, особенно если включена двухфакторная аутентификация.
Решение:
Важный нюанс работы уведомлений в 1С:Документооборот — использование правильной учетной записи (например, при формировании листа согласования в уведомлении). Уведомления рассылаются от имени предопределенной Системной учетной записи.
Проверим настройки:
550 Policy violation или Relay access denied.Если проблема сохраняется, и логи не дают ясного ответа, необходимо прибегнуть к отладке фонового задания. Для этого:
-debug.РаботаСУведомлениями.Нас интересует процедура обработки очереди:
// Примерный путь к методу в коде
РаботаСУведомлениями.ОбработатьУведомленияВОчередиУведомлений()
Внутри этой процедуры вызывается отправка. Обратите внимание на формирование соединения:
// Место возникновения ошибки
Соединение.Подключиться(Профиль, ПротоколИнтернет);
В режиме отладки вы сможете увидеть точный текст исключения и параметры профиля, с которыми система пытается установить соединение. Это позволит понять, отличается ли профиль системной учетной записи от того, который вы тестировали вручную.
Если в 1С:Документооборот не уходят уведомления, но тест почты работает:
cacert.pem) или закрытых портах на сервере.