Managoat is the hosted Fountain. Fountain is the open-source engine, and its name is on the CLI, the API, the SDK and this manual. Everything here applies to Managoat unless a page says it is for a self-hosted server.
Configure email
This guide shows you how to choose a mail setting. Fountain makes you decide. It is not an optional extra.
Fountain refuses to start in production without one. A verification email that Fountain throws away leaves signup at a dead end, with no error to see.
Choose one of three
| Setting | Effect |
|---|---|
RESEND_API_KEY |
Resend delivers the mail. |
SMTP_HOST (with SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD) |
Any SMTP server. The port defaults to 587 with STARTTLS. Omit the username for a relay that wants no authentication. |
EMAIL_DELIVERY=none |
No email. An account self-verifies at registration (ADR 0011). |
EMAIL_FROM sets the sender in the first two modes.
What each choice costs you
A password reset also needs mail that works. With EMAIL_DELIVERY=none, the
one route back into a locked-out account is the database.
That is the trade the mode's boot notice warns you about. It is usually the right trade for a one-operator instance, where you can run a release task.
The mail integration guide covers the provider side. It has domain verification, and what each mode means for signup.
Verify it worked
Register a throwaway account and watch for the verification mail. If no mail arrives, verify the account by hand. Treat that as a mail setup that failed, and not as a fix.
docker compose exec app bin/fountain_server eval \
'Fountain.Release.verify_email("[email protected]")'
If it did not work
The provider accepts mail from a domain that nobody verified. SPF, DKIM and DMARC then fail downstream, and the receiver rejects the message or files it as spam. Read Nobody can log in.
Related
- Mail integration guide, for the provider side.
- Run a release task, for
verify_email/1. - Nobody can log in.