39 lines
1.5 KiB
YAML
39 lines
1.5 KiB
YAML
|
|
# Local mail server for email-connect integration tests (EMAIL-WP-0005-T02).
|
||
|
|
#
|
||
|
|
# GreenMail serves SMTP and IMAP from one container and creates the declared
|
||
|
|
# accounts at startup, which is what the scanner's IMAP source and the
|
||
|
|
# transactional service's SMTP provider need.
|
||
|
|
#
|
||
|
|
# Everything here is test-only. The credentials below are deliberately
|
||
|
|
# non-secret and belong in the repo; real provider material is routed through
|
||
|
|
# OpenBao (see .claude/rules/credential-routing.md) and must never appear here.
|
||
|
|
services:
|
||
|
|
greenmail:
|
||
|
|
image: greenmail/standalone:2.1.12@sha256:9f32971b4f25d32b4de6fa2e297423768441c65e4541f6aecd7631c890a229a7
|
||
|
|
container_name: email-connect-harness
|
||
|
|
# Loopback-only bindings. The harness accepts unauthenticated-ish test
|
||
|
|
# traffic and must never be reachable from the network.
|
||
|
|
ports:
|
||
|
|
- "127.0.0.1:3025:3025" # SMTP
|
||
|
|
- "127.0.0.1:3143:3143" # IMAP
|
||
|
|
- "127.0.0.1:8080:8080" # GreenMail API (readiness, purge)
|
||
|
|
environment:
|
||
|
|
GREENMAIL_OPTS: >-
|
||
|
|
-Dgreenmail.setup.test.smtp
|
||
|
|
-Dgreenmail.setup.test.imap
|
||
|
|
-Dgreenmail.hostname=0.0.0.0
|
||
|
|
-Dgreenmail.auth.disabled
|
||
|
|
-Dgreenmail.verbose
|
||
|
|
# The image ships no curl/wget/nc, so readiness is probed with bash's
|
||
|
|
# /dev/tcp against both mail ports.
|
||
|
|
healthcheck:
|
||
|
|
test:
|
||
|
|
- CMD
|
||
|
|
- bash
|
||
|
|
- -c
|
||
|
|
- "exec 3<>/dev/tcp/127.0.0.1/3025 && exec 4<>/dev/tcp/127.0.0.1/3143"
|
||
|
|
interval: 2s
|
||
|
|
timeout: 3s
|
||
|
|
retries: 30
|
||
|
|
start_period: 5s
|