我已经search了很多这个,但不能设法解决。
解释它最简单的方法是,我曾经只有1个电子邮件服务器,现在我有2个。第一个电子邮件服务器只接受SSL连接,并转发非SSL(即110,143等)到第二个服务器(这是因为客户已经设置了电子邮件并且使用指向第一个电子邮件服务器的DNS条目)。
我想在第二台服务器上使用Fail2ban来阻止login失败,但我无法弄清楚,因为Dovecot只能“看到”第一台服务器的IP地址。
我可以打开服务器1上的iptables日志logging,但无法看到如何将连接“关联”到server2上失败的密码尝试。
几个可能的解决scheme:
站在Dovecot server1上,并将其configuration为使用login引用将客户端发送到server2。 如果您的客户支持login引荐,这可能是最简单的解决scheme。 它会引入一个小的延迟与每个新的login,作为客户端连接到server1,然后被发送到server2。
站在Dovecot server1,并configuration它代理连接到server2。 Dovecot wiki列出了两种代理方法:
将密码转发到server2。 我想这可以工作,只要你可以在server2上configurationDovecot从代理连接logging客户端的IP地址,所以Fail2ban可以使用它。
在server1上执行身份validation。 然后你可以在server1上设置Fail2ban。 缺点是你必须使用主密码loginserver2。
也许一个更简单的解决scheme是将它们全部在server1上运行,并将pop / pops和imap / imaps隧道到server2(autossh是一个简单的解决scheme,但可能有一些更好的方法)。
如果您运行autossh以维持从server2到server1的ssh连接:
autossh -M 3319 -4 -R 993:localhost:993 -R 995:localhost:995 -NC server1 -f
你可以把这行放在/etc/rc.local ,以便快速和肮脏的方式。
-M 3319必须指向一个可用的端口(它也将使用3320)。 autossh使用它来控制隧道启动。 (请参阅autossh的手册页) -4是限制到ipv4(另见手册页) 如果您启动从server1到server2的连接,则-R将变为-L ( L ocal而不是R emote)。