我(我和我的妻子)运行一个小型 Debian 10/Buster 网络服务器,其中包含几个网站供朋友使用,并且需要设置外发电子邮件。我已经到了可以从命令行(echo "Message Body" | mail -s "Message Subject" TARGET_EMAIL_HERE
)发送电子邮件的地步。
我们需要一个满足以下要求的设置:
- 每周只会发送几封电子邮件:
- 来自网站上 Perl 联系表单的一些电子邮件(需要更严格的反垃圾邮件保护,将使用 Google 验证码)
- 一些来自剧院预订系统的带有文档附件的电子邮件,只有已知和受信任的用户才能登录
- 在外发电子邮件中需要一个“回复”字段,以便人们可以在他们的电子邮件客户端中点击“回复”(在设置脚本以使用邮件服务器时看起来很容易)
- 我们不想让任何传入的电子邮件到服务器
我们有什么:
- 用户网站设置在他们的用户目录(即 755)中,但我们管理这些网站,他们无法登录到服务器
- 我和我的妻子是 sudo-ers(两个系统管理员)并且是唯一通过 SSH/SFTP 登录的人
- 根登录被禁用
- 我们更改了 SSH 端口
我知道这是最基本的信息,但我想要一些关于为这种用途设置和保护 Postfix 的指导。
首先,如果您在服务器上没有收到任何电子邮件,您应该将 Postfix 配置为仅绑定到 localhost。然后你可以使用像 UFW 这样的防火墙(因为你在 Debian 上)来阻止传入的 tcp 端口 25(这不是强制性的,因为 Postfix 只绑定到 localhost 但它只会阻止传入的 SMTP 流量,因为你不想要它)。
网站或您拥有的任何脚本(如果它们位于同一服务器上),可以将它们配置为通过 localhost 连接以发送电子邮件。当您发送电子邮件时,您必须添加一个回复标题,其中包含您希望用户回复的电子邮件地址。
在/etc/ssh/sshd_config中配置 UseDNS no以防止在每个用户连接上进行反向 DNS 映射。我还将通过 SSH 禁用密码身份验证,并严格允许使用 ssh 公钥进行身份验证。严格使用协议 2。例如,如果您不使用 ipv6,请在 SSH 服务器中禁用它:
也适用于 SSH:
作为一个好的经验法则,您应该严格只允许必要的传入端口并丢弃其他所有端口。外出也一样。如果您的服务器没有转发,那么您可以默认 DROP 转发。
此外,您可以安装 fail2ban,它可以根据您的需要进行配置。互联网上有很多教程,因此您可以按照自己喜欢和/或需要的方式对其进行自定义。
由于提供的信息非常笼统,因此很难提供直接的答案。但是这些应该提供一些基本的指导。