我有两个 Postfix 邮件服务器
- mailserver1 正在运行 amavis 来扫描垃圾邮件和病毒邮件
- mailserver2 在没有 amavis 的情况下运行。
我的问题是,如何以最聪明的方式分别使用 mailserver1 和 mailserver1 上的 amavis 来扫描来自 mailserver2 的邮件。
我已经在 mailserver1 上配置了 postfix 以将邮件转发到 amavis,并且运行正常,但如果可能的话,我想将来自 mailserver2 的邮件直接转发到 amavis。有人知道我如何指定 amavis 也监听外部端口吗?我的 amavis 配置已经如下所示:
#where can i specify the ip address and the networks for which amavis is listening??
$inet_socket_port = [10024,10028]; # default listening socket
#incoming mail from server1
$interface_policy{'10024'} = 'S1';
#incoming mail from server2 forewarded by server1
$interface_policy{'10028'} = 'S2';
$policy_bank{'S1'} = {
#send back to postfix on local server1
notify_method => 'smtp:[127.0.0.1]:10026',
forward_method => 'smtp:[127.0.0.1]:10026',
};
$policy_bank{'S2'} = {
#send to postfix on other server2
notify_method => 'smtp:[192.168.1.2]:10029',
forward_method => 'smtp:[192.168.1.2]:10029',
};
那么我需要在这个配置中添加什么才能让我能够使用 amavis 从 mailserver2 接收直邮并将其发回给它。
答案1
Amavisd 使用参数$inet_socket_bind
指定绑定 IP 地址。可能的值是undef或一个IP 地址。因此,无法指定某个 IP 地址但不是所有的。默认值为 127.0.0.1,这意味着 amavis 仅在本地主机上监听。
如果您通过将 amavisd 绑定到公共 IP 地址来公开它,请不要忘记设置 ACL,这样您就不会允许自由访问 amavisd SMTP 端口。为此,请使用参数@inet_acl
。例如:
@inet_acl = qw(127.0.0.1 [::1] 192.168.1.2); # this will allow connection only from 127.0.0.1 or [::1] or 192.168.1.2)
答案2
旧帖子,但需要注意。要将邮件返回到其来源 IP,请使用“*”。因此,OP 的 2 个策略库可以用一个指令代替
$forward_method = 'smtp:*:10026';
已测试,并且有效。