Как настроить отправку почты в режиме совместимости 8.2.13 на новых версиях платформы 8.3

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При переходе на новые версии платформы 1С:Предприятие (начиная с 8.3.18 и выше, и особенно на ветки 8.3.21, 8.3.22) разработчики часто сталкиваются с тем, что привычный механизм работы с объектом ИнтернетПочта перестает функционировать, если в конфигурации установлен режим совместимости 8.2.13. Чаще всего это проявляется в виде ошибки: «Произошла ошибка при работе с SMTP. Код ошибки: 27 (Ошибка установки защищенного SSL/TLS соединения)».

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние изменения платформы и рассмотрим несколько эффективных способов восстановления работоспособности почты без изменения режима совместимости конфигурации — для этого подойдёт рассылка отчетов и уведомлений из 1С.

Выясним причину проблемы: почему старый код не работает на новой платформе

Разберем ситуацию с технической точки зрения. Основная причина кроется в обновлении библиотек OpenSSL, что важно учитывать при проектировании защищенной IT инфраструктуры, которые встроены в платформу 1С. В версиях платформы 8.3.18 и старше произошел переход на OpenSSL версии 1.1.1 и выше. В этих современных библиотеках по умолчанию отключена поддержка устаревших и небезопасных протоколов, таких как SSLv2, SSLv3, TLS 1.0 и TLS 1.1. Также были ужесточены требования к проверке сертификатов серверов.

Когда конфигурация работает в режиме совместимости 8.2.13, объект ИнтернетПочта ограничен в своих возможностях, в отличие от решений, где алгоритмы шифрования реализованы нативно. В нем отсутствуют современные свойства для управления TLS, хотя в новых версиях платформы доступны широкие возможности шифрования (например, ИспользоватьTLS или выбор конкретной версии протокола ВариантИспользованияSSL). Платформа пытается инициировать соединение по старым стандартам, которые либо блокируются самой платформой на уровне OpenSSL, либо отвергаются современными почтовыми серверами (такими как Mail.ru, Yandex или Gmail), требующими TLS 1.2 или 1.3.

Решение 1: Настройка файла конфигурации conf.cfg

Первым делом проанализируем возможность влияния на поведение платформы через файлы настроек. Мы можем попытаться ослабить требования платформы к проверке сертификатов и принудительно разрешить использование определенных протоколов.

Для этого нам понадобится отредактировать файл conf.cfg, который обычно находится в каталоге установленной платформы (например, C:\Program Files\1cv8\conf\). Рассмотрим последовательность действий:

  1. Найдем или создадим файл conf.cfg.
  2. Добавим параметр IgnoreInternetMailServerCertificateVerificationList. Этот параметр позволяет платформе игнорировать ошибки проверки цепочки сертификатов для конкретных почтовых узлов.
  3. Добавим параметр ForceTLS1_0, если сервер требует именно этот протокол (хотя это редко помогает с современными публичными сервисами).

Пример содержимого файла conf.cfg:


IgnoreInternetMailServerCertificateVerificationList=mail.vash-domen.ru;smtp.mail.ru;imap.yandex.ru;*
ForceTLS1_0=false

Важно: Использование символа * в списке позволяет игнорировать проверку для всех серверов, что может быть полезно для диагностики, но небезопасно в промышленной эксплуатации. Если после добавления ForceTLS1_0=true вы получили ошибку «Код ошибки: 5 (Ошибка разбора ответа сервера)», это означает, что сервер ожидает более современный протокол, а вы принудительно ограничили платформу устаревшим вариантом.

Решение 2: Использование прокси-сервера stunnel

Если манипуляции с файлом conf.cfg не принесли результата, рассмотрим наиболее надежный и стабильный метод — использование stunnel. Этот программный продукт выступает в роли «обертки», которая принимает обычное незащищенное соединение от 1С и превращает его в современное защищенное TLS-соединение для почтового сервера.

Разберем по шагам, как настроить эту связку:

  1. Устанавливаем stunnel на сервере 1С или на локальной машине.
  2. В конфигурационном файле stunnel.conf создаем секции для SMTP и IMAP.

Пример настройки stunnel.conf:


[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465
checkHost = smtp.gmail.com
OCSPiair = yes

[gmail-imap]
client = yes
accept = 127.0.0.1:143
connect = imap.gmail.com:993
checkHost = imap.gmail.com

В коде 1С мы теперь должны изменить параметры подключения. Вместо прямого обращения к почтовому серверу с SSL, мы будем обращаться к локальному адресу:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "127.0.0.1";
Профиль.ПортSMTP = 25; // Порт, который мы указали в accept stunnel
Профиль.АдресСервераIMAP = "127.0.0.1";
Профиль.ПортIMAP = 143;
// SSL в коде 1С выключаем, так как шифрованием займется stunnel
Профиль.ИспользоватьSSLSMTP = Ложь;
Профиль.ИспользоватьSSLIMAP = Ложь;

Этот метод полностью снимает проблему совместимости протоколов 1С и почтового сервера, так как stunnel использует актуальные системные библиотеки шифрования.

Решение 3: Переход на STARTTLS и проверку состояния ящика

Иногда ошибка «Код ошибки: 5» или ошибки соединения могут быть вызваны не только протоколами шифрования, но и спецификой работы сервера с конкретным почтовым ящиком. Проанализируем несколько дополнительных моментов:

Решение 4: Альтернативные способы отправки (Внешние компоненты)

Поскольку вашей основной целью обновления платформы является использование внешних компонент в изолированном режиме, логичным решением будет вынести функционал почты во внешнюю компоненту — для этого есть обработка массовой рассылки документов из 1С. Это позволит избежать ограничений устаревшего объекта ИнтернетПочта. Для этой задачи есть инструмент для автоматизации Email-рассылок из 1С.

Мы можем рассмотреть использование:

  1. Объект CDO.Message: Стандартный Windows-компонент, который работает независимо от настроек 1С.
  2. Библиотека Mail.dll или аналоги: Внешние компоненты, которые можно подключить к 1С и использовать для отправки писем с поддержкой TLS 1.2/1.3.

Пример использования CDO для отправки почты (через COM-объект):


Конфиг = Новый COMОбъект("CDO.Configuration");
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "smtp.mail.ru";
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 465;
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = Истина;
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "login";
Конфиг.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "password";
Конфиг.Fields.Update();

Сообщение = Новый COMОбъект("CDO.Message");
Сообщение.Configuration = Конфиг;
Сообщение.Subject = "Тема письма";
Сообщение.From = "login@mail.ru";
Сообщение.To = "client@gmail.com";
Сообщение.TextBody = "Текст сообщения";
Сообщение.Send();

Подведем итоги

Мы рассмотрели несколько путей решения проблемы. Если вам требуется быстрое решение «здесь и сейчас», начните с настройки conf.cfg и проверки чистоты почтового ящика. Если же вы нацелены на долгосрочную и стабильную работу системы на новой платформе без повышения режима совместимости, наиболее предпочтительным вариантом будет настройка stunnel или переход на использование COM-объектов/внешних компонент — для этого подойдёт автоматическая отправка счетов и актов из 1С. Это полностью изолирует процесс криптографии от ограничений платформы 1С версии 8.2.13.

← На главную