晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/proc/thread-self/root/proc/thread-self/root/opt/cpguard/cpglfd/configs/jails.available/ |
| Current File : //proc/thread-self/root/proc/thread-self/root/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"
|