由于我正在为开发团队运行一个域名,并且我想将此域名用作开发邮件服务器,因此我认为有必要限制发送邮件的可能性。事实是:- 域名已启动并运行 - 邮件和网络邮件已启动并运行
我正在使用 plesk,而且由于这台服务器上运行着多个域,所以这有点令人困惑。
现在我正在寻找一种解决方案,只在这个域名之间交换电子邮件。如果域名是 admin.ch,则所有 @admin.ch 邮件帐户都只能发送和接收来自 @admin.ch 的邮件。
你明白我的意思吗?你对我有什么建议吗?
我找到了这个条目: 开发服务器上的 Postfix,只允许将邮件发送到一个域
但问题是该服务器内运行着多个托管。
提前谢谢你的鱼 - 最好的问候,chiuchemandli
- 情况:
为多个域名提供服务的服务器:-domain1.ch -domain2.ch -domain3.ch -devdomain.ch
现在我希望所有来自 devdomain.ch 的用户都能够仅从 devdomain.ch 发送和接收邮件。所有其他域都照常工作。目前我不确定 header_check 是否适合解决我的问题!?
答案1
我能想到三种可能的解决方案,一种是让所有电子邮件都通过内容过滤器(可以是一个简单的脚本,它解析标题,并在满足您设置的条件时将其发送回另一个端口上的 postfix)。不过这需要做一些工作。看看Postfix 过滤器自述文件了解更多信息。
第二种方法是运行两台服务器(或两个 postfix 实例),在一个服务器上托管普通域,在另一个服务器上托管 devdomain,这样您就可以按照另一个答案中的建议锁定第二个服务器。
在主服务器上:
/^From:.*devdomain.ch/ FILTER transport:relay
如果您在 main.cf 中设置 devdomain.ch 以使用中继传输,则在 Relay_maps 中输入第二台服务器的地址,然后发自或发至 devdomain 的邮件将被中继到第二台服务器。然后在第二台服务器上设置 header_check,如下所示:
!/^From:.*devdomain.ch/ REJECT
确保第二个默认只接受发往 devdomain.ch 的邮件。
然后,您可以将两个 Postfix 实例传送到 Dovecot,或者将 Courier 传送到单个位置。
混合两个域的问题在于,后缀标头检查会逐行检查标头,因此您无法确认 To: 是否匹配 From:是否也匹配。正常运作的域使事情变得更加复杂。
允许用户仅使用其用户名发送邮件的一种选项是使用smtpd_sender_login_maps
将 SASL 用户名映射到电子邮件。这将使使用机器上安装的脚本或程序发送邮件变得更加困难(除非他们可以执行 SASL)。这将解决一半的问题,另一半可以通过以下方法解决
check_sender_access=hash:/etc/postfix/restricted_senders
然后你需要定义dev_only
smtpd_restriction_classes = dev_only
dev_only = check_recipient_access hash:/etc/postfix/local_domains,拒绝在 /etc/postfix/local_domains 中:
devdomain.ch 确定