Files

2.0 KiB

Campaign SMTP/IMAP Test Bed

This test bed provides dedicated non-production SMTP/IMAP infrastructure for campaign delivery checks. It uses GreenMail and must never be configured with production recipients or credentials.

Start

cd /mnt/DATA/git/govoplan-campaign/dev/mail-testbed
cp .env.example .env
docker compose --env-file .env up -d

Default endpoints:

  • SMTP: 127.0.0.1:3025, plain transport
  • IMAP: 127.0.0.1:3143, plain transport
  • GreenMail API/UI endpoint: 127.0.0.1:38080

Smoke Test

Run the transport smoke from the core virtual environment after installing the campaign and mail modules:

cd /mnt/DATA/git/govoplan-campaign/dev/mail-testbed
set -a
. ./.env
set +a
/mnt/DATA/git/govoplan-core/.venv/bin/python run_transport_smoke.py

The smoke sends and appends three messages:

  • no attachment
  • one normal attachment
  • one password-protected AES ZIP attachment

It verifies SMTP authentication, IMAP authentication, folder listing, delivery to INBOX, and append-to-Sent behavior.

If the smoke is started immediately after docker compose up -d, GreenMail may bind the SMTP/IMAP ports before the services are fully ready. The smoke retries login and folder setup for GOVOPLAN_MAIL_TEST_READY_TIMEOUT_SECONDS.

Use With A Campaign

Use the same settings in a campaign mail profile:

  • SMTP host 127.0.0.1, port 3025, security plain
  • IMAP host 127.0.0.1, port 3143, security plain
  • username and password from .env
  • append folder from GOVOPLAN_MAIL_TEST_SENT_FOLDER

When changing the mailbox, keep GOVOPLAN_MAIL_TEST_USER equal to ${GOVOPLAN_MAIL_TEST_LOCAL_PART}@${GOVOPLAN_MAIL_TEST_DOMAIN} because the compose file creates the GreenMail account from local part, password, and domain while login uses the full email address.

Then run the controlled sending checklist from docs/CAMPAIGN_DELIVERY_RUNBOOK.md for no attachment, one attachment, and password-protected ZIP campaign variants.

Stop

docker compose --env-file .env down -v