From fc0abd5b4d73d1ba92a5f7267f59b38ae99916a8 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Mon, 22 Aug 2016 19:18:23 -0400 Subject: [PATCH] confirm that fail2ban is protecting pop3s, closes #629 --- tests/fail2ban.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/fail2ban.py b/tests/fail2ban.py index fb74e706..ec9530f1 100644 --- a/tests/fail2ban.py +++ b/tests/fail2ban.py @@ -68,6 +68,28 @@ def imap_test(): finally: M.logout() # shuts down connection, has nothing to do with login() + +def pop_test(): + import poplib + try: + M = poplib.POP3_SSL(hostname) + except ConnectionRefusedError: + # looks like fail2ban worked + raise IsBlocked() + try: + M.user('fakeuser') + try: + M.pass_('fakepassword') + except poplib.error_proto as e: + # Authentication should fail. + M = None # don't .quit() + return + M.list() + raise Exception("authentication didn't fail") + finally: + if M: + M.quit() + def http_test(url, expected_status, postdata=None, qsargs=None, auth=None): import urllib.parse import requests @@ -183,6 +205,9 @@ if __name__ == "__main__": # IMAP run_test(imap_test, [], 20, 30, 4) + # POP + run_test(pop_test, [], 20, 30, 4) + # Mail-in-a-Box control panel run_test(http_test, ["/admin/me", 200], 20, 30, 1)