![如何验证从自己的服务器到 Google 中继 SMTP 服务的电子邮件是否使用 TLS](https://linux22.com/image/769197/%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E4%BB%8E%E8%87%AA%E5%B7%B1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%B0%20Google%20%E4%B8%AD%E7%BB%A7%20SMTP%20%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E6%98%AF%E5%90%A6%E4%BD%BF%E7%94%A8%20TLS.png)
我有一个仅发送邮件的服务器,如下所示:
django/python --> postfix -----> smtp-relay.gmail.com -----> destination
当我打开收到电子邮件的 Gmail 客户端并检查详细信息时,它显示:security: Standard encryption (TLS) Learn more
现在我怀疑它说来自smtp-relay.gmail.com
--> gmail 目的地是 TLS,但我担心我正在以纯文本形式从 postfix 发送电子邮件到smtp-relay.gmail.com
。
我的 postfix 配置文件有:
relayhost = smtp-relay.gmail.com:587
但是如果我将其设置为:
relayhost = smtp-relay.gmail.com:25
它也有效。
如果我将 django 设置设置为EMAIL_USE_TLS = True
并尝试发送电子邮件,则会失败:
File "/usr/lib/python3.8/smtplib.py", line 755, in starttls
raise SMTPNotSupportedError(
smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.
这让我认为它没有使用 TLS,但我不知道如何验证。
答案1
您需要查看Received:
收到邮件时的邮件头,即 Google 跟踪邮件从 Postfix 服务器传输到第一个 Google 服务器的那行。该邮件头应将协议指定为 ESMTP年代- 第二)年代发送安全通道信号。
您的 Postfix 服务器将会有另一个Received:
标头,其中记录了从 django/python 收到的消息,但如果保证该提交永远不会离开您的机器(从::1
到 的连接::1
),则不必担心该连接是否采用了任何传输安全性。
通常,此类跟踪标头还会包含有关所使用的特定协议版本和密码的信息(谷歌似乎大多数时候都会这样做)。
如果你知道你的邮件服务器不应该发送未加密的邮件 - 因为你只向现代提供商发送邮件,或者您正在中继全部将您的邮件发送给 Google - 考虑smtp_tls_security_level
在您的 postfix 配置中强制执行该操作。查看一条消息只会告诉您在此特定情况下一切正常。您可能不希望它在将来默默地回退到未加密提交。