我有一个实施了 sasl 的 MTA(postfix)。我希望对于一部分用户,我可以将其电子邮件地址映射到特定的 IP 范围(每个电子邮件用户分开)。如果用户尝试从其个人范围之外发送电子邮件,则该尝试将被记录,并且电子邮件将被丢弃。我认为这可以通过 header_checks 或 milters 来实现,但我无法通过任何一种方式实现它。
答案1
用一个政策服务。你可以自己实现,或者使用一些现成的,我有一些经验后发我记得它的规则集功能使您能够用几行代码表达这样的要求。
最好不仅使用 SASL 身份验证,还要使用 Postfix 的smtpd_sender_login_maps设置。默认端口 25 永远不应支持经过身份验证的提交服务;有专门的端口用于此目的,587“提交”(使用 STARTTLS)或/和 465“smtps”(使用传统静态 TLS)。
如果全部您的用户可能被限制在几个子网内,您只需使用防火墙限制对这些端口的访问即可。更好的是,不要立即丢弃“网络外”邮件或在网络级别限制对提交服务的访问,而是限制电子邮件速率。然后,您可以监控服务的过度使用情况,警告用户,甚至要求解释发生了什么以及他们为什么达到限制。
当某些用户的密码被盗并且有人开始使用被盗凭据发送垃圾邮件时,这恰恰帮助我控制了我管理的服务器声誉受损。他们在几分钟内就达到了上限(大约每小时不超过 120 封邮件),被盗帐户无法发送邮件。然后我们调查了发生的事情并向该帐户的合法用户进行了解释,更改了他们的密码并采取了其他必要措施来保护他们的系统,以防止这种情况再次发生。
如果用户拥有良好的密码和安全的系统,那么你就受到足够的保护,相信身份验证,因此没有必要将服务限制在几个子网内。老实说,如果你不那么信任你的用户,我相信,真正的问题不在技术措施的范围之内,而是在行政决策之内。
答案2
我认为一些可能的方法是:
- 限制类别的使用
- 使用 milters
- 使用 policyd 服务并将特定用户添加到未知用户(这样就不会检查所有用户)