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 SettingsMail. Or visit https://files.example.com/admin/settings/mail directly.

Fields explained

Connection

FieldPurposeExample
SMTP hostHostname of your relaysmtp.gmail.com
PortSMTP port587 (STARTTLS) or 465 (TLS)
EncryptionHow the connection is securedSTARTTLS / Implicit TLS / None

Authentication

FieldPurposeNotes
MethodNone / AUTH LOGIN / AUTH PLAINMost providers use AUTH LOGIN.
UsernameYour SMTP userOften your email address.
PasswordSMTP password / app password / API keyStored Fernet-encrypted at rest.

Identity

FieldPurposeExample
From nameDisplay name in the From: headerAcme Corp Files
From addressEnvelope & From-header emailfiles@acme.com
HELO/EHLO hostnameWhat your client announces itself asmail.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:

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.