我在尝试将我的园区的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版本,我的Gemfile中也需要'openssl',并且它安装了openssl-2.1.2.。
有关后续步骤的建议?
port: 587,
...
tls: true,
enable_starttls_auto: true
根据the documentation “:ssl /:tls-启用SMTP连接以使用SMTP / TLS(SMTPS:通过direct TLS连接的SMTP)”]。但是端口587不适用于直接TLS,而是用于通过STARTTLS命令进行的TLS升级。如果启用,则直接在端口465上完成直接TLS。
因此,您的客户端尝试使用TLS访问非TLS连接,这将导致此奇怪的错误。另请参见my explanation on a similar question,这是Perl而非Ruby发生的情况。
要解决该问题,请使用端口465和tls
(如果在服务器上启用)或使用端口587并依靠enable_starttls_auto
,它将在以后升级到TLS。