我在一台机器上设置了 Ubuntu Server。
我安装了 Virtualmin 来管理我的网站。
我的想法是,其中 2-3 个使用 Wordpress 等开源平台,而我没有时间更新它们,因此它们被感染了,现在它们正在发送垃圾邮件。
有没有办法确保没有 SMTP 身份验证就无法从我的服务器发送电子邮件。我的意思是,我想确保没有显式身份验证就无法使用 PHP 邮件功能或 postfix 发送功能或其他任何功能。
有什么办法吗?因为我尝试通过禁用每个帐户的邮件服务器从 Virtual Min 执行此操作,但这不是一个好主意,因为它会禁用该域名的整个电子邮件功能。
我尝试通过谷歌搜索来找到一种方法来阻止脚本发送未经授权的电子邮件,但我什么也没找到。我设法将电子邮件的每小时限制为 200 封电子邮件/小时,当我检查 postfix 队列时,我看到其中有大约 300000 封电子邮件。我做了一个 cron 作业来刷新它们,但这不是完美的选择,所以在我的网站修复之前,阻止脚本发送未经授权的电子邮件将是一件完美的事情。
我将非常感激任何信息。
后来编辑:我的服务器没有受到损害,所以我的问题与任何其他重复的问题非常不同。
答案1
首先,您需要阻止用于mail()
向 postfix 发送电子邮件的所有脚本。为此,您有多种选择。
您可以使用authorized_submit_users
postfix 中的参数来限制 sendmail 命令root
仅适用于用户。将以下行添加到main.cf
authorized_submit_users = root
您可以使用disable_functions
PHP 的功能来禁用mail
该功能。将以下行添加到 php.ini 中
disable_functions = mail
其次,你可以简化你的smtpd_*_restriction
使用
smtpd_relay_restriction = permit_sasl_authenticated, permit_auth_destination, reject
通过此设置,您仅允许:经过身份验证的发件人或打算向您的域发送电子邮件的人
笔记:
- 上述方法并不能阻止邪恶脚本直接发送电子邮件(telnet 端口 25)到远程服务器从而绕过 postfix。
- 如果网站受到攻击,那么恶意脚本也将有权读取存储在您的 wordpress 配置中的凭证。
答案2
您可以阻止所有端口上的所有未建立的传出数据包,但允许发邮件到您允许发送邮件的目的地(例如 google:587)的端口除外。这样可以阻止垃圾邮件并强制进行身份验证。
一个不太好的解决方案是只允许通过任何强制进行深度数据包检查的 IP 发送未加密的电子邮件,但大多数人都希望加密。
大多数 ISP 会封锁端口 25,有时还会封锁其他端口(19、25、53、123、465、475、587、2525),并且直接断开感染非常严重的用户的连接。
因此,最好的解决方案是清理您的系统,但如果您不能这样做,那么就使用防火墙,直到您的用户开始正常运行,或者您可以修复它。
如果你有自己的 postfix 安装,所有邮件都通过它路由,那么你可以收紧仅允许 DMARC 电子邮件。