我们有postfix设置作为网关过滤和中继邮件到我们的Exchange服务器。 没有设置LDAP,有没有办法让我定义一个有效的地址列表,所以postfix可以拒绝所有对我们的域,而不是一个有效的用户或别名?
即,我想指定一个有效的电子邮件列表。 如果RCPT TO不属于这些电子邮件,则拒绝。 我计划使用fail2ban防火墙closures这些IP一个小时作为惩罚目录收获攻击企图。
这最终变得非常简单。
简而言之:
具体而言:在Exchange EMS中,运行以下命令:
Get-Mailbox -Resultsize Unlimited | Ft EmailAddresses
如果您的电子邮件列表很大,那么您可能希望对这个命令less一点宽容,并获得一个CSV文件。 这对我来说是有效的,因为我们只有大约50个,使用Sublime Text和正则expression式很容易将其削减。
使用此列表,我从列表中删除了除SMTP地址以外的所有内容,每行只留下一行。
接下来,在Sublime中,我在地址之后的每行添加了“OK”。 例:
[email protected] OK
然后,我将它作为/ etc / postfix / access-inbound复制到Postfix服务器
然后,我运行以下命令:
root@gateway:/etc/postfix/# postmap /etc/postfix/access-inbound
这会在运行的目录中创buildaccess-inbound.db。 (注意上面!我在/ etc / postfix中做了这个)。
现在剩下的就是告诉Postfix使用这个文件来validation发件人。 我在smtpd_recipient_restrictions中做了这个。 请注意,下面的指令有很多东西在那里。 我把其他的configuration留在了上下文中。 首先,这个configuration比较发件人和whiltelist,然后执行该列入白名单的发件人的发送操作。 然后,它做所有其他检查。
最后,在底部,你会看到:
check_recipient_access hash:/etc/postfix/access-inbound,
这告诉后缀:“如果收件人在这个列表中,接受邮件”。 (实际上,它说:“如果收件人在这个列表中,按照列表中的内容来做,但是在这种情况下,我们所有有效的电子邮件都有一个”OK“的回应,因此前者更容易考虑n00b的search者) 。
最后,在底部,你看到拒绝 。 这意味着:“如果你已经到了所有这些检查的底部,并且上面的检查都没有给你一个”确定“来接受邮件,就拒绝它。
smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/whitelist.cf, check_sender_access mysql:/etc/postfix/shortcircuit.cf, reject_unverified_recipient, reject_invalid_hostname, reject_unauth_pipelining, reject_unknown_recipient_domain, reject_unauth_destination, permit_mynetworks, permit_sasl_authenticated, check_recipient_access hash:/etc/postfix/access-inbound, reject