Commit Graph

4 Commits

Author SHA1 Message Date
lyrathorpe df19c60b17 fix: relay raw SMTP bytes without decoding
Build and publish container / build (pull_request) Successful in 9m6s
send_message decoded the message body with utf-8/errors="replace",
corrupting 8-bit content before forwarding. Pass the raw bytes straight
to smtp.sendmail so the message is relayed unchanged.

Fixes #4

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:22:11 +01:00
lyrathorpe a29889b731 fix: correct POP3 RETR/TOP, static maildrop, and IMAP fetching
Fix several POP3/IMAP proxy correctness defects:

- RETR returned an empty body because fetch_message kept only top-level
  bytes from the imaplib FETCH response; extract the RFC822 literal from
  the response tuple instead.
- DELE marks were wiped mid-session because STAT/LIST/UIDL refreshed the
  mailbox and cleared the deleted set. Snapshot the UID list once at
  authentication and keep the maildrop static for the session lifetime.
- RETR/TOP output now normalises line endings to CRLF, byte-stuffs lines
  beginning with ".", and emits the terminating ".\r\n" per RFC 1939.
- STAT/LIST batch message sizes via a single threaded UID FETCH and the
  IMAP client now uses a 30s socket timeout, keeping blocking work off the
  event loop.
- Implement the POP3 TOP command (headers plus first n body lines).

Fixes #1
Fixes #2
Fixes #3
Fixes #5
Fixes #6

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:22:11 +01:00
lyrathorpe 91d70cf10c test: finalize CI test coverage and fix dependency import path 2026-06-17 16:39:22 +01:00
lyrathorpe aa746b780d test: add pytest coverage and run tests in CI
Build and publish container / build (push) Failing after 1m7s
2026-06-17 16:14:22 +01:00