Mail server (SMTP) configuration
SpeedyFiles sends transactional email for outbound package notifications, inbound upload requests, and password resets. It uses any SMTP server — Gmail, Postmark, Amazon SES, Mailgun, your own Postfix. Configure in the admin UI; no env vars required after first-run.
Where to configure
Log in as admin → top nav Settings → Mail.
Or visit https://files.example.com/admin/settings/mail directly.
Fields explained
Connection
| Field | Purpose | Example |
|---|---|---|
| SMTP host | Hostname of your relay | smtp.gmail.com |
| Port | SMTP port | 587 (STARTTLS) or 465 (TLS) |
| Encryption | How the connection is secured | STARTTLS / Implicit TLS / None |
Authentication
| Field | Purpose | Notes |
|---|---|---|
| Method | None / AUTH LOGIN / AUTH PLAIN | Most providers use AUTH LOGIN. |
| Username | Your SMTP user | Often your email address. |
| Password | SMTP password / app password / API key | Stored Fernet-encrypted at rest. |
Identity
| Field | Purpose | Example |
|---|---|---|
| From name | Display name in the From: header | Acme Corp Files |
| From address | Envelope & From-header email | files@acme.com |
| HELO/EHLO hostname | What your client announces itself as | mail.acme.com (should match PTR) |
Provider quick configs
Gmail (App Password)
Host: smtp.gmail.com
Port: 587
Encryption: STARTTLS
Auth: AUTH LOGIN
Username: your.address@gmail.com
Password: (Google App Password — generate at
https://myaccount.google.com/apppasswords)
From: your.address@gmail.com
HELO: (leave default)
Postmark
Host: smtp.postmarkapp.com
Port: 587
Encryption: STARTTLS
Auth: AUTH LOGIN
Username: <your server API token>
Password: <same server API token>
From: sender@verified-domain.com
HELO: (leave default)
Amazon SES
Host: email-smtp.us-east-1.amazonaws.com
Port: 587
Encryption: STARTTLS
Auth: AUTH LOGIN
Username: <SMTP credentials → username>
Password: <SMTP credentials → password>
From: verified-sender@your-domain.com
HELO: (leave default)
Mailgun
Host: smtp.mailgun.org
Port: 587
Encryption: STARTTLS
Auth: AUTH LOGIN
Username: postmaster@mg.your-domain.com
Password: <SMTP password from Mailgun dashboard>
From: from@your-domain.com
Local Postfix / Stalwart (loopback)
Host: 127.0.0.1
Port: 25
Encryption: None
Auth: None
From: files@your-domain.com
HELO: your-mail-server.example.com
Only use None encryption when connecting to a server on loopback or a trusted network. Your local mail server should still be configured to require auth from non-loopback senders.
Test send
The mail config page has a Send test button at the bottom. It uses the currently-saved settings to send a verification email to an address you specify. Watch the result:
- Green banner: SMTP accepted the message. Check the recipient inbox.
- Red banner: connection or auth failed. Error message tells you what.
How passwords are stored
SMTP passwords (and any other field flagged secret) are encrypted with
Fernet before
hitting the DB. The encryption key is derived deterministically from
SESSION_SECRET — same .env, same key, password roundtrips
across restarts. If you rotate SESSION_SECRET you'll need
to re-enter SMTP credentials.
Deliverability
Sending emails reliably to inbox (not spam) involves more than just SMTP credentials. See the deliverability checklist: SPF, DKIM, DMARC, PTR/rDNS, HELO alignment, content guidelines.