![如何使用 sendmail 以本地用户身份从远程计算机发送邮件并使用密码保护](https://linux22.com/image/802327/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20sendmail%20%E4%BB%A5%E6%9C%AC%E5%9C%B0%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E4%BB%8E%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E4%BF%9D%E6%8A%A4.png)
我有一个正在运行的 sendmail 服务器,目前只接受从本地主机发送的邮件。所有发出的邮件都伪装成本地主机,@mywebsite.com
并且服务器上绑定了 DKIM SPF MX 和 A 记录。
我已经在服务器上安装了 dovecot IMAP,以便从我家里的计算机访问服务器上收到的邮件。
我希望能够以 sendmail 服务器用户的身份从我的家用计算机向我的 sendmail 服务器发送邮件。(smtp 发件箱)
但我需要用密码保护该用户,以避免成为垃圾邮件中继。
我希望我的邮件通过服务器运行以享受 DKIM SPF MX 和 A 记录。
答案1
已经提出的 VPN 建议没有任何问题,但是 sendmail 能够在应用层处理这个问题。
如果您想这样做,则有两个部分:设置 sendmail 以便它支持 TLS(加密),并设置 sendmail 以便它支持中继后 SMTP-AUTH(允许通过加密的 SMTP 通道进行身份验证,并告诉 sendmail 允许从已通过身份验证的客户端进行中继)。
对于 TLS 支持,你需要在 中添加以下内容sendmail.mc
:
define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confSERVER_CERT', `/etc/pki/tls/certs/server.crt')dnl
define(`confSERVER_KEY', `/etc/pki/tls/certs/server.key')dnl
您还需要创建(自签名)证书和密钥文件;网上有很多关于如何操作的教程,所以我不建议在这里再重复一遍。
对于 SMTP AUTH 和中继支持,您需要在 中进行以下操作sendmail.mc
:
define(`confAUTH_OPTIONS', `A p y')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
我还发现我需要以下行/etc/sasl2/Sendmail.conf
:
pwcheck_method:saslauthd
并且saslauthd
需要运行。这样我就可以使用与在 dovecot 上进行身份验证时相同的凭据进行登录,然后 sendmail 就可以顺利地转发我的电子邮件了。