Как исправить ошибку SSL/TLS (код 14) при отправке почты в 1С 8.3.12 и выше

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

При переходе на платформу 1С:Предприятие версии 8.3.12.1529 и выше многие разработчики сталкиваются с тем, что стабильно работавший ранее механизм отправки почты через ИнтернетПочтовыйПрофиль внезапно перестает функционировать. Основным симптомом является ошибка "Ошибка установки SSL/TLS соединения" с кодом 14. Особенно часто это проявляется при использовании защищенных соединений POP3 или SMTP.

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

Причина 1: Ужесточение требований к SSL-сертификатам

Начиная с версии 8.3.12, платформа 1С перешла на использование более современных библиотек OpenSSL и изменила логику работы с системными хранилищами сертификатов. Если раньше платформа могла «прощать» отсутствие цепочки доверия или использование самоподписанных сертификатов, то в новых релизах требования стали гораздо строже.

Рассмотрим подробнее, что нужно проверить:

  1. Доверенные сертификаты: Убедимся, что сертификат почтового сервера является валидным и выдан доверенным центром сертификации. Если ваш сервер использует внутренний (корпоративный) или самоподписанный сертификат, его необходимо принудительно добавить в хранилище доверенных корневых сертификатов на той машине, где выполняется код (на сервере 1С).
  2. Соответствие имен: Проанализируем, как указан адрес сервера в коде. Если в свойстве АдресСервераSMTP указан IP-адрес, а SSL-сертификат выписан на доменное имя (например, mail.company.ru), соединение будет разорвано с ошибкой 14. Платформа блокирует соединение из-за несоответствия имени узла и данных сертификата.

Причина 2: Переход на протокол TLS 1.2 по умолчанию

В платформе 8.3.12+ приоритетным протоколом стал TLS 1.2. Многие старые почтовые серверы (или некорректно настроенные современные) могут поддерживать только устаревшие протоколы TLS 1.0 или 1.1. В этом случае попытка согласования (handshake) обрывается.

Чтобы решить эту задачу, мы можем пойти двумя путями:

  1. Обновить настройки почтового сервера для поддержки TLS 1.2 (рекомендуемый вариант).
  2. Если доступ к настройкам сервера ограничен, необходимо убедиться, что в операционной системе, где запущен сервер 1С, разрешены соответствующие протоколы в реестре (для Windows).

Причина 3: Конфликт устаревших методов авторизации

Посмотрим на пример кода, который часто приводит к ошибке на новых платформах:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.POP3ПередSMTP = Истина;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 25;
Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.ПортPOP3 = 995;

Метод POP3ПередSMTP является морально устаревшим. При его использовании 1С сначала авторизуется на POP3-сервере, а затем пытается отправить почту через SMTP. В современных версиях платформы 8.3.12+ такая связка часто вызывает ошибку "Command is not valid in this state" (код 5), если один из протоколов использует SSL, а другой — нет, либо если сессия обрывается защитными механизмами сервера.

Решение проблемы через изменение настроек профиля

Проанализируем современный подход к настройке профиля. Мы рекомендуем отказаться от POP3ПередSMTP и использовать явную авторизацию через SMTP с шифрованием. Рассмотрим по шагам, как перенастроить профиль:

  1. Использование порта 465 (Implicit SSL): Это наиболее стабильный вариант для работы с современными почтовыми сервисами (Mail.ru, Yandex, Gmail).
  2. Использование порта 587 (STARTTLS): Если ваш сервер требует STARTTLS, платформа 1С в последних релизах также корректно поддерживает этот режим.

Пример исправленного кода для отправки через защищенное соединение:


Профиль = Новый ИнтернетПочтовыйПрофиль;
// Отказываемся от POP3ПередSMTP
Профиль.POP3ПередSMTP = Ложь;

// Настройки SMTP для защищенного соединения
Профиль.АдресСервераSMTP = "smtp.mail.ru"; 
Профиль.ПортSMTP = 465; // Стандартный порт для SSL
Профиль.ПользовательSMTP = "login@mail.ru";
Профиль.ПарольSMTP = "your_app_password"; // Используйте пароль приложения!

// Важные свойства для новых платформ
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификация = Ложь; // Попробуйте Истина, если сервер требует NTLM/Kerberos

// Если нужно игнорировать ошибки сертификата (только для отладки!)
// Внимание: свойство доступно в самых новых релизах
// Профиль.ПроверятьСертификатСервера = Ложь; 

Особенности работы под управлением Linux

Если ваш сервер 1С работает на Linux, выясним причину возникновения ошибки 14 в этой среде. Начиная с 8.3.12, платформа напрямую зависит от системной библиотеки libssl. Если версия библиотеки в дистрибутиве (например, в старых версиями Debian или CentOS) не совпадает с ожидаемой платформой или имеет ограниченный набор шифров (ciphers), соединение не установится.

В этом случае рекомендуется:

Итоговые рекомендации

Подводя итог, разберем краткий чек-лист для исправления ошибки 14:

  1. Убедитесь, что вы не используете ПортSMTP = 25 одновременно с ИспользоватьSSLSMTP = Истина. Для SSL используйте порт 465.
  2. Проверьте, установлены ли корневые сертификаты почтового сервера в систему.
  3. Откажитесь от метода POP3-перед-SMTP в пользу прямой авторизации.
  4. Если вы используете публичные почтовые сервисы, обязательно создайте в их настройках специальный "Пароль для приложений", так как обычный пароль от почтового ящика 1С может не принимать.

Соблюдение этих правил позволит вам избежать проблем с защищенными соединениями на современных версиях платформы 1С.

← На главную