我(我和我的妻子)运行一个小型 Debian 10/Buster 网络服务器,上面有几个朋友的网站,需要设置外发电子邮件。我已经能够从命令行发送电子邮件了(echo "Message Body" | mail -s "Message Subject" TARGET_EMAIL_HERE
)。
我们需要一个满足以下要求的设置:
- 每周仅发送几封电子邮件:
- 来自网站上的 Perl 联系表(需要更严格的反垃圾邮件保护,打算使用 Google CAPTCHA)
- 一些电子邮件来自剧院预订系统的文档附件只有已知和受信任的用户才能登录
- 需要在外发电子邮件中添加“回复”字段,以便人们可以在其电子邮件客户端中点击“回复”(在设置使用邮件服务器的脚本时似乎很容易)
- 我们不想允许任何收到的电子邮件到服务器
我们有什么:
- 用户网站建立在他们的用户目录(共 755 个),但我们管理网站和他们无法登录服务器
- 我和我的妻子是 sudo 用户(两个系统管理员),也是唯一通过 SSH/SFTP 登录的人
- root 登录被禁用
- 我们已更改 SSH 端口
我知道这是最低限度的信息,但我希望获得一些关于设置和保护 Postfix 以用于此类用途的指导。
答案1
首先,如果您在服务器上没有收到任何电子邮件,则应将 Postfix 配置为仅绑定到本地主机。然后,您可以使用 UFW 之类的防火墙(因为您使用的是 Debian)来阻止传入的 tcp 端口 25(这不是强制性的,因为 Postfix 仅绑定到本地主机,但它只会阻止传入的 SMTP 流量,因为您不想要它)。
网站或任何脚本(如果它们位于同一台服务器上),都可以配置为通过 localhost 连接发送电子邮件。发送电子邮件时,您必须添加 Reply-To 标头,其中包含您希望用户回复的电子邮件地址。
配置 UseDNS 没有/etc/ssh/sshd_config以防止每个用户连接上的反向 DNS 映射。我还将禁用通过 SSH 的密码验证,并严格允许使用 ssh 公钥进行验证。严格使用协议 2。例如,如果您不使用 ipv6,请在 SSH 服务器中禁用它:
AddressFamily inet
对于 SSH 也一样:
# Authentication:
LoginGraceTime 15s
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 5
KerberosAuthentication no
GSSAPIAuthentication no
- 如果用户在 15 秒内未进行身份验证,则连接将关闭
- 仅允许三次密码尝试
- 最多允许 5 个用户同时连接
- 禁用 Kerberos 身份验证
- 禁用 GSSAPI 身份验证
作为一个好的经验法则,你应该严格只允许必要的传入端口,并放弃所有其他端口。传出端口也是如此。如果你的服务器不转发,那么你可以默认放弃转发。
此外,您还可以安装 fail2ban,它可以根据您的需要进行配置。互联网上有很多教程,因此您可以根据自己喜欢和/或需要的方式对其进行自定义。
由于提供的信息比较笼统,因此很难给出直接的答案。但这些应该可以提供一些基本的指导。