From 8807cbbf386f32294f08963a8295c9820218ae01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A9?= =?UTF-8?q?=F0=9D=94=B5=F0=9D=94=B5=F0=9D=94=A6=F0=9D=94=A6=F0=9D=94=A6?= <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 14:29:56 +0000 Subject: [PATCH 1/6] test: poll inbox in sender ip minitest --- src/relay_minitest/test_relay.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index 8ac12e4..38e6692 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -102,7 +102,6 @@ def test_one_on_one_smtp_only(self, cmfactory, cmfactory2, relayadmin2, lp): msg2 = ac2.wait_for_incoming_msg() assert msg2.get_snapshot().text == "should still arrive over smtp" - def test_hide_senders_ip_address(cmfactory, ssl_context): public_ip = requests.get("http://icanhazip.com").content.decode().strip() assert ipaddress.ip_address(public_ip) @@ -112,15 +111,25 @@ def test_hide_senders_ip_address(cmfactory, ssl_context): chat.send_text("testing submission header cleanup") user2.wait_for_incoming_msg() + addr = user2.get_config("addr") host = addr.split("@")[1].strip("[]") pw = user2.get_config("mail_pw") mailbox = imap_tools.MailBox(host, ssl_context=ssl_context) mailbox.login(addr, pw) - msgs = list(mailbox.fetch(mark_seen=False)) - assert msgs, "expected at least one message" - assert public_ip not in msgs[0].obj.as_string() + deadline = time.time() + 10 + msgs = [] + + while time.time() < deadline: + mailbox.folder.set("INBOX") + msgs = list(mailbox.fetch(criteria="ALL", mark_seen=False)) + if msgs: + break + time.sleep(0.5) + + assert msgs, "expected at least one message" + assert public_ip not in msgs[-1].obj.as_string() def test_unencrypted_rejection(cmsetup, lp): """Test that unencrypted messages are rejected by the relay.""" From 17e0d871869ad953268eefa0a448e95c73b9197d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A9?= =?UTF-8?q?=F0=9D=94=B5=F0=9D=94=B5=F0=9D=94=A6=F0=9D=94=A6=F0=9D=94=A6?= <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 14:59:58 +0000 Subject: [PATCH 2/6] test: resolve assertion --- src/relay_minitest/test_relay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index 38e6692..9639006 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -7,7 +7,7 @@ import imap_tools import pytest import requests - +import time def test_login_basic_functioning(cmsetup, lp): """Test that an initial login creates a user automatically""" From 6d64dff5cf1ad3ccd37f7b51ee0a96bbdc9c84d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A9?= =?UTF-8?q?=F0=9D=94=B5=F0=9D=94=B5=F0=9D=94=A6=F0=9D=94=A6=F0=9D=94=A6?= <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 15:17:23 +0000 Subject: [PATCH 3/6] test: use bcc_self for sender ip minitest --- src/relay_minitest/test_relay.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index 9639006..002e997 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -107,14 +107,15 @@ def test_hide_senders_ip_address(cmfactory, ssl_context): assert ipaddress.ip_address(public_ip) user1, user2 = cmfactory.get_online_accounts(2) + user1.set_config("bcc_self", "1") chat = cmfactory.get_accepted_chat(user1, user2) chat.send_text("testing submission header cleanup") user2.wait_for_incoming_msg() - addr = user2.get_config("addr") - host = addr.split("@")[1].strip("[]") - pw = user2.get_config("mail_pw") + addr = user1.get_config("addr") + host = addr.split("@")[1].strip("[").strip("]") + pw = user1.get_config("mail_pw") mailbox = imap_tools.MailBox(host, ssl_context=ssl_context) mailbox.login(addr, pw) @@ -130,7 +131,6 @@ def test_hide_senders_ip_address(cmfactory, ssl_context): assert msgs, "expected at least one message" assert public_ip not in msgs[-1].obj.as_string() - def test_unencrypted_rejection(cmsetup, lp): """Test that unencrypted messages are rejected by the relay.""" lp.sec("creating users") From 994f29480d564ebd4eeacefeb6f5e0aa5a4c52bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A0=F0=9D=94=A9?= =?UTF-8?q?=F0=9D=94=B5=F0=9D=94=B5=F0=9D=94=A6=F0=9D=94=A6=F0=9D=94=A6?= <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 15:45:46 +0000 Subject: [PATCH 4/6] chore: order lint --- src/relay_minitest/test_relay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index 002e997..9f421b7 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -2,12 +2,12 @@ import ipaddress import smtplib import ssl +import time from email.mime.text import MIMEText import imap_tools import pytest import requests -import time def test_login_basic_functioning(cmsetup, lp): """Test that an initial login creates a user automatically""" From 8fb74c5d95c21859b0a58ec2bfa7c20a2c31d909 Mon Sep 17 00:00:00 2001 From: ccclxxiii <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 15:50:44 +0000 Subject: [PATCH 5/6] style: fix relay_minitest import spacing --- src/relay_minitest/test_relay.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index 9f421b7..fe7167a 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -9,6 +9,7 @@ import pytest import requests + def test_login_basic_functioning(cmsetup, lp): """Test that an initial login creates a user automatically""" lp.sec("creating user and checking auto-creation") From 1381f2087f74adb844c1649254faeefefb45cd61 Mon Sep 17 00:00:00 2001 From: ccclxxiii <151577046+ccclxxiii@users.noreply.github.com> Date: Thu, 28 May 2026 16:16:22 +0000 Subject: [PATCH 6/6] test: preserve sender ip test message with bcc_self --- src/relay_minitest/test_relay.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/relay_minitest/test_relay.py b/src/relay_minitest/test_relay.py index fe7167a..b350da1 100644 --- a/src/relay_minitest/test_relay.py +++ b/src/relay_minitest/test_relay.py @@ -2,7 +2,6 @@ import ipaddress import smtplib import ssl -import time from email.mime.text import MIMEText import imap_tools @@ -108,30 +107,22 @@ def test_hide_senders_ip_address(cmfactory, ssl_context): assert ipaddress.ip_address(public_ip) user1, user2 = cmfactory.get_online_accounts(2) - user1.set_config("bcc_self", "1") + user2.set_config("bcc_self", "1") chat = cmfactory.get_accepted_chat(user1, user2) chat.send_text("testing submission header cleanup") user2.wait_for_incoming_msg() - addr = user1.get_config("addr") - host = addr.split("@")[1].strip("[").strip("]") - pw = user1.get_config("mail_pw") + addr = user2.get_config("addr") + host = addr.split("@")[1].strip("[]") + pw = user2.get_config("mail_pw") mailbox = imap_tools.MailBox(host, ssl_context=ssl_context) mailbox.login(addr, pw) - - deadline = time.time() + 10 - msgs = [] - - while time.time() < deadline: - mailbox.folder.set("INBOX") - msgs = list(mailbox.fetch(criteria="ALL", mark_seen=False)) - if msgs: - break - time.sleep(0.5) + msgs = list(mailbox.fetch(mark_seen=False)) assert msgs, "expected at least one message" - assert public_ip not in msgs[-1].obj.as_string() + assert public_ip not in msgs[0].obj.as_string() + def test_unencrypted_rejection(cmsetup, lp): """Test that unencrypted messages are rejected by the relay.""" lp.sec("creating users")