获取let's encrypt证书
根据配置,我们可能不需要为运行电子邮件服务器的子域获取单独的证书。
当我们在终端中键入 letencrypt 时,我们将可以选择证书应涵盖的虚拟主机 (VHOST)。
我建议我们包括所有子域。
如果 SMTP 服务器托管在子域中,例如 smtp.example.com 或者 send.example.com ,我们可能需要为子域获取证书。
但是,仅当我们在为网站获取证书时未包含子域时才需要这样做。
将所有子域包含在同一个证书中可能是个好主意,因为这样可以更轻松地维护多个子域。
使用 Postfix 加密发送电子邮件
如果我们现在准备好证书,它应该位于 /etc/letsencrypt/live/example.com/目录中。
我们可以尝试导航到该目录以获取所有证书的概览:
cd /etc/letsencrypt/live/ ls
要将此证书与 Postfix 一起使用,我们只需从 Postfix 的配置链接到它。
Postfix 的主要配置文件应该位于:/etc/postfix/main.cf。
以下选项应该使 Postfix 能够通过 SSL 连接到其他电子邮件服务器:
smtp_use_tls=yes smtp_tls_loglevel=1 smtp_tls_security_level=may smtp_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem smtp_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pem
如果接收电子邮件服务器支持,smtp_use_tls = yes 将尝试使用 TLS 连接。
如果没有,电子邮件消息应该返回到队列中,并且不会被发送(传递尝试被推迟)。
smtp_tls_loglevel = 1 将只记录有关 SSL 握手的摘要。
将此设置为“0”将关闭 TLS 活动的日志记录。
smtp_tls_security_level=may “may”值表示如果服务器支持 STARTTLS,则应使用 TLS。
如果不支持,消息将以明文形式发送。
可以在 Postfix SMTP 服务器上使用 let's encrypt 证书,我们所要做的就是在 Postfix 配置文件中包含证书的路径,并调整一些选项。
如果这是我们第一次尝试设置 SMTP 服务器,让我们先了解一些基础知识。
我们不必在子域中托管我们的 SMTP 服务器,但无论如何避免混淆是一个好主意。
通常,电子邮件服务器将在与 Web 服务器不同的端口上侦听,因此没有什么可以阻止我们从裸域 (example.com) 运行电子邮件服务器和 HTTP 服务器。
Postfix 是用于发送和接收电子邮件的 SMTP 服务器。
我们仍需要安装 POP 或者 IMAP 服务器才能将电子邮件下载到我们的电子邮件客户端。
Dovecot 是最受欢迎的选择之一。
另一种选择是在通过 SSH 登录后从终端读取电子邮件。
系统上的每个用户都可以获得自己的电子邮件地址。
Postfix 将尝试向本地用户发送电子邮件。
通常,收到的邮件将以明文形式存储在 /var/mail/$user 和 /home/$user/mail 等位置。
使用让加密而不是自签名证书允许用户在其电子邮件客户端中使用 SSL/TLS 和 STARTTLS 加密选项连接到我们的 SMTP 服务器。
一旦这工作正常,建议配置 Postfix 以拒绝未加密的连接尝试。
允许用户通过 TLS 连接
有两个选项前缀处理加密。
一个用于向外部世界发送电子邮件 (smtp),而另一个前缀 (smtpd) 用于当用户尝试从诸如 Thunderbird 和 Outlook 等电子邮件客户端通过服务器发送电子邮件时。
要允许用户使用 SSL/TLS 或者 STARTTLS 连接到 SMTP 服务器,我们只需链接到 smtpd 的证书。
配置中可能链接了一个“snakeoil”证书,我们应该将其替换为我们从 let encrypt 获得的证书。
smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pem smtpd_tls_auth_only=yes smtpd_tls_loglevel=1 smtpd_tls_received_header=yes
蛇油证书不安全,应替换为正确签名的证书,例如我们可以从 Lets Encrypt 获得的证书。
smtpd_tls_received_header = yes ,请求 Postfix 生成接收到的消息标头,其中包含有关所用协议和密码的信息,以及 SMTP 客户端和证书颁发者 CommonName。
smtpd_tls_auth_only = yes 在尝试使用用户名/密码进行身份验证之前需要 TLS 加密。