Files
legacy-email-proxy/README.md
T
lyrathorpe aa746b780d
Build and publish container / build (push) Failing after 1m7s
test: add pytest coverage and run tests in CI
2026-06-17 16:14:22 +01:00

1.8 KiB

Legacy Email Proxy

Proxy an unauthenticated, unencrypted POP3 / SMTP server to authenticated IMAPS and SMTPS backends.

Features

  • Exposes legacy POP3 on 0.0.0.0:110 and legacy SMTP on 0.0.0.0:25
  • Forwards POP3 mailbox access to an IMAP backend
  • Forwards SMTP submissions to an SMTPS backend
  • Backend host, ports, and credentials are configured via environment variables

Environment Variables

  • POP3_BIND_ADDR (default 0.0.0.0)

  • POP3_BIND_PORT (default 110)

  • SMTP_BIND_ADDR (default 0.0.0.0)

  • SMTP_BIND_PORT (default 25)

  • BACKEND_IMAP_HOST

  • BACKEND_IMAP_PORT (default 993)

  • BACKEND_IMAP_USER

  • BACKEND_IMAP_PASS

  • BACKEND_IMAP_USE_SSL (default true)

  • BACKEND_IMAP_USE_STARTTLS (default false)

  • BACKEND_SMTP_HOST

  • BACKEND_SMTP_PORT (default 465)

  • BACKEND_SMTP_USER

  • BACKEND_SMTP_PASS

  • BACKEND_SMTP_USE_SSL (default true)

  • BACKEND_SMTP_USE_TLS (default false)

Build and run

This project targets the latest Python LTS release. The included Dockerfile uses python:3.12-slim, which is compatible with Python 3.12 and later LTS releases.

docker build -t legacy-email-proxy .
docker run --rm -p 110:110 -p 25:25 \
  -e BACKEND_IMAP_HOST=imap.example.com \
  -e BACKEND_IMAP_PORT=993 \
  -e BACKEND_IMAP_USER=imap-user \
  -e BACKEND_IMAP_PASS=imap-pass \
  -e BACKEND_SMTP_HOST=smtp.example.com \
  -e BACKEND_SMTP_PORT=465 \
  -e BACKEND_SMTP_USER=smtp-user \
  -e BACKEND_SMTP_PASS=smtp-pass \
  legacy-email-proxy

Tests

Run tests locally with:

python -m pip install --upgrade pip
pip install -r requirements.txt
pytest -q

Notes

This implementation begins the proxy with a minimal POP3 command set and SMTP delivery path. It is designed to start development on the required application architecture.