Your IP : 10.1.73.149


Current Path : /opt/cpguard/cpglfd/configs/jails.available/
Upload File :
Current File : //opt/cpguard/cpglfd/configs/jails.available/mail.yaml

jails:
  # ====================================================
  # 1. Postfix (SMTP)
  # Keeps SMTP separate so you can track Spam vs Auth attacks distinctly.
  # ====================================================
  - name: "mail"
    enabled: true
    log_paths:
      - "/var/log/mail.log"
      - "/var/log/maillog"
      - "/var/log/postfix.log"

    rules:
      - regexp: "warning: .*\\[(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)\\]: SASL .*authentication failed"
      - regexp: "lost connection after AUTH from .*\\[(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)\\]"

    max_retries: 10
    find_time: "3m"
    ban_time: "1h"
    actions:
      - name: "cpgblock-mail"
        ban_command: '/usr/bin/cpgcli ip --temp-block {{.IP}} --reason "Blocked by {{.JailName}} due to more than {{.MaxRetry}} abusive access within {{.FindTime}} seconds" --extra " LogFile: {{.LogPath}} | Reason: {{.LogLine}}"'
        unban_command: "/usr/bin/cpgcli ip --temp-block {{.IP}} --remove"


  # ====================================================
  # 2. Dovecot (Universal: cPanel + DirectAdmin + Standard)
  # Efficient: Reads log once, catches ALL formats.
  # ====================================================
  - name: "dovecot-universal"
    enabled: true
    log_paths:
      - "/var/log/maillog"
      - "/var/log/mail.log"
      - "/var/log/dovecot-info.log"

    rules:
      # --- GROUP A: PAM & System Auth (DirectAdmin / Standard) ---
      # Matches: "auth-worker(admin,1.2.3.4)... pam_authenticate() failed"
      - regexp: "auth-worker\\(.*,(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)\\).*: pam_authenticate\\(\\) failed"

      # Matches: "auth(user,1.2.3.4): virtual_user: Password mismatch"
      - regexp: "auth\\(.*,(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+),.*\\): virtual_user: Password mismatch"


      # --- GROUP B: Disconnects & Aborted Logins (cPanel / Mixed) ---
      # Matches: "Disconnected: Connection closed (auth failed... rip=1.2.3.4"
      # Matches: "Disconnected: Too many bad commands... rip=1.2.3.4"
      # Matches: "Disconnected: Inactivity... rip=1.2.3.4"
      - regexp: "(?:imap|pop3)-login: Disconnected:.*(?:auth failed|Too many [a-z]+ commands|Inactivity).* rip=(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"

      # Matches: "Login aborted: Logged out (auth failed... rip=1.2.3.4"
      - regexp: "(?:imap|pop3)-login: Login aborted:.*auth failed.* rip=(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"


      # --- GROUP C: Protocol Violations & DoS ---
      # Matches: "Login aborted: Maximum number of connections... rip=1.2.3.4"
      - regexp: "(?:imap|pop3)-login: Login aborted: Maximum number of connections.* rip=(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"

      # Matches: "Login aborted: Too many invalid commands... rip=1.2.3.4"
      - regexp: "(?:imap|pop3)-login: Login aborted: Too many (?:invalid|bad) commands.* rip=(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"

      # Matches: "Login failed: Cleartext authentication disabled"
      - regexp: "(?:imap|pop3)-login: Login failed: Cleartext authentication disabled.* rip=(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"

    max_retries: 15
    find_time: "2m"
    ban_time: "1h"

    actions:
      - name: "cpgblock-dovecot"
        ban_command: '/usr/bin/cpgcli ip --temp-block {{.IP}} --reason "Blocked by {{.JailName}} due to more than {{.MaxRetry}} abusive access within {{.FindTime}} seconds" --extra " LogFile: {{.LogPath}} | Reason: {{.LogLine}}"'
        unban_command: "/usr/bin/cpgcli ip --temp-block {{.IP}} --remove"