Skip to content
GitHub
documentation

Email and invites

Set up outgoing email so Bud can send invitations, verification links, password resets and email changes.

Member invitations, email verification, and password resets are delivered by email: configure SMTP or invites can’t go out.

SMTP is optional for an installation that uses only the initial administrator. It is required for invitations, password resets, email verification, and approved email changes.

Both apps read the same keys (prefixed aliases like BLOOM_SMTP_HOST are accepted when both run on one host):

SMTP_ENABLED=true
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=replace-with-smtp-username
SMTP_PASSWORD=replace-with-smtp-password
SMTP_FROM_EMAIL=noreply@example.com
SMTP_REPLY_TO=support@example.com
SMTP_STARTTLS=true
SMTP_SSL=false
SMTP_TIMEOUT_SECONDS=30

SMTP_ENABLED is false in the shipped .env.example. Set it to true and configure the SMTP host, sender, authentication, and TLS values before using the email workflows. Every key is listed in the Configuration reference.

Set APP_BASE_URL to your public Bud URL. Bud uses it in the links it emails (invites, email verification, password resets) and in report links.

Token lifetimes are configurable: invites last 72 hours, email verification 24, password resets 2.

Link Default lifetime Setting
Invitation 72 hours INVITE_TOKEN_TTL_HOURS
Email verification 24 hours EMAIL_VERIFICATION_TOKEN_TTL_HOURS
Password reset 2 hours PASSWORD_RESET_TOKEN_TTL_HOURS

One-time links (invitation, email verification, password reset, email change) carry their token only in the URL fragment and are single-use. This keeps tokens out of request targets, server logs, and the Referer header. Revoking an invitation revokes its link.

Email changes require the current password. Administrators confirm the change from their current mailbox, then verify the new mailbox. Other users need administrator approval before verification is sent to the new address: a user requests the change, and an administrator approves or rejects it. The login changes only once the new mailbox confirms. Completing the change ends existing sessions, so sign in again.

Confirming an administrator’s own email change stays with the Admin base role. It is never given through a group.

  • First-run setup. Creating the first administrator at /setup sends a confirmation email, best effort.
  • Access requests. A request for access is emailed to every Admin and every user with access.manage, with a link to Access. If the email fails, the request is kept and the user is told. See Roles and access.
  • Report requests from Bloom. Configured SMTP also emails active report publishers. Unsent email is retried and successful recipients are recorded. See Report requests.

On Cloudron, Bud takes its mail settings from the app’s optional Email addon. Email (invitations, password resets, and address changes) works only if you enabled that addon. Without it, the administrator you create at /setup is the only way in. See Install on Cloudron.