我目前在我的个人服务器上使用 postfix 和 SASL 来进行身份验证的 SMTP。
该服务器纯粹供我个人使用和我的个人域,所以我宁愿拥有基于 ssh 公钥的更简单的东西。是否存在这样的解决方案?
答案1
虽然它不是 SSH 的 pubkey 身份验证(仅存在于 SSH 协议中,而不是 SMTP 中),但您可以设置TLS 客户端证书。这将需要客户端提供有效的 SSL 证书。
另外,如果您必须使用 SSH 的公钥,您可以简单地允许来自个人 SMTP 服务器上的本地主机的所有邮件连接,并通过 SSH 设置到 SMTP 服务器上端口 25 的 SSH 隧道。
答案2
没有什么可以阻止网络应用程序使用 ssh 密钥进行身份验证/加密,除非必须编写这些应用程序来支持这一点(即通过使用 libssh)。您没有说明您使用什么邮件用户代理,也没有说明它连接到哪个 SMTP 服务器,但它们本身不太可能支持 ssh。
但是,当然,您可以使用到服务器的普通 ssh 连接来为 SMTP 会话建立隧道。这当然可以对您的计算机(而不是 SMTP 服务器)的用户进行身份验证,这可能不是您想要的。
答案3
SMTP 服务器在连接时通常不会检查 SSL 证书,但会使用它们来加密通道。这使得它们可以轻松地使用自签名证书或来自私人机构的证书进行配置。 (自签名证书相当于 ssh 证书。)我使用tinyCA 创建自己的证书颁发机构。您可以使用最大 4096 的密钥大小。您应该使用至少 2048 的大小。
MUA(邮件用户代理:Firefox、Outlook 等)与自签名证书配合良好。您确实需要第一次接受它们。我建议使用带有 startTLS 和身份验证的提交端口。这将为您提供一个安全的经过身份验证的通道。
我使用 Dovecot IMAP 和 startTLS,使用自签名证书来阅读电子邮件。除了一个或多个客户端之外,使用 IMAP 还提供了额外的选项,例如使用 WebMail 界面。
答案4
配置您的邮件服务器以允许来自本地主机的未经身份验证的中继,并设置用于发送邮件的 ssh 隧道。
ssh yourserver -L 8587:localhost:587
这将通过 ssh 将本地端口 8587 转发到服务器端口 587 上的服务器。然后将您的邮件客户端配置为使用localhost
端口8587
。
尽管我仍然鼓励您保留 SASL 身份验证。