我有一个仅发送邮件的服务器,如下所示:
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 配置中强制执行该操作。查看一条消息只会告诉您在此特定情况下一切正常。您可能不希望它在将来默默地回退到未加密提交。