Eu tive o mesmo problema. Eu tenho 2 cadeias indo, o ssh e recidive. A cadeia ssh estava me enviando e-mails perfeitamente, mas nada de recidiva. Eu estou correndo:
Fail2Ban v0.8.13
Minha configuração global relevante é idêntica ao que você postou:
banaction = iptables-multiport
mta = sendmail
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_mwl)s
Minha configuração jail recidiva inicial (que não estava enviando e-mails):
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
#action = iptables-allports[name=recidive]
# sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime = 604800 ; 1 week
findtime = 604800
#findtime = 86400 ; 1 day
maxretry = 3
Observe que eu havia comentado a ação recidiva padrão. Pelo menos para mim, foi o que veio como padrão. Eu fiz isso porque queria que os e-mails de recidiva funcionassem como o ssh, que também usava a ação padrão. Com essa configuração ... não tenho nada. Grilos Mas a prisão recidiva funcionou. Eu não sei exatamente qual era o problema, mas eu sabia que tinha que consertar. Então, eu primeiro tentei descomentar a ação. Então, ainda funcionou, mas sem e-mails. Ou então eu pensei. Acabou que os e-mails estavam indo para a conta raiz local. Eu os encontrei na caixa de correio / var / mail / [user], para a qual eu enviei o email root. Então, percebi que era porque estemail não estava sendo usado nessa ação padrão. Então, o que acabei fazendo foi apenas copiar o padrão global action_mwl & ajustou para tirar o port.
Então minha configuração final de jail recidiva, que funcionou:
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
#action = iptables-allports[name=recidive]
# sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
action = %(banaction)s[name=%(__name__)s, protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
Talvez seja tudo por design ou um bug antigo - não sei. Mas é assim que consegui que funcionasse. Isso pode ser tarde demais para ajudá-lo, mas talvez ajude o próximo no mesmo barco ...