Как исправить ошибку «TLS/SSL failure: Invalid token» при настройке почты в 1С

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

При настройке системной учетной записи почты в конфигурациях на базе 1С:Предприятие 8.3 (особенно в таких решениях, как УТП 1.2 или УПП 1.3) администраторы и программисты часто сталкиваются с ошибкой: Помилка при виклику методу контексту (Подключиться): TLS/SSL failure for: Invalid token, probably not an SSL server. Данная проблема характерна для платформы версии 8.3.11 и ниже, но может проявляться и в более свежих релизах при некорректной настройке параметров шифрования.

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

Разбор причины ошибки: почему возникает «Invalid token»

Для начала проанализируем техническую суть проблемы. Ошибка «Invalid token, probably not an SSL server» (неверный токен, вероятно, это не SSL-сервер) сигнализирует о том, что возник рассинхрон между ожидаемым и реальным типом соединения. Существует два основных способа установления защищенного соединения:

  1. Implicit SSL (Неявный SSL): Используется преимущественно на порту 465. При таком подходе 1С начинает «общаться» с сервером на зашифрованном языке сразу после открытия сетевого порта. Если сервер сразу не отвечает зашифрованным рукопожатием (handshake), 1С выдает ошибку.
  2. Explicit SSL / STARTTLS (Явный SSL): Обычно используется на порту 587. В этом случае соединение начинается как обычное текстовое (незашифрованное). 1С отправляет текстовую команду STARTTLS, и только после подтверждения сервера канал шифруется.

Суть конфликта: Если вы настраиваете порт 587 и устанавливаете в 1С флаг ИспользоватьSSLSMTP, платформа 8.3.11 может попытаться сразу инициировать защищенную сессию (Implicit). Сервер же, ожидая текстового приветствия, присылает обычную строку текста (например, «220 mx.server.net...»). 1С пытается интерпретировать этот текст как часть SSL-сертификата, не понимает его и сообщает об «инвалидном токене».

Анализ настроек портов и серверов

Рассмотрим ситуацию, когда почтовый админ предоставил данные: SMTP service: port 587 over TLS. Рассмотрим, как на это реагирует система в разных сценариях:

Программное решение проблемы в УТП 1.2

Поскольку в типовых интерфейсах конфигураций на обычных формах (УТП, УПП) может не быть расширенных настроек для STARTTLS, нам потребуется внести изменения непосредственно в код. Нам необходимо найти место, где инициализируется объект ИнтернетПочтовыйПрофиль.

Рассмотрим по шагам, как найти и изменить нужный участок:

  1. Перейдем в Конфигуратор.
  2. Найдем общий модуль УправлениеЭлектроннойПочтой.
  3. Внутри модуля найдем функцию, отвечающую за создание профиля, обычно она называется СформироватьПочтовыйПрофиль или ПодключитьсяКПочтовомуСерверу.

Проанализируем пример кода, который необходимо внедрить для корректной работы порта 587:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "mx.komservice.net";
Профиль.ПортSMTP = 587;

// Важный момент для платформы 8.3.11 и STARTTLS:
// Иногда требуется отключить ИспользоватьSSLSMTP, 
// чтобы 1С не начинала шифрование раньше времени
Профиль.ИспользоватьSSLSMTP = Ложь; 
Профиль.ТолькоЗащищенныйВходSMTP = Истина;

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

Важно понимать, что в версии 8.3.11 свойство ТолькоЗащищенныйВходSMTP отвечает за аутентификацию через защищенные механизмы, что часто помогает серверу понять намерения клиента на 587 порту.

Влияние версии платформы и операционной системы

Выясним, почему обновление платформы часто является лучшим решением. Начиная с версии 8.3.12, работа с протоколами TLS была значительно переработана. Появились более гибкие настройки перечисления СпособИспользованияSSLТип.

Если обновление невозможно, следует проверить настройки операционной системы (особенно на Windows Server 2008 R2 / 2012). Современные почтовые сервера отказываются работать с устаревшими протоколами TLS 1.0 и 1.1. Платформа 1С использует системные библиотеки Windows для реализации шифрования. Если в реестре ОС не включена поддержка TLS 1.2, 1С не сможет согласовать защищенное соединение, что также может привести к ошибке SSL.

Проверка внешних факторов и антивирусного ПО

Часто причиной ошибки «Invalid token» становится «третий лишний» в сетевом соединении. Рассмотрим ситуацию подробнее:

Итоговый алгоритм действий

Подведем итог и составим пошаговый план решения проблемы:

  1. Уточните параметры: Если используется порт 587, это почти всегда STARTTLS (Explicit). Если 465 — это SSL (Implicit).
  2. Тестирование без кода: Попробуйте в интерфейсе «Настройки учетной записи» снять галочку «Использовать защищенный протокол», но оставить порт 587. Некоторые сервера сами инициируют переход на TLS, если это разрешено настройками 1С.
  3. Корректировка кода: Если интерфейс не помогает, найдите в коде ИнтернетПочтовыйПрофиль и поэкспериментируйте с комбинацией свойств ИспользоватьSSLSMTP и ТолькоЗащищенныйВходSMTP.
  4. Проверьте системные требования: Убедитесь, что в Windows включен протокол TLS 1.2.
  5. Обновление: По возможности обновите платформу до версии 8.3.12 или выше для полноценной поддержки современных стандартов безопасности.

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

← На главную