我正在尝试创建一个邮件服务器,但我无法连接到我的 DO droplet 的域,我需要这样做才能获得 Let's Encrypt SSL 证书。它拒绝连接。Letdebug.net 说:
[我的域名] 有一条 A (IPv4) 记录([我的 droplet 的 IP 地址)),但通过端口 80 对该地址的请求未成功。您的 Web 服务器必须至少有一个有效的 IPv4 或 IPv6 地址。
71ms: 遇到错误: dial tcp [my droplet's IP]:80: connect: connection denied
所以,我决定尝试运行sudo netstat -nlp
它输出以下内容:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 2882/mysqld
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2882/mysqld
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 493/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 768/sshd: /usr/sbin
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 146987/master
tcp6 0 0 :::22 :::* LISTEN 768/sshd: /usr/sbin
tcp6 0 0 :::25 :::* LISTEN 146987/master
udp 0 0 127.0.0.53:53 0.0.0.0:* 493/systemd-resolve
raw6 0 0 :::58 :::* 7 490/systemd-network
raw6 0 0 :::58 :::* 7 490/systemd-network
并且显然没有任何东西在端口 80 上监听。我如何得到一些东西来监听它?我是否需要安装 Nginx 或其他东西 - 即设置网络服务器?为什么我需要这样做?这是否意味着我需要为安装邮件服务器而构建的 Web 服务器?当涉及到这些东西时,我是一个完全的新手。
有人告诉我,只有 Let's Encrypt 证书才需要它。在本教程中,dovecot.pem
用于证书和密钥文件。如果我使用 Dovecot,这就足够了吗?
更新:找不到我的子域的 IP 地址
在 Michael Hampton 的建议下,我尝试sudo certbot certonly --standalone -d mail.example.com
放入自己的邮件子域,似乎又打开了另一罐蠕虫:
Detail: No valid IP addresses found for [my mail subdomain]
这有点令人困惑。也许我的 MX 记录设置错了?我将列出我的 DNS 记录(我已经涂黑了我的 droplet 的 IP 地址和域名,因为我不知道在互联网上共享这些内容是否安全。如果有必要包含它们并且它是安全的,我有取消编辑没问题):
在这里,“值”列中的编辑位都被 droplet 的 IP 地址隐藏,主机名中的编辑位隐藏了我的域 url。
您可以
certbot
在独立模式下使用来获取网站以外的服务的证书。例如:在这种模式下,certbot 启动自己的内部 Web 服务器,以便可以完成 HTTP 质询,然后在最后停止它。
您的私钥和证书,或者更确切地说,即使稍后更新证书也将保持不变的链接将在
/etc/letsencrypt/live
目录中。然后,您可以配置 Postfix、Dovecot 或您碰巧使用的任何东西,以便在那里找到它们。例如,您的证书链将是/etc/letsencrypt/live/mail.example.com/fullchain.pem
,私钥将是/etc/letsencrypt/live/mail.example.com/privkey.pem
.您需要一个 Web 服务(不一定是传统的 Web 服务器)来进行 HTTP1 身份验证的 Let's Encrypt 证书自动化。你不需要一个邮件本身。还有其他获得证书的方法。
邮件服务器绝不需要 Web 服务器,这是两种完全不同的服务。但是,从 Lets Encrypt 获取 SSL 证书显然需要有一个 Web 服务器,因为这些证书是为 Web 服务器颁发的。
如果您打算仅将其用于邮件服务器,则不需要“官方”证书(例如 Lets Encrypt 的证书)。您可以很好地使用自签名证书,因为在 SMTP 交易期间,不会在服务器之间检查证书。