2

我正在尝试将 Fail2ban 电子邮件通知的发件人更改为单独的域。

我在里面 /etc/fail2ban/jail.local指定:

sender = no-reply@externaldomain.com
mta = mail

但是,当我重新启动服务时,仍在发送电子邮件root@domain.com

我正在使用 Postfix 并将中继配置为正确使用外部域。Fail2ban 选项中还有什么我遗漏的吗?

4

1 回答 1

0

概括

因为您正在使用mta = mail,所以不使用该变量sender(默认情况下)。您必须更改一些配置以使命令使用该sender变量。

如果你和我一样,你会读到一篇文章,比如如何在 Ubuntu 14.04 上使用 Fail2Ban 保护 Nginx 服务器,其中提到使用sendername = Fail2BanAlerts. 也许sendername在过去版本的默认操作中使用,但至少在我的版本 v0.11.1 中,操作既不使用sender也不sendername使用mail(它们被sendmail-*操作使用,例如sendmail-whois-lines.conf)。您可以更改操作以使用变量或操作中的硬编码值。

细节

在以dirmta = mail开头的文件之一中指定了如何实际发送电子邮件(在您的情况下,因为您指定了):mail/etc/fail2ban/action.d/

  • mail-buffered.conf
  • mail-whois-common.conf
  • mail-whois-lines.conf
  • mail-whois.conf
  • mail.conf

你没有说你action的设置是什么,但是让我们假设它的配置是这样的action = %(action_mwl)s

在你的监狱文件(例如/etc/fail2ban/jail.local)中,它有这样的内容:

action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
             %(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]

请注意%(mta)s-whois-lines第二行开头的部分。是带有变量的%(mta)spython字符串插值mta,所以它变成了mail-whois-lines. 因此,您需要编辑文件/etc/fail2ban/action.d/mail-whois-lines.conf

在文件/etc/fail2ban/action.d/mail-whois-lines.conf中,有这样的:

mailcmd = mail -s

你可以在这里硬编码一些值。邮件命令(Postfix)需要用来-a指定像From:. 所以你可以这样做:

mailcmd = mail -a "From: My Name <myemail@example.com>" -s

或者你可以sender像这样使用变量:

mailcmd = mail -a "From: <sender>" -s

额外学分:使用sendername变量

如果你有这个jail.local

sendername = My Name

你怎么用它?我们首先需要更新(仅第二行)我们设置的位置action_mwl。您已经可以看到它sender正在那里传递。让我们添加sendername.

action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
             %(mta)s-whois-lines[name=%(__name__)s, sendername="%(sendername)s", sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]

然后在action.d/mail-whois-lines.conf

mailcmd = mail -a "From: <sendername> <<sender>>" -s

我们必须使用双尖括号,sender因为变量需要尖括号,而From标题本身需要电子邮件地址周围的尖括号(如果使用 From 名称)。

于 2021-10-30T17:07:18.200 回答