我正在尝试创建一个邮件服务器,但无法连接到我的 DO droplet 的域,而我需要这样做才能获得 Let's Encrypt SSL 证书。它拒绝连接。 letsdebug.net 说:
[我的域名] 有一个 A (IPv4) 记录([我的 droplet 的 IP 地址]),但通过端口 80 向该地址发出的请求未成功。您的 Web 服务器必须至少有一个有效的 IPv4 或 IPv6 地址。
71ms:遇到错误:拨号 tcp [我的 droplet 的 IP]:80:连接:连接被拒绝
因此,我决定尝试运行,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 服务器?我为什么要这样做?这是否意味着我需要构建一个 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。
答案1
您可以certbot
在独立模式下使用以获取网站以外的服务的证书。例如:
sudo certbot certonly --standalone -d mail.example.com
在这种模式下,certbot 启动自己的内部 Web 服务器以便完成 HTTP 挑战,然后在最后停止它。
您的私钥和证书(或者更确切地说是指向它们的链接,即使证书稍后更新,它们仍将保持不变)将位于目录中/etc/letsencrypt/live
。然后,您可以配置 Postfix、Dovecot 或您正在使用的任何程序,以便在此处找到它们。例如,您的证书链将是/etc/letsencrypt/live/mail.example.com/fullchain.pem
,私钥将是/etc/letsencrypt/live/mail.example.com/privkey.pem
。
答案2
您需要一个 Web 服务(不一定是传统的 Web 服务器)来实现 HTTP1 认证的 Let's Encrypt 证书自动化。您不需要一个用于邮件本身的 Web 服务。还有其他方法可以获取证书。
答案3
邮件服务器绝对不需要 Web 服务器,这是两种完全不同的服务。但是,从 Lets Encrypt 获取 SSL 证书显然需要拥有 Web 服务器,因为这些证书是为 Web 服务器颁发的。
如果您只打算将其用于邮件服务器,则不需要“官方”证书(例如 Lets Encrypt 的证书)。您可以完全使用自签名证书,因为在 SMTP 交易期间,服务器之间不会检查证书。