70 lines
2.0 KiB
Markdown
70 lines
2.0 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
docker compose --env-file .env down -v
|
|
```
|