Skip to content

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:

bash
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:

bash
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.

CrewHall