Connect your inbox
Smailor can exchange mail with the inbox you already use — Gmail, Outlook,
Apple Mail, Thunderbird — or with code you write yourself. There are five ways
to do it, and they are not interchangeable. Pick one from the table below before
reading further — most of the time lost on this topic is lost configuring the
wrong one.
Which one do you want
| You want to… | Use | Status |
|---|---|---|
| Read your Smailor mail in Gmail/Outlook/Apple Mail | A — Forwarding | Available |
| Get mail as JSON, into your own system | D — REST API + webhooks | Available |
| Send from Gmail or a mail client, keeping your Smailor address | B — SMTP submission | Available |
| Download recent mail into a mail client (Apple Mail, Thunderbird, Outlook desktop) | C — POP3 | Available on Pro and Business |
| Connect an IMAP client to Smailor itself | E — IMAP | Not built |
If you only need to see your Smailor mail somewhere else, you want A. If you
need to reply from somewhere else and have the reply look like it came from
your Smailor address, you want B. If you want the mail inside a desktop or phone
mail client rather than inside another mailbox, you want B and C together: C
fills the incoming half of the client's dialog, B the outgoing half.
A — Forwarding (available)
Settings → Forwarding. Every mail a Smailor mailbox receives is copied to an
external address. Rules can be scoped to one mailbox, to one group, and can
exclude groups.
The destination has to agree
Creating a rule, or repointing an existing one, sends a confirmation email to
the destination. Nothing is forwarded until someone opens the link in that
email. The link is single use and expires after 24 hours; Settings →
Forwarding shows unconfirmed rules as Awaiting confirmation and offers a
Resend.
This exists because a forwarding rule is, mechanically, a content export: it
copies a mailbox to an address that until now nobody had checked. The
confirmation is what turns a typed address into a destination that has agreed.
What you cannot forward to
An address on a domain Smailor serves — including your own Smailor addresses.
Mail forwarded there re-enters Smailor as new inbound mail, matches the same
rule, and forwards again, indefinitely. This is refused when the rule is created
and re-checked on every forward, because a destination domain that is external
today can be added to Smailor tomorrow.
To move mail between two of your own Smailor mailboxes, use a routing rule
instead.
Deliverability
A forward breaks SPF: the mail leaves from Smailor's IPs, which the original
sender's domain does not authorise. DKIM on the original message is preserved,
so DMARC can still pass on the DKIM side, but a forwarded message is inherently
more likely to be filtered than a direct one. Sender Rewriting Scheme (SRS) is
not implemented — see the open questions in the internal plan.
Limits
One rule on Free, three on Solo/Starter, twenty on Pro, unlimited on Business.
The limit applies when a rule is created; an account already over its plan's
number keeps the rules it has.
B — SMTP submission (available)
Settings → Mail client access (/settings/smtp). Issue a password that a
mail client authenticates with to send as one of your Smailor addresses. The same
page carries the reading half, mode C, because a mail client asks for an incoming
and an outgoing server in one dialog.
Only an address on a verified custom domain can be attached to a mail client.
Addresses on Smailor's own domains receive mail but cannot send, so the page
refuses to issue a password for one instead of letting the first reply bounce.
If a server is not answering, the page says so — it names the host and
port, and still lets you prepare a password, rather than handing you settings
that fail silently in your mail client.
Server settings:
| Setting | Value |
|---|---|
| Outgoing server | the SMTP host shown in Settings → Mail client access |
| Port | 587, or 465 if your network blocks 587 |
| Encryption | either SSL/TLS or STARTTLS — both ports accept both |
| Username | your full Smailor address |
| Password | the credential, shown once when created |
Encryption is genuinely not a choice you have to get right. 587 normally starts
in the clear and upgrades with STARTTLS, but it also accepts a client that
opens with a TLS handshake directly, which is what iOS Mail does the moment
"Use SSL" is switched on. 465 is implicit TLS only. Whichever combination a
client offers, the session is encrypted before authentication: unencryptedAUTH is refused on every port, so there is no setting here that quietly sends
a password in the clear.
What is true of a credential:
- It is bound to one mailbox and may send as that address only — not as a
colleague on the same domain, not as another account. - It is shown once. Only a hash is stored, so it cannot be recovered; rotate by
issuing a new one and revoking the old. - The username is the full mailbox address (
[email protected]), which is what
Gmail and desktop clients expect. - Revoking is immediate. Deleting the mailbox revokes every credential bound to
it. - It is not an API key and can never become one:
smtp:sendis deliberately
outside the HTTP scope vocabulary, so it cannot be granted to a REST key. - Free accounts get none. One on Solo/Starter, ten on Pro, twenty on Business.
Mail sent this way goes through the same outbound queue, sender-node routing,
quota and spam checks as everything else, and counts against the same monthly
send allowance. There is no separate SMTP quota, by design — a separate one
would be a trivial way around the plan.
Things worth knowing before you set this up
- Your
Fromis always your Smailor address. The pipeline rebuilds the
message rather than relaying it byte for byte, so a client cannot send as
anything else. A client configured with a mismatched identity is refused
outright rather than silently corrected. - Attachments are carried through. Inline images that are part of the HTML
body are not attached a second time. - Up to 10 recipients per message, each becoming its own queued message.
- A temporary failure means retry. If the client reports a
451, the
message is still in its outbox and will be retried; a550is permanent and
will not be. - "Last used" in Settings → Mail client access shows when and from which address a
credential was last used. That address will belong to Google or Microsoft when
sending from their webmail, not to you.
What your provider actually allows
- Gmail supports adding an external SMTP server under Send mail as. This
is the case the feature is built for. - Outlook.com and iCloud.com do not let you add a custom outgoing server
from the web interface. There is no way to make this work from those webmails. - Desktop clients — Outlook desktop, Apple Mail, Thunderbird — do support a
custom outgoing server and will work.
C — POP3 (available on Pro and Business)
Settings → Mail client access (/settings/smtp), reading half. Issue a
password that a mail client authenticates with to download a Smailor mailbox.
| Setting | Value |
|---|---|
| Incoming server | the POP3 host shown in Settings → Mail client access |
| Port | 995 |
| Encryption | SSL/TLS, required |
| Username | your full Smailor address |
| Password | the reading credential, shown once when created (mail_…) |
Port 110 with STLS is not offered, and will not be: a plaintext port that
upgrades is a port where one client misconfiguration sends the password in the
clear. 995 is implicit TLS, so there is no pre-encryption state to get wrong.
One password per device
POP3 was designed for a single device draining its own spool, so a laptop and a
phone are two credentials rather than one secret copied between them. Ten
credentials on Pro, twenty on Business. Free, Solo and Starter get none — a
mailbox readable by a long-lived password typed into desktop software is a larger
commitment than a dashboard session.
What the client sees
- The 250 most recent messages. POP3 has no notion of a window:
LISTis the
whole mailbox and a client re-reads it on every poll. The full history stays in
Smailor. - Messages over 30 MB are listed but not downloadable.
RETRdeclines with a
line pointing at the web view, rather than omitting the message and looking
like lost mail. - Rebuilt messages, not the original bytes. Smailor stores parsed mail, so
each message is reconstructed. The original sender's DKIM signature is not
carried over and a client that checks DKIM locally will report the message
unsigned — Smailor verified it on arrival. Headers Smailor does not store are
absent rather than invented: noReceivedchain, noList-Unsubscribe. Every
rebuilt message carriesX-Smailor-Reconstructed: 1.
Deleting in the mail client does not delete in Smailor
Mail clients issue DELE after downloading unless "leave a copy on the server"
is ticked, and several tick it off by default. Here DELE records a tombstone
against that one credential: the message stops appearing in that client's
listing and is untouched in Smailor. Someone who empties their Apple Mail inbox
still has everything in the dashboard.
Optionally, let one device report back
A shared support inbox and a POP3 spool disagree about everything: mail read on a
phone stays bold in the dashboard. A single credential — the laptop someone works
from all day, not a phone polling in the background — can opt in to mirroring its
state:
- Downloading a message marks the conversation read in Smailor, if it was not
already. The timestamp records when the mailbox first saw the message and is
never moved afterwards. - Deleting archives the conversation, on top of the tombstone. That is where the
dashboard's own archive button puts it, and it is reversible from there.
Off by default, including on credentials created before the option existed.
The reason is the first poll: a client downloads everything it has not seen, so
enabling this against an established mailbox marks a large part of it read in one
pass.
Limits worth knowing
- 120 sessions per credential per hour. Clients reconnect on every poll, so
this is a real ceiling and it is what stops a client polling every second from
rebuilding the mailbox on every pass. - 20 failed authentications per username per 5 minutes. Successes do not
count: every POP3 operation re-sends the password, so counting them would cap
how much mail a mailbox may sync instead of how fast a secret may be guessed. - A reading credential carries
pop3:readand nothing else. It cannot send, and
it is not an API key.
D — REST API and webhooks (available)
For reading and sending programmatically. See REST-API.md.
Use this rather than B or C when the consumer is your own code: it is the only
one of the five with per-resource scopes, so a key can be granted read-only
access to mailboxes without also being able to send.
Inbound webhooks are signed with HMAC — the same signing scheme as Focus
webhooks, not a second one.
E — IMAP (not built)
There is no IMAP server. Connecting a client to Smailor over IMAP is not
possible, and no date is committed. An IMAP server is a stateful process
terminating untrusted connections from the public internet, which is a very
different thing to operate than an HTTP app, and the build-versus-adopt decision
has not been made.
The permission vocabulary already keeps the two apart: imap:read is a separate
scope from pop3:read, so a password handed to a script for POP3 will not start
opening IMAP sessions the day an IMAP listener ships. Whether a deployment serves
IMAP is an ops switch, not a code change.
If you need mail in a generic client today, use C — accepting that it shows
recent mail rather than the whole archive — or A.
Security notes that apply to all five
- Your account password is never usable for SMTP or POP3. Protocol credentials
are always separate, individually revocable, and stored hashed. The three
kinds cannot be substituted for one another either: an API key, a sending
password (smtp_…) and a reading password (mail_…) carry disjoint scopes,
so one pasted into the wrong dialog fails rather than working with more
power than intended. Reused
passwords on legacy mail protocols are the single largest cause of consumer
mailbox compromise, and the separation is not a later hardening step. - A domain must be verified before anything can send from it. This applies on
every plan. - Every outbound path — dashboard, API, forwarding and SMTP submission — goes
through the same spam scoring and IP reputation checks. Nothing routes around
them.
Related
- REST API reference — mode D, and the scopes an API key carries
- Add a new domain — required before B or C
- Email setup and deliverability — SPF, DKIM, DMARC