diff --git a/tests/fail2ban.py b/tests/fail2ban.py index 0a3c1da4..1cb55eba 100644 --- a/tests/fail2ban.py +++ b/tests/fail2ban.py @@ -90,6 +90,26 @@ def pop_test(): if M: M.quit() +def managesieve_test(): + # We don't have a Python sieve client, so we'll + # just run the IMAP client and see what happens. + import imaplib + + try: + M = imaplib.IMAP4(hostname, 4190) + except ConnectionRefusedError: + # looks like fail2ban worked + raise IsBlocked() + + try: + M.login("fakeuser", "fakepassword") + raise Exception("authentication didn't fail") + except imaplib.IMAP4.error: + # authentication should fail + pass + finally: + M.logout() # shuts down connection, has nothing to do with login() + def http_test(url, expected_status, postdata=None, qsargs=None, auth=None): import urllib.parse import requests @@ -208,6 +228,9 @@ if __name__ == "__main__": # POP run_test(pop_test, [], 20, 30, 4) + # Managesieve + run_test(managesieve_test, [], 20, 30, 4) + # Mail-in-a-Box control panel run_test(http_test, ["/admin/me", 200], 20, 30, 1)