我有一个小问题。我提供一些客户端访问我的服务器以执行自己的脚本(当然在他们自己的 chroot 环境中,等等......)。今天发生的问题:有些人在端口 25 上获得对 localhost 的 telnet 访问权限,并且正在向世界发送电子邮件,这几乎是一个开放的中继:(
我正在使用后缀,它还需要身份验证:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
但是本地脚本显然不需要经过 sasl 认证。如果从 permit_mynetworks 中删除 localhost,则某些反垃圾邮件例程不再起作用...
那么如何配置 postfix 以允许本地主机在本地发送邮件而不是在没有身份验证的情况下从外部发送邮件呢?
有什么建议么?
因此,您的反垃圾邮件例程使用的是 localhost,而坏人使用的是 localhost,而postfix 无法区分。
禁止坏人或从受信任的网络中删除 localhost (
permit_mynetworks
) 并配置您的反垃圾邮件以使用其他内容。或者使用smtpd_client_restrictions 允许您的反垃圾邮件check_ccert_access
。回到你的问题。你要求这样的东西:
但它可能不会起作用,因为您的反垃圾邮件会重新注入带有外部收件人的邮件。但这取决于。
向我们提供有关您的反垃圾邮件工具的更多信息,我们可能会提供帮助。
UDP:
不能比官方文档更好地解释限制类。
local_only
我们用定义我们的限制类smtpd_restriction_classes = local_only
。和说“每当检查这个类时检查check_recipient_access(搜索指定的访问(5)数据库以获取已解析的 RCPT TO 地址、域、父域或 localpart@,并执行相应的操作。)首先并拒绝邮件。
local_domains
文件说“如果它的 this.domain 通过检查,如果它的 that.domain 通过检查”。但我们不想将此限制类应用于所有电子邮件。我们想在发送主机是 localhost 时应用它并删除
permit_mynetworks
规则。为此,我们添加check_client_access 哈希:/etc/postfix/client_access(在指定的访问数据库中搜索客户端主机名、父域、客户端 IP 地址或通过剥离最低有效八位字节获得的网络。请参阅access(5)手册页详细信息。)到 smtpd_recipient_restrictions。它说要检查/etc/postfix/client_access
文件以及是否localhost
应用local_only
限制。这正是我们想要做的。希望能帮助到你。
邮件流程为:
localhost
应用local_only
限制类)UPD2 我刚刚找到了您可能感兴趣的 smtpd_recipient_restrictions (和其他自定义类)的另一个选项
一种选择是使用 iptables 来阻止这些用户在端口 25 上连接到 localhost。例如: