Email
CrewHall sends four kinds of message: confirm your address, reset your password, you have been invited, and a test. Nothing else.
Setting it up
Two environment variables on the API:
CREWHALL_SMTP_URL=smtps://user:password@smtp.example.com
CREWHALL_MAIL_FROM=CrewHall <hello@your-domain>Use a transactional provider — Postmark, Amazon SES, Mailgun, Brevo — rather than a mailbox provider. Then add SPF, DKIM and DMARC records for the sending domain, or your confirmation emails will land in spam, which looks exactly like a broken product.
Many hosts block outbound port 25; use 587 or 465, which is what the providers expect anyway.
Platform → Sign-up shows which mode is in use and has a Send a test email button that reports the actual SMTP error if there is one.
Without SMTP
Everything still works, but the messages are written to the API's log instead of being sent:
docker compose -f compose.prod.yml logs api | grep -A20 'email not sent'That is fine for a private instance where you create the accounts. Two things to know:
- Invitations to an address that has no account show the inviter a link to pass on by hand instead of silently going nowhere.
- Open and domain sign-up cannot work, because nobody can confirm their address. The sign-up page warns you about this.
