Ssl 我想我';我遗漏了一些东西:Can';t获得轨道&x2B;Postfix/Sendmail与TLS一起工作

Ssl 我想我';我遗漏了一些东西:Can';t获得轨道&x2B;Postfix/Sendmail与TLS一起工作,ssl,sendmail,tls1.2,postfix-mta,Ssl,Sendmail,Tls1.2,Postfix Mta,我正在尝试为Ruby on Rails应用程序设置一个简单的电子邮件发件人。我已经安装了Postfix,并在我的DNS服务器上添加了一个SFP记录,因此电子邮件确实可以通过垃圾邮件过滤器过滤,但我也想对电子邮件使用TLS加密,而且还没有找到一个有效的设置 以下是我尝试过的一些事情: 我们从戈达迪那里买了一张证书。当我通过以下方式告诉postfix使用该证书时: 后缀配置 # /usr/share/postfix/main.cf # TLS parameters smtpd_tls_cert_

我正在尝试为Ruby on Rails应用程序设置一个简单的电子邮件发件人。我已经安装了Postfix,并在我的DNS服务器上添加了一个SFP记录,因此电子邮件确实可以通过垃圾邮件过滤器过滤,但我也想对电子邮件使用TLS加密,而且还没有找到一个有效的设置

以下是我尝试过的一些事情:

我们从戈达迪那里买了一张证书。当我通过以下方式告诉postfix使用该证书时:

后缀配置

# /usr/share/postfix/main.cf 

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/my-cert.pem
smtpd_tls_key_file=/etc/ssl/private/my-cert.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/
Rails配置

# /config/environments/my_env.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'localhost', 
  authentication:       'plain',
  domain:               'my_domain.com',
  enable_starttls_auto: true
}  
错误响应是主机名“localhost”与服务器证书不匹配

如果我将rails配置中的地址更改为服务器的域,它将抛出
454.7.1:中继访问被拒绝

问题是,我不明白为什么这里需要SMTP。我正在本地从服务器发送邮件,因此不需要SMTP/身份验证。我的直觉是我可以直接告诉Rails使用:sendmail,但我还没有找到让sendmail使用TLS的方法


我觉得我遗漏了什么,我只想在邮件从发件人传递到收件人时对其进行加密。(即避免Gmail)是否还有我不知道的其他工具?(对Mandrill等第三方邮件服务器不感兴趣)。

在rails配置中,您必须将其指向真实地址。Rails正在读取证书,查看证书中的tld,并将其与您提供的地址进行比较

例如,如果您购买了证书,并说它是
mail.mydomain.com
,当rails连接到postfix服务器时,它会检查证书。在rails配置中,
localhost
的地址与
mail.mydomain.com
的证书签名不匹配,因此失败。有3种选择

  • 更改rails Smtp配置以转到证书中的FQDN(mail.mydomain.com)
  • 让rails忽略这样的证书问题,只是盲目地接受证书
  • 绕过TLS,只进行不安全的连接,因此无论证书显示为FQDN是什么都无关紧要
从长远来看,如果postfix服务器受损,选项2的风险更大,但它是常用的


您的要点是确保消息传输是加密的。rails可以使用本地系统来传递邮件并将邮件放到linux消息总线中吗?它将永远不会在该点使用网络,postfix将在该点之后处理加密。

谢谢!1) 如何让rails忽略这样的证书问题?2) 有没有一种方法可以将:sendmail与TLS加密一起使用,而不是:smtp?1:我不知道rails是如何工作的,所以您可能需要用rails标记问另一个问题。2:这就是为什么我要发送邮件,而不是smtp。你可以使用本地系统邮件发送邮件,它最终会通过postfix离开你的系统,但如果你从未接触过网络,那么你就不需要加密。这可能是我缺少的。我可以使用本地系统(本地安装的后缀)发送,这是我的首选。TLS是否仅参与身份验证过程(对于SMTP)?那么,我如何在传输过程中加密邮件(去掉Gmail中的红色解锁锁)?沿途的所有服务器都必须使用tls加密或更好的加密。你的邮件路径是什么?您的应用程序连接到postfix,然后将postfix服务器连接到何处?/usr/bin/mail、/usr/sbin/sendmail、/usr/sbin/postfix。这就是你想要的吗?后缀之后我还没有定义任何东西。我假设postfix直接发送到gmail。如果他们在每一步都使用TLS(我假设是这样),那么需要做些什么来摆脱Google中的“不安全”图标呢?我将尝试使用上面的选项1使用SMTP连接到我自己的服务器。