You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fail2Ban无法与s-nail联动发送邮件及服务启动失败问题求助

一、先解决Fail2Ban服务启动失败的问题

从日志里的ERROR Found no accessible config files for 'action.d/#sendmail-whois'可以看出,核心问题是action配置里出现了无效的文件引用,大概率是配置语法错误导致的,按以下步骤修复:

  1. 临时恢复基础配置
    先把jail.local里的action改回默认值:

    action = %(action_)s
    

    然后重启服务:

    sudo systemctl restart fail2ban
    

    确认服务能正常启动,这一步是为了排除其他干扰,先让服务跑起来。

  2. 检查action_mw的定义
    打开/etc/fail2ban/jail.conf,找到action_mw的默认配置,正常应该是这样的:

    # ban & send an e-mail with whois report to the destemail.
    action_mw = %(action_)s
                %(mail-whois)s
    

    确认%(mail-whois)s对应的文件/etc/fail2ban/action.d/mail-whois.conf存在,且没有被误修改成带#注释符号的内容。如果文件丢失,可以从Fail2Ban的安装包中恢复,或者手动创建。

  3. 排查action文件的语法错误
    打开mail-whois.conf,检查以下几点:

    • 所有变量(比如<ip>、<destemail>)都正确用尖括号包裹
    • 命令行的引号配对完整,没有遗漏
    • 没有把文件名或命令写成#sendmail-whois这类带注释符号的错误格式

二、配置Fail2Ban与s-nail联动发送邮件

你已经确认s-nail单独运行正常,接下来只需要让Fail2Ban正确调用它即可:

  1. 确认MTA配置无误
    在jail.local的[DEFAULT]部分,保留以下配置(你已经设置过,确保没有写错):

    mta = mail
    destemail = mydestaddress@gmail.com
    sender = myaddress@gmail.com
    

    这里mta = mail是对的,因为s-nail通常会软链接到系统的mail命令,和你单独测试的命令一致。

  2. 调整action文件适配s-nail
    编辑/etc/fail2ban/action.d/mail-whois.conf,找到actionban段落,修改邮件发送命令适配s-nail:

    • 去掉mailx专属的'set escape'参数(s-nail不需要这个配置)
    • 确保命令格式和你单独测试的一致,修改后示例:
      actionban = printf "Hi,\n\nThe IP <ip> has just been banned by Fail2Ban after <failures> attempts against <name>.\n\nHere is more information about <ip>:\n\n`whois <ip>`\n\nRegards,\nFail2Ban" | mail -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <destemail>
      

    如果你习惯用长参数,也可以把-s改成--subject,两者都被s-nail支持。

  3. 测试联动效果

    • 在jail.local的[DEFAULT]部分改回:
      action = %(action_mw)s
      
    • 重启Fail2Ban:sudo systemctl restart fail2ban,确认服务正常运行
    • 手动触发ban事件:用错误密码尝试SSH登录3次(对应你的maxretry=3)
    • 检查/var/log/fail2ban.log是否有邮件发送记录,同时查看目标邮箱是否收到告警邮件

额外排查点

如果邮件还是没发送,补充检查:

  • 查看系统邮件日志(比如/var/log/maillog),确认s-nail是否有发送失败的记录
  • 确保whois命令已安装:执行whois 8.8.8.8,如果提示命令不存在,用包管理器安装(比如sudo dnf install whois或sudo apt install whois)
  • 确认Fail2Ban以root权限运行,确保它能执行whois和mail命令

内容的提问来源于stack exchange,提问作者itarill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:17:29