2

我在 Rails 5.2 应用程序上使用 Sendgrid, Net::ReadTimeout尝试发送电子邮件时出错。此处的帖子 https://github.com/mikel/mail/issues/639#issuecomment-29016055建议添加:tls => true到 SMTP 设置。这行得通,但它似乎是一个旧的解决方案,我想了解它在做什么以及它为什么起作用。

这是我的 SMTP 设置,它给出了Net::ReadTimeout错误:

ActionMailer::Base.smtp_settings = {
  :user_name => 'username',
  :password => 'password',
  :domain => 'mydomain.com',
  :address => 'smtp.sendgrid.net',
  :port => 465,
  :authentication => :plain,
  :enable_starttls_auto => true
}

这是正在运行的更新。

ActionMailer::Base.smtp_settings = {
  :user_name => 'username',
  :password => 'password',
  :domain => 'mydomain.com',
  :address => 'smtp.sendgrid.net',
  :port => 465,
  :authentication => :plain,
  :enable_starttls_auto => true,
  # this line added
  :tls => true
}
4

1 回答 1

2

电子邮件实际上是从电子邮件客户端发送到接收电子邮件服务器或从一个服务器发送到另一个服务器的纯文本通信。这种设计限制使任何人都可以窃听传输中的消息内容;从机场或咖啡店的无线热点到您的 ISP 和将您的信息传送到世界各地的互联网骨干提供商。

传输层安全性 (TLS) 通过在邮件从一个安全电子邮件服务器“传输”到另一个安全电子邮件服务器时为您的邮件提供加密技术来帮助解决此问题。也就是说,TLS 有助于防止对电子邮件的窃听,因为它是在启用了电子邮件 TLS 保护的电子邮件服务器之间传输的。正如 TLS 可用于保护 Web 通信 (HTTPS) 一样,它可以保护电子邮件传输。在这两种应用中,TLS 都有相似的优点和缺点。为了最大限度地提高内容安全性和隐私性,处理消息的所有服务器之间都需要 TLS,包括内部和外部服务器之间的跃点。

TLS 的主要功能包括:

  • 加密消息:TLS 使用公钥基础设施 (PKI) 加密从邮件服务器到邮件服务器的消息。这种加密使黑客更难拦截和阅读消息。

  • 身份验证:TLS 支持使用数字证书对接收服务器进行身份验证。发送服务器的身份验证是可选的。这个过程验证接收者(或发送者)是他们所说的,这有助于防止欺骗。

以供参考

于 2020-03-16T17:47:52.600 回答