Gmail smtp主机名与服务器证书不匹配

时间:2014-10-24 15:26:59

标签: ssl ruby-on-rails-3.2

我在尝试发送邮件时遇到gmail gem的错误,这在本地工作正常,并且在heroku上工作正常,但现在我将此应用程序移动到VPS服务器。这是错误:

e = g.compose do
   to 'test@gmail.com'
   subject 'testasea'
   body 'test'
end

=> #<Mail::Message:25450040, Multipart: false, Headers: <From: .......>
e.deliver!
=> OpenSSL::SSL::SSLError: hostname does not match the server certificate

我已将此添加到初始化程序文件中,没有任何运气:

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :openssl_verify_mode  => 'none' # I've tested with 0 and false,

}

我试图通过猴子路径

OpenSSL::SSL::SSLSocket.class_eval do
 def post_connection_check(hostname)
   return true
 end
end

没有运气,当我这样做时,我收到535 Incorrect authentication data,但是我知道数据没问题,因为我能做到

g.inbox.count :read

它会返回正确的数字。

我想知道:

  • 不正确的证书是我的服务器(smtp客户端)发送的证书?或者是gmail smtp服务器收到的那个?
  • 为什么它在本地工作?
  • 为什么我在路径上遇到了一个认证错误?
  • 有没有解决方法?我不在乎如果不安全,只是一个帐篷应用,。

1 个答案:

答案 0 :(得分:0)

这只是猜测,但如果您在WHM VPS中有一个限制外发SMTP连接的功能,您可以在Tweak设置中找到它。

 Restrict outgoing SMTP to root, exim, and mailman (FKA SMTP Tweak)

重定向所有SMTP连接,如果启用此选项,您将收到服务器自签名ssl证书,如果使用monkey patch或设置配置绕过它,请不要检查ssl证书,您可能会发现身份验证错误实际上是连接到LOCAL SMTP服务器。

只需禁用它并再次测试。