Как настроить протокол SSL, необходимый для использования ActionMailer TLS-соединения? - PullRequest
0 голосов
/ 10 января 2020

Я столкнулся с проблемой, пытаясь использовать SMTP-сервер моего кампуса с моим приложением Rails 5.x. Я получаю следующую ошибку: SSL_connect возвращено = 1 errno = 0 состояние = сервер чтения SSLv2 / v3 привет A: неизвестный протокол.

Вот моя конфигурация:

config.action_mailer.smtp_settings = {
    address:              'address.domain',
    port:                 587,
    user_name:            'UNAME',
    password:             'PWD',
    authentication:       :login,
    tls:                  true,
    enable_starttls_auto: true
  }

Чтобы убедиться, что я использую последнюю версию openssl, мне также потребовался 'openssl' в моем Gemfile, и он установил openssl-2.1.2.

Предложения по дальнейшим действиям?

1 Ответ

1 голос
/ 10 января 2020
port:                 587,
...
tls:                  true,
enable_starttls_auto: true

В соответствии с документацией ": ssl /: tls - разрешает SMTP-соединению использовать SMTP / TLS (SMTPS: SMTP через прямое TLS-соединение) «. Но порт 587 предназначен не для прямого TLS, а для обновления TLS с помощью команды STARTTLS. Прямой TLS выполняется на порту 465. Вместо этого, если он включен.

Таким образом, ваш клиент пытается получить доступ к соединению без TLS с TLS, и это приводит к этой странной ошибке. См. Также мое объяснение аналогичного вопроса , где это произошло с Perl, а не Ruby.

Для решения проблемы используйте порт 465 с tls (если он включен на сервере ) или используйте порт 587 и полагайтесь на enable_starttls_auto, что он позже выполнит обновление до TLS.

...