I ran the following test, trying to see what is matched by the <ADDR> variable used in the regex expression for my filter. Below is shown the command for fail2ban-regex and the output from it. This shows both a sample log file line that appears to be failing to get the address banned, and the regex expression I am using.
To my untrained eyes, the variable/pattern for <ADDR> should match the IP4 address 87.246.7.246 but it appears that the actual match is 7.246.7.246 ie the leading 8 is missing in the matched IP address. Why? Is my regex expression wrong or is this a bug? If so, how to I report the bug?
Many thanks in advance for helping me with this issue! Marc...
fail2ban-regex -v -v -l HEAVYDEBUG "2022-03-05 09:30:18,739 ERROR | org.apache.james.protocols.api.handler.CommandHandler | AUTH method LOGIN failed from r...@marcchamberlin.com@87.246.7.246" "^\s*ERROR(\s*\|)?(\s+[\w+\.]+\w+\s+\|)?\s+AUTH method LOGIN failed from.*<ADDR>\s*$"Running tests =============2022-03-05 10:06:27,753 7F3161E20740 DEBUG Setting usedns = warn for Filter(None)2022-03-05 10:06:27,753 7F3161E20740 DEBUG Created Filter(None)Use failregex line : ^\s*ERROR(\s*\|)?(\s+[\w+\.]+\w+\s+\|)?\s+AUTH met... Use single line : 2022-03-05 09:30:18,739 ERROR | org.apache.james.p...2022-03-05 10:06:27,754 7F3161E20740 TRACE Working on line '2022-03-05 09:30:18,739 ERROR | org.apache.james.protocols.api.handler.CommandHandler | AUTH method LOGIN failed from r...@marcchamberlin.com@87.246.7.246' 2022-03-05 10:06:27,754 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<Y>202\d)(?P<_sep>[-/.])(?P<m>1[0-2]|0[1-9]|[1-9])(?P=_sep)(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?:T| ?)(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:[.,](?P<f>[0-9]{1,6}))?(?:\s*(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,755 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,755 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) (?P<Y>202\d) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?)(?=\b|\W|$) 2022-03-05 10:06:27,755 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?P<_sep>[-/])(?P<m>1[0-2]|0[1-9]|[1-9])(?P=_sep)(?:(?P<Y>202\d)|(?P<y>2\d)) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?P<_sep>[-/])(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(?P=_sep)(?P<Y>202\d)[ :]?(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])/(?P<Y>202\d):(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<m>1[0-2]|0[1-9]|[1-9])-(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])-(?P<Y>202\d) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?)(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex ((?:^|(?P<square>(?<=^\[))|(?P<selinux>(?<=\baudit\()))\d{10,11}\b(?:\.\d{3,6})?)(?:(?(selinux)(?=:\d+\)))|(?(square)(?=\])))(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex ^(<(?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])/(?P<y>2\d)@(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)>)(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<y>2\d)(?P<m>1[0-2]|0[1-9])(?P<d>3[0-1]|[1-2]\d|0[1-9]) ?(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,756 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]), (?P<Y>202\d) (?P<I>1[0-2]|0[1-9]|[1-9]):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d) (?P<p>am|pm))(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex (?iu)^((?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])-(?P<y>2\d) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex (?=^|\b|\W)((?P<Y>202\d)(?P<m>1[0-2]|0[1-9])(?P<d>3[0-1]|[1-2]\d|0[1-9])(?:T| ?)(?P<H>2[0-3]|[0-1]\d)(?P<M>[0-5]\d)(?P<S>6[0-1]|[0-5]\d)(?:[.,](?P<f>[0-9]{1,6}))?(?:\s*(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?:(?P<Z>Z|[A-Z]{3,5}) )?(?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex (?=^|\b|\W)(?iu)((?:(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?) )?(?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex (@[0-9a-f]{24})(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<Y>202\d)(?P<_sep>[-/.])(?P<m>1[0-2]|0[1-9]|[1-9])(?P=_sep)(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?:T| ?)(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:[.,](?P<f>[0-9]{1,6}))?(?:\s*(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,757 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) (?P<Y>202\d) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?)(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?P<_sep>[-/])(?P<m>1[0-2]|0[1-9]|[1-9])(?P=_sep)(?:(?P<Y>202\d)|(?P<y>2\d)) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])(?P<_sep>[-/])(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(?P=_sep)(?P<Y>202\d)[ :]?(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<m>1[0-2]|0[1-9]|[1-9])/(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])/(?P<Y>202\d):(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<m>1[0-2]|0[1-9]|[1-9])-(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])-(?P<Y>202\d) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?)(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<square>(?<=^\[))?\d{10,11}\b(?:\.\d{3,6})?)(?(square)(?=\]))(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<y>2\d)(?P<m>1[0-2]|0[1-9])(?P<d>3[0-1]|[1-2]\d|0[1-9]) ?(?P<H>2[0-3]|[0-1]\d|\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d))(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]), (?P<Y>202\d) (?P<I>1[0-2]|0[1-9]|[1-9]):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d) (?P<p>am|pm))(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?((?P<Y>202\d)(?P<m>1[0-2]|0[1-9])(?P<d>3[0-1]|[1-2]\d|0[1-9])(?:T| ?)(?P<H>2[0-3]|[0-1]\d)(?P<M>[0-5]\d)(?P<S>6[0-1]|[0-5]\d)(?:[.,](?P<f>[0-9]{1,6}))?(?:\s*(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?))?)(?=\b|\W|$) 2022-03-05 10:06:27,758 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?:(?P<Z>Z|[A-Z]{3,5}) )?(?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,759 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(?iu)((?:(?P<z>Z|UTC|GMT|[+-][01]\d(?::?\d{2})?) )?(?:(?P<a>mon|tue|wed|thu|fri|sat|sun) )?(?P<b>jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9]) ?(?P<H>[0-2]?\d):(?P<M>[0-5]\d|\d):(?P<S>6[0-1]|[0-5]\d|\d)(?:\.(?P<f>[0-9]{1,6}))?(?: (?P<Y>202\d))?)(?=\b|\W|$) 2022-03-05 10:06:27,759 7F3161E20740 TRACE constructed regex ^(?:\W{0,2})?(@[0-9a-f]{24})(?=\b|\W|$) 2022-03-05 10:06:27,759 7F3161E20740 HEAVY try to match time for line: 2022-03-05 09:30:18,739 ERROR | org.apache.james.protocols.api.handler.CommandHandler | AUTH method LOGIN failed from rp2022-03-05 10:06:27,759 7F3161E20740 #06-L search template (31) ...2022-03-05 10:06:27,759 7F3161E20740 HEAVY try template #00: {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)? 2022-03-05 10:06:27,760 7F3161E20740 #06-L matched time template #00 (at 0 <= 2147483647, 1) {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)? 2022-03-05 10:06:27,760 7F3161E20740 #06-L got time 1646501418.000000 for '2022-03-05 09:30:18,739' using template {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)? 2022-03-05 10:06:27,760 7F3161E20740 HEAVY Looking for match of [('', '2022-03-05 09:30:18,739', ' ERROR | org.apache.james.protocols.api.handler.CommandHandler | AUTH method LOGIN failed from r...@marcchamberlin.com@87.246.7.246')] 2022-03-05 10:06:27,760 7F3161E20740 HEAVY Looking for failregex 0 - '^\\s*ERROR(\\s*\\|)?(\\s+[\\w+\\.]+\\w+\\s+\\|)?\\s+AUTH method LOGIN failed from.*\\[?(?:(?:::f{4,6}:)?(?P<ip4>(?:\\d{1,3}\\.){3}\\d{1,3})|(?P<ip6>(?:[0-9a-fA-F]{1,4}::?|::){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):)))\\]?\\s*$' 2022-03-05 10:06:27,760 7F3161E20740 TRACE Matched failregex 0: {'ip4': '7.246.7.246', 'ip6': None}Results ======= Failregex: 1 total |- #) [# of hits] regular expression| 1) [1] ^\s*ERROR(\s*\|)?(\s+[\w+\.]+\w+\s+\|)?\s+AUTH method LOGIN failed from.*<ADDR>\s*$| 7.246.7.246 Sat Mar 05 09:30:18 2022 `- Ignoreregex: 0 total Date template hits: |- [# of hits] date format| [1] {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)? | [0] {^LN-BEG}(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)? | [0] {^LN-BEG}(?:DAY )?MON Day ExYear %k:Minute:Second(?:\.Microseconds)? | [0] {^LN-BEG}Day(?P<_sep>[-/])Month(?P=_sep)(?:ExYear|ExYear2) %k:Minute:Second | [0] {^LN-BEG}Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?| [0] {^LN-BEG}Month/Day/ExYear:24hour:Minute:Second | [0] {^LN-BEG}Month-Day-ExYear %k:Minute:Second(?:\.Microseconds)? | [0] {^LN-BEG}Epoch | [0] {^LN-BEG}ExYear2ExMonthExDay ?24hour:Minute:Second | [0] {^LN-BEG}MON Day, ExYear 12hour:Minute:Second AMPM| [0] {^LN-BEG}ExYearExMonthExDay(?:T| ?)Ex24hourExMinuteExSecond(?:[.,]Microseconds)?(?:\s*Zone offset)? | [0] {^LN-BEG}(?:Zone name )?(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)? | [0] {^LN-BEG}(?:Zone offset )?(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)?| [0] {^LN-BEG}TAI64N| [0] ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?| [0] (?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)? | [0] (?:DAY )?MON Day ExYear %k:Minute:Second(?:\.Microseconds)? | [0] Day(?P<_sep>[-/])Month(?P=_sep)(?:ExYear|ExYear2) %k:Minute:Second| [0] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?| [0] Month/Day/ExYear:24hour:Minute:Second | [0] Month-Day-ExYear %k:Minute:Second(?:\.Microseconds)? | [0] Epoch | [0] {^LN-BEG}24hour:Minute:Second | [0] ^<Month/Day/ExYear2@24hour:Minute:Second> | [0] ExYear2ExMonthExDay ?24hour:Minute:Second | [0] MON Day, ExYear 12hour:Minute:Second AMPM | [0] ^MON-Day-ExYear2 %k:Minute:Second| [0] ExYearExMonthExDay(?:T| ?)Ex24hourExMinuteExSecond(?:[.,]Microseconds)?(?:\s*Zone offset)? | [0] (?:Zone name )?(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)? | [0] (?:Zone offset )?(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)?| [0] TAI64N `- Lines: 1 lines, 0 ignored, 1 matched, 0 missed [processed in 0.01 sec]
-- *"The Truth is out there" - Spooky**_ _ . . . . . . _ _ . _ _ _ _ . . . . _ . . . . _ _ . _ _ _ . . . . _ _ . _ . . _ . _ _ _ _ . _ . _ . _ . _ . *
Computers: the final frontier. These are the voyages of the user Marc. His mission: to explore strange new hardware. To seek out new software and new applications. To boldly go where no Marc has gone before!(/This email is digitally signed and the electronic signature is attached. If you know how, you can use my public key to prove this email indeed came from me and has not been modified in transit. My public key, which can be used for sending encrypted email to me also, can be found at - https://keys.openpgp.org/search?q=m...@marcchamberlin.com or just ask me for it and I will send it to you as an attachment. If you don't understand all this geek speak, no worries, just ignore this explanation and ignore the signature key attached to this email (it will look like gibberish if you open it) and/or ask me to explain it further if you like./)
OpenPGP_0xD23D75B63BF0E8B7.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
_______________________________________________ Fail2ban-users mailing list Fail2ban-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fail2ban-users