Lightweight HTTP server to handle webhooks from listmonk and forward it to different messengers.
- Pinpoint
- Twilio
- AWS SES - Use
listmonk >= v2.2.0
- Build binary
make build
- Change config.toml and tweak messenger config
Run the binary which starts a server on :8082
./listmonk-messenger.bin --config config.toml --msgr pinpoint --msgr ses
The ses and pinpoint messengers can authenticate to AWS in two ways:
-
Static credentials: set
access_keyandsecret_key. If both are left empty, the default AWS credential chain is used (environment variables, EC2/ECS instance profile, etc). -
AssumeRole (temporary credentials): set
role_arnto have the messenger assume an IAM role via STS and use the resulting temporary credentials. The base credentials used to callAssumeRoleare the static keys above if provided, otherwise the default credential chain. This is the recommended approach over long-lived access keys, and is required for third-party cross-account access.Field Required Description role_arnyes ARN of the IAM role to assume, e.g. arn:aws:iam::123456789012:role/ses.external_idno ExternalIdfor third-party access (guards against the confused deputy).role_session_nameno Session name for the assumed role. Defaults to listmonk-messenger.
make test # unit tests
make test-integration # spins up a fakecloud mock AWS via docker and runs the integration tests
make test-integration requires Docker. It brings up fakecloud (defined in
docker-compose.test.yml), runs the integration-tagged tests against it, and
tears it down afterwards. To run the tests against an already-running mock, set
FAKECLOUD_ENDPOINT and invoke go test -tags=integration ./... directly.
GET /health returns 200 OK and can be used as a liveness/readiness probe for
monitoring.



