我正在尝试将 Fail2ban 电子邮件通知的发件人更改为单独的域。
我在里面 /etc/fail2ban/jail.local
指定:
sender = no-reply@externaldomain.com
mta = mail
但是,当我重新启动服务时,仍在发送电子邮件root@domain.com
我正在使用 Postfix 并将中继配置为正确使用外部域。Fail2ban 选项中还有什么我遗漏的吗?
因为您正在使用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)s
python字符串插值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 名称)。