При настройке системной учетной записи почты в конфигурациях на базе 1С:Предприятие 8.3 (особенно в таких решениях, как УТП 1.2 или УПП 1.3) администраторы и программисты часто сталкиваются с ошибкой: Помилка при виклику методу контексту (Подключиться): TLS/SSL failure for: Invalid token, probably not an SSL server. Данная проблема характерна для платформы версии 8.3.11 и ниже, но может проявляться и в более свежих релизах при некорректной настройке параметров шифрования.
В этой статье мы подробно разберем причины возникновения этой ошибки, проанализируем различия в протоколах безопасности и выясним, как правильно внести изменения в код, чтобы восстановить работоспособность отправки писем.
Для начала проанализируем техническую суть проблемы. Ошибка «Invalid token, probably not an SSL server» (неверный токен, вероятно, это не SSL-сервер) сигнализирует о том, что возник рассинхрон между ожидаемым и реальным типом соединения. Существует два основных способа установления защищенного соединения:
STARTTLS, и только после подтверждения сервера канал шифруется.Суть конфликта: Если вы настраиваете порт 587 и устанавливаете в 1С флаг ИспользоватьSSLSMTP, платформа 8.3.11 может попытаться сразу инициировать защищенную сессию (Implicit). Сервер же, ожидая текстового приветствия, присылает обычную строку текста (например, «220 mx.server.net...»). 1С пытается интерпретировать этот текст как часть SSL-сертификата, не понимает его и сообщает об «инвалидном токене».
Рассмотрим ситуацию, когда почтовый админ предоставил данные: SMTP service: port 587 over TLS. Рассмотрим, как на это реагирует система в разных сценариях:
Refused или тайм-ауту, так как этот порт может быть просто закрыт брандмауэром.Поскольку в типовых интерфейсах конфигураций на обычных формах (УТП, УПП) может не быть расширенных настроек для STARTTLS, нам потребуется внести изменения непосредственно в код. Нам необходимо найти место, где инициализируется объект ИнтернетПочтовыйПрофиль.
Рассмотрим по шагам, как найти и изменить нужный участок:
УправлениеЭлектроннойПочтой.СформироватьПочтовыйПрофиль или ПодключитьсяКПочтовомуСерверу.Проанализируем пример кода, который необходимо внедрить для корректной работы порта 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» становится «третий лишний» в сетевом соединении. Рассмотрим ситуацию подробнее:
Test-NetConnection mx.komservice.net -Port 587.Подведем итог и составим пошаговый план решения проблемы:
ИнтернетПочтовыйПрофиль и поэкспериментируйте с комбинацией свойств ИспользоватьSSLSMTP и ТолькоЗащищенныйВходSMTP.Следуя этим рекомендациям, вы сможете эффективно диагностировать и устранить ошибки подключения к почтовым серверам, обеспечив стабильную работу механизмов рассылки в вашей информационной базе.