From 5312495d0eb2c3e45f092b951f34bbb874d30c72 Mon Sep 17 00:00:00 2001 From: Florent Daigniere Date: Wed, 15 Nov 2023 10:15:34 +0100 Subject: [PATCH 1/3] Retry up to 5 times if not ready --- tests/email_test.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/tests/email_test.py b/tests/email_test.py index e7cd66ed..5284239b 100755 --- a/tests/email_test.py +++ b/tests/email_test.py @@ -21,19 +21,27 @@ if len(sys.argv) == 3: part.add_header('Content-Disposition', "attachment; filename=%s" % ntpath.basename(sys.argv[2])) msg.attach(part) -try: - smtp_server = smtplib.SMTP('localhost') - smtp_server.set_debuglevel(1) - smtp_server.connect('localhost', 587) - smtp_server.ehlo() - smtp_server.starttls() - smtp_server.ehlo() - smtp_server.login("admin@mailu.io", "password") +for i in range(5): + try: + smtp_server = smtplib.SMTP('localhost') + smtp_server.set_debuglevel(1) + smtp_server.connect('localhost', 587) + smtp_server.ehlo() + smtp_server.starttls() + smtp_server.ehlo() + smtp_server.login("admin@mailu.io", "password") - smtp_server.sendmail("admin@mailu.io", "user@mailu.io", msg.as_string()) - smtp_server.quit() -except: - sys.exit(25) + smtp_server.sendmail("admin@mailu.io", "user@mailu.io", msg.as_string()) + smtp_server.quit() + except smtplib.SMTPDataError as e: + if e.smtp_code == 451: + print(f"Not ready attempt {i}") + time.sleep(5) + continue + sys.exit(25) + except: + sys.exit(25) + break time.sleep(30) From 0b776fffbd2e02c17280664d371c427d35d95514 Mon Sep 17 00:00:00 2001 From: Florent Daigniere Date: Wed, 15 Nov 2023 10:25:55 +0100 Subject: [PATCH 2/3] Ensure the logic is right --- tests/compose/filters/02_email_antispam.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/compose/filters/02_email_antispam.sh b/tests/compose/filters/02_email_antispam.sh index ac2653a3..3972cb1c 100755 --- a/tests/compose/filters/02_email_antispam.sh +++ b/tests/compose/filters/02_email_antispam.sh @@ -1,7 +1,7 @@ # GTUBE should be blocked, see https://rspamd.com/doc/gtube_patterns.html python3 tests/email_test.py "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" -if [ $? -eq 25 ]; then - exit 0 -else +if [ $? -ne 25 ]; then exit 1 fi + +exit 0 From 3d13e72133913e71c666056a795fb3d72d61df3a Mon Sep 17 00:00:00 2001 From: Florent Daigniere Date: Wed, 15 Nov 2023 10:33:02 +0100 Subject: [PATCH 3/3] Only return 25 when it's a permanent error --- tests/email_test.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/email_test.py b/tests/email_test.py index 5284239b..68398823 100755 --- a/tests/email_test.py +++ b/tests/email_test.py @@ -33,14 +33,18 @@ for i in range(5): smtp_server.sendmail("admin@mailu.io", "user@mailu.io", msg.as_string()) smtp_server.quit() + except smtplib.SMTPRecipientsRefused: + sys.exit(25) except smtplib.SMTPDataError as e: if e.smtp_code == 451: print(f"Not ready attempt {i}") time.sleep(5) continue - sys.exit(25) + if e.smtp_code >= 500 and e.smtp_code <600: + sys.exit(25) + sys.exit(2525) except: - sys.exit(25) + sys.exit(2525) break time.sleep(30)