Configuring a mailbox at your provider
Warning
Some of the steps on this page are performed in a product this project does not control. Any screen, menu, or field named here can be renamed or moved there at any time. Where this page and that product's own documentation disagree, the product's documentation is right.
Getting started § configure the mailbox shows the account block and what
each of its keys is for. This page answers the question that comes next and that no reference page can answer, because
the answer belongs to somebody else: what goes in Host, Port, Secrets, and TransportSecurity for the mail
service I actually use, and what does that service do differently once synchronization is running.
Every mail service named below is reached the same way — MailFathom speaks IMAP over TLS and nothing else, and there is no per-provider code path anywhere in it. Four things differ, and a reader has to get each right before the first connection succeeds: the address, whether IMAP has to be switched on first, which credential the service will accept, and what the service's own behaviour does to a mailbox once mail starts arriving in the local copy.
Two claims this page does not make
Presence is a check at a point in time, not a supported-provider list. Every entry below is what that service's own current documentation said on the date the entry carries. None of these services is under this project's control, and any of them may change the answer next week without anybody here touching anything. An entry that has stopped being true is a defect in this page rather than in the deployment that trusted it.
Absence is not a refusal. A service missing from this page is not blocked, unsupported, or known to fail — it is unchecked. MailFathom reaches any IMAP server that will serve a TLS connection and an authentication mechanism the account permits, and an IMAP server you run yourself is the section for one.
What the evidence column means
Each entry says which of two kinds of evidence it rests on, because they are not the same claim and blurring them is how a guide starts lying:
- Documented — the service's own current documentation was read on the date the entry carries. It establishes what the service publishes about its address, its credential, and its own behaviour. It does not establish that a connection was made.
- Observed — a MailFathom deployment ran against a mailbox at that service and the behaviour was what the entry says.
Every entry on this page today is Documented. That is deliberate rather than a gap waiting to be filled: a third
party's mail server is not something this repository verifies, and an entry claiming otherwise would be asserting a test
that nothing here runs. Where a reader needs a behaviour confirmed against their own mailbox, what your own server
actually offers is how the running deployment answers it.
The account block, written once
This is the complete shape, and it is shown once. Every section below changes three parts of it at most — the address,
the credential block, and, in one case, TransportSecurity:
{
"MailSynchronization": {
"Enabled": true,
"Accounts": [
{
"AccountId": "primary",
"DisplayName": "Personal mail",
"Host": "imap.example.test",
"Port": 993,
"UserName": "you@example.test",
"Secrets": {
"Password": {
"Name": "imap-primary-password",
"SecretReference": "file:/etc/mailfathom/secrets/imap-primary-password"
}
},
"Folders": [
{ "Alias": "inbox", "SpecialUse": "Inbox" },
{ "Alias": "sent", "SpecialUse": "Sent" }
]
}
]
}
}
A service that will not accept a password takes an OAuth block in place of Secrets instead;
mailbox OAuth § configuring the account holds that form in
full, and no section below repeats it. Configuration reference § MailSynchronization
is the inventory of every key named on this page, with its type, default, and constraint.
What is the same everywhere
Four things hold whichever service a mailbox lives at, and each is stated in full on the page that owns it rather than per provider here:
- The transport is TLS on connect, on port 993, by default. Every weakening — an unencrypted connection, clear-text authentication over one — is an explicit opt-in that fails startup otherwise, and certificate validation cannot be turned off at all. A server with a private certificate authority is reached by trusting that authority. IMAP synchronization § transport security records the rules.
- Folders are named by role rather than by path.
SpecialUselets discovery find a folder whatever the server calls it, which matters more here than it looks: the same role carries a different path at almost every service below. A service that advertises no role for a folder loses none of this — name the path and the role together, and everything that asks forrole:Junkstill reaches it. Folder aliases and discovery covers the matching, what a role says the rest, and the folders, and what each service calls them what you are naming. - Reading never marks mail read. MailFathom does not set the remote
\Seenflag while synchronizing, reconciling, fetching content, or answering a tool call — the sessions those run on hold no operation capable of writing a flag. If mail is turning up read at your service, it is another client or a rule at the service, not this one. Marking mail read is an act, never a side effect of reading states the guarantee and its one deliberate exception. - Whether
"Mode": "Push"does anything is the server's answer, not a setting. Push needs theIDLEextension, and one connection for the whole account instead of one per folder additionally needsNOTIFY. A server offering neither is polled on the account's interval and says so in the log. Push synchronization holds the whole model.
The addresses, in one table
| Service | Host |
Port |
Switch IMAP on first | Credential the service will accept | Evidence |
|---|---|---|---|---|---|
| Gmail, on a personal account | imap.gmail.com |
993 |
No — always on | App password, or OAuth | Documented, 2026-08-12 |
| Gmail, on a Google Workspace account | imap.gmail.com |
993 |
Yes, by an administrator | OAuth only | Documented, 2026-08-12 |
| Outlook.com | outlook.office365.com |
993 |
Yes, in the mailbox settings | OAuth only | Documented, 2026-08-12 |
| Exchange Online and Microsoft 365 | outlook.office365.com |
993 |
No — on unless an administrator turned it off | OAuth only | Documented, 2026-08-12 |
| Yahoo Mail | imap.mail.yahoo.com |
993 |
Not documented as required | App password | Documented, 2026-08-12 |
| iCloud Mail | imap.mail.me.com |
993 |
Not documented as required | App-specific password | Documented, 2026-08-12 |
| Proton Mail | 127.0.0.1 (the local bridge) |
1143 |
The bridge is installed and signed in instead | The bridge's own generated password | Documented, 2026-08-12 |
| Fastmail | imap.fastmail.com |
993 |
Not documented as required | App password | Documented, 2026-08-12 |
| Zoho Mail | imap.zoho.com or imappro.zoho.com |
993 |
Yes, in webmail | Account password, or an application-specific one | Documented, 2026-08-12 |
Proton Mail is the one row whose address is not the mail service and whose port is not 993, for the reason its section gives. Everything else takes the account block above with the address and the credential replaced.
Not documented as required is the honest answer rather than a no: the service's own setup documentation names no switch, and this review made no connection that would establish one.
The folders, and what each service calls them
MailFathom mirrors the folders your configuration names and nothing else. Nothing discovers a folder into that list, so a folder left out of it is a folder this deployment does not have — not one it holds and hides. Getting started § working out the list is how to arrive at one; this table is the part of it that depends on where the mailbox lives.
| Service | What its own folders are called | Roles the server advertises | Evidence |
|---|---|---|---|
| Gmail, personal and Workspace alike | INBOX, and the system labels under a [Gmail] prefix: [Gmail]/All Mail, [Gmail]/Drafts, [Gmail]/Important, [Gmail]/Sent Mail, [Gmail]/Spam, [Gmail]/Starred, [Gmail]/Trash |
Documented: \All, \Drafts, \Important, \Sent, \Junk, \Flagged, \Trash |
Documented, 2026-08-12 |
| Outlook.com, Exchange Online, Microsoft 365 | Inbox, Drafts, Sent Items, Deleted Items, Junk Email, Archive | Not documented in the pages this review read | Documented, 2026-08-12 |
| Yahoo Mail | Inbox, Draft, Sent, Archive, Spam, Trash | Not documented in the pages this review read | Documented, 2026-08-12 |
| iCloud Mail | Inbox, VIP, Drafts, Sent, Archive, Trash (Bin in some regions), Junk | Not documented in the pages this review read | Documented, 2026-08-12 |
| Proton Mail, through the bridge | All Mail, Inbox, Drafts, Sent, Starred, Archive, Spam, Trash, and each of your labels as a folder under Labels |
Not documented in the pages this review read | Documented, 2026-08-12 |
| Fastmail | Inbox, Archive, Drafts, Sent, Spam, Trash | Not documented in the pages this review read | Documented, 2026-08-12 |
| Zoho Mail | Inbox, Drafts, Sent, Spam, Trash | Not documented in the pages this review read | Documented, 2026-08-12 |
A name in that middle column is what the service calls the folder, not necessarily the IMAP path. A service may serve
its folders under a prefix, translate them into the account's language, or rewrite a character its own interface allows —
Gmail's prefix and Fastmail's replacement of . in a custom folder name are both documented behaviours. That is the
argument for naming a folder by its role wherever it has one: SpecialUse finds the folder whatever path it is at, and
the configuration survives a rename, a language change, and a move to another service.
"Not documented" is not "not advertised". Only Google publishes which RFC 6154 attributes its server sends, so the
other rows say what this review could establish rather than what the server does. Where a role matters and the service
documents no attribute, name the folder's path and its role together — { "Alias": "spam", "RemotePath": "Junk Email", "SpecialUse": "Junk" } — and everything that asks for role:Junk reaches it regardless of what the server advertised.
A mapping whose role finds nothing reports the alias as unresolved in the log rather than failing the account.
Sources: Gmail IMAP extensions, Working with message folders in Outlook.com, Archive and un-archive messages in Yahoo Mail, Organize email with folders in Mail on iCloud.com, Labels in Bridge, Setting up and using folders, Using folders.
Gmail, on a personal account
Google documents imap.gmail.com on port 993 with SSL required, and states that IMAP access is always on and no
longer has a setting to switch — so nothing has to be enabled first on a personal account.
The credential. An app password works with the ordinary Secrets:Password block and is the shorter path; OAuth is
the alternative and is the same setup a Google Workspace mailbox needs.
Mailbox OAuth § do you need this at all is where the choice is
already stated in full — which accounts can be issued an app password at all, and the review obligation that comes with
registering your own Google project for mail access — and it is not repeated here.
Labels arrive as folders, and one message can be in several of them. Google publishes labels over IMAP as folders,
with its own labels under a [Gmail] prefix, and exposes each message's label set through the X-GM-LABELS attribute.
[Gmail]/All Mail holds everything, so a message carrying two labels is reachable through both label folders and
through All Mail as well. Configure the folders you want by role — an inbox, a sent folder — rather than synchronizing
All Mail beside them, or the same message is copied under several aliases and counted several times in every listing.
Two limits worth knowing before the first synchronization of a large mailbox. Google documents a daily IMAP ceiling
of 2500 MB downloaded and 500 MB uploaded — synchronization only reads, so the download figure is the one a first pass
over a large mailbox can reach — and describes a safeguard that suspends the account for about an hour, and for as long
as a day, once a limit is hit. It separately documents that an account may be added to at most 15 mail clients at once,
which a deployment watching many folders in push mode can approach on its own. EarliestEmailReceivedDate is what
bounds the first pass against the first limit, and MaxSubscribedFolders bounds the connection count against the
second.
Sources: Add Gmail to another email client, IMAP, POP, and SMTP, IMAP extensions, Gmail bandwidth limits.
Gmail, on a Google Workspace account
The address is the same as above. Two things are not.
An administrator turns IMAP on first. Google documents the setting in the admin console under Apps → Google Workspace → Gmail → End User Access → POP and IMAP access, applied to the whole organization or to one organizational unit. The same setting optionally restricts access to named OAuth client identifiers, which is worth checking if the first connection is refused after the switch is on.
A password will not authenticate. Google states that as of 1 May 2025 a Workspace account no longer accepts a sign-in
from an application using a username and password, and an app password cannot be issued for one at all. The account
therefore carries an OAuth block and no Secrets:Password, with PermittedAuthenticationMechanisms set to the
token-bearing mechanisms — which is what frees the account from configuring a password.
Mailbox OAuth § Google is the registration, and
§ configuring the account is the block.
The label and All Mail behaviour and both limits are Gmail's and apply here unchanged.
Sources: Turn POP & IMAP on or off for users, Add Gmail to another email client.
Outlook.com
Microsoft documents outlook.office365.com on port 993 with SSL/TLS, and lists the authentication method for it as
OAuth2 and modern authentication rather than a password.
IMAP is switched on in the mailbox. Microsoft's own settings page states that POP and IMAP access is off by default and is enabled under Settings → Mail → Forwarding and IMAP.
A password will not authenticate, and neither will an app password. Microsoft states that basic authentication
stopped working for these accounts on 16 September 2024 and that devices using POP or IMAP can no longer use app
passwords. So an Outlook.com mailbox takes the OAuth block, registered through Microsoft Entra exactly as a Microsoft
365 mailbox is; mailbox OAuth § Microsoft — Entra is the
registration. The delegated permission is the one a personal mailbox owner can consent to themselves.
Sources: POP, IMAP, and SMTP settings for Outlook.com, Modern authentication methods now needed to continue syncing Outlook email in non-Microsoft email apps.
Exchange Online and Microsoft 365
The address and port are the same as Outlook.com's, and so is the answer about passwords — but for a different reason and with a different consequence, which is why this is a section of its own.
Basic authentication was removed rather than discouraged. Microsoft states that it removed the ability to use basic authentication for IMAP in Exchange Online, that no one — customer or Microsoft support — can re-enable it, and that the same change prevents the use of app passwords. OAuth 2.0 is the only way in, and Microsoft's own guidance to application developers is to keep the protocol and implement it.
Both grants are available here, and they are different mailboxes' answers. A delegated registration carrying
IMAP.AccessAsUser.All acts for one mailbox owner and needs a refresh token obtained once; an app-only registration
carrying IMAP.AccessAsApp acts for the application, needs tenant administrator consent, and uses the
client_credentials grant with no sign-in at all. Mailbox OAuth § the two grants
states which applies, and § Microsoft — Entra is the registration for
both.
IMAP is on by default per mailbox, and an administrator can turn it off. Microsoft documents IMAP4 as enabled when a
user mailbox is created, and both the Exchange admin center and Set-CASMailbox as the ways to change it — so a refused
connection against a tenant that has hardened its protocols is a mailbox setting rather than a credential fault.
Sources: Deprecation of basic authentication in Exchange Online, Managing email apps for user mailboxes, Authenticate an IMAP, POP, or SMTP connection using OAuth.
Yahoo Mail
Yahoo documents imap.mail.yahoo.com on port 993 with SSL required, and directs a third-party mail client at a
generated app password rather than the account password. That is the ordinary Secrets:Password block with the
generated value behind the reference, and nothing else about the account changes.
This review found no Yahoo documentation of IMAP connection caps, bandwidth ceilings, or the extension set the server advertises, so this page states none — what your own server actually offers is where a running deployment answers that instead.
Sources: Yahoo Mail server settings.
iCloud Mail
Apple documents imap.mail.me.com on port 993 with SSL required, and an app-specific password rather than the account
password.
The user name is the part that catches people out. Apple documents it as usually the name portion of the address —
johnappleseed rather than johnappleseed@icloud.com — and says to try the full address if a client cannot connect
with the short form. UserName is an identifier rather than a secret, so trying the other form is an edit and a reload
rather than a re-provisioning.
Sources: iCloud Mail server settings for other email client apps.
Proton Mail, through the local bridge
This is the one entry whose address is not the mail service. Proton documents that a mail client reaches a Proton mailbox through Proton Mail Bridge, an application that runs on the same machine as the client, holds the connection to Proton itself, and serves IMAP on a loopback address — which is what lets a client see decrypted mail without the decryption happening anywhere else. Proton states that the bridge is available only with a paid Proton Mail plan.
Three consequences for a MailFathom account, and the first is the one to settle before writing any configuration:
- The bridge has to be reachable from the process, on loopback. A deployment in a container or on another host does not reach a bridge running on somebody's laptop, and the bridge is not a service to publish onto a network — its whole design is that the decrypted channel never leaves the device. A Proton mailbox therefore fits a MailFathom process running on the same machine as the bridge, and does not fit the container and Kubernetes shapes without putting the two together deliberately.
- The port and the transport are not the defaults. Proton documents the bridge's default IMAP port as
1143and offers a choice of STARTTLS or SSL in the bridge's own settings. STARTTLS on 1143 means the account states"ConnectionSecurity": "StartTlsRequired"— which is one of the two guaranteed-TLS modes and needs noAllowInsecureConnection, because the handshake either happens or the connection fails. - The certificate is the bridge's own. Proton documents the bridge as using a self-signed TLS certificate that it
generates when the application is first set up. Certificate validation is never disabled in MailFathom, so the account
trusts that certificate as an additional authority:
"CertificateTrust": "AdditionalTrustedAuthority"with the bridge's certificate behindTrustedCertificateAuthority. Trust anchor material is what that reference holds and how it is provisioned.
The credential is the password the bridge itself generates for the mail client, with the Proton address as UserName.
It goes behind a Secrets:Password reference like any other.
{
"Host": "127.0.0.1",
"Port": 1143,
"UserName": "you@proton.me",
"TransportSecurity": {
"ConnectionSecurity": "StartTlsRequired",
"CertificateTrust": "AdditionalTrustedAuthority",
"TrustedCertificateAuthority": {
"Name": "proton-bridge-certificate",
"SecretReference": "file:/etc/mailfathom/secrets/proton-bridge-certificate.pem"
}
}
}
Sources: IMAP, SMTP, and POP3 setup, Comprehensive guide to Bridge settings, Proton Mail Bridge connection issues.
Fastmail
Fastmail documents imap.fastmail.com on port 993 with SSL/TLS encryption and states explicitly that STARTTLS is not
offered there — which is what MailFathom's default TlsOnConnect already is, so the account needs no
TransportSecurity block at all.
The user name is the full address, and it is the one the account was signed up with. Fastmail documents that other addresses on the same account do not authenticate.
An app password is required. Fastmail states that the ordinary account password will not connect over IMAP and that each connection needs an app password of its own.
Sources: Server names and ports, IMAP, POP, and SMTP.
Zoho Mail
Zoho documents two hostnames on port 993 with SSL required, and which one applies is the account's plan rather than a
preference: imap.zoho.com for a personal account on a zoho.com address, and imappro.zoho.com for a paid
organization account on its own domain. Zoho runs mailboxes in several data centres and the documented hostnames are the
ones for its .com domain, so an account elsewhere takes the host its own webmail settings page names rather than the
one in the table above.
IMAP is switched on in webmail first. Zoho documents enabling IMAP access for the account before configuring any client.
Which credential depends on how the account signs in. Zoho documents the account password for an ordinary account,
and an application-specific password where two-factor authentication is on, where the account signs in through SAML, or
where it uses a federated sign-in. Either way it is the Secrets:Password block.
Sources: IMAP and SMTP configuration details.
An IMAP server you run yourself
There is no entry to look up here, and that is the point: MailFathom reaches any IMAP server that will serve a TLS connection and an authentication mechanism the account permits, so the server's own documentation is the source and the account block at the top of this page is the whole configuration. Four things are worth checking against it, because each is a startup refusal rather than a runtime warning:
- The port decides nothing; the mode does.
993withTlsOnConnectis the default. A server serving IMAP on143and upgrading takes"ConnectionSecurity": "StartTlsRequired", which is still guaranteed TLS.StartTlsWhenAvailableandNoneare not, and each needsAllowInsecureConnectionwritten explicitly. - A private certificate authority is trusted rather than ignored.
"CertificateTrust": "AdditionalTrustedAuthority"with the authority behindTrustedCertificateAuthority; validation itself cannot be turned off. - An old server may be refused before a credential is ever sent. An authentication failure wrapping
SSL Handshake failed with OpenSSL erroris the platform's TLS policy ending the handshake rather than a wrong password. The platform TLS policy covers confirming that and the one supported way to relax it. - The mechanism list is an allow-list.
PermittedAuthenticationMechanismsdefaults toPLAINandLOGIN; a server offering something else needs it named.
What your own server actually offers
Nothing above states which IMAP extensions a service advertises, because almost none of them publishes that and a table of guesses would be worse than no table. The running deployment answers it instead, per folder, on every start:
Folder primary/inbox is now synchronized in Push mode.
Three neighbouring lines say why, when the answer is not the one that was configured:
| What the log says | What the server advertised |
|---|---|
Account … watches N folders through one push subscription. |
NOTIFY and IDLE, so the whole account costs one connection |
… advertises no NOTIFY capability, so each push folder is watched over its own connection |
IDLE alone, so each watched folder costs one |
… the mail server advertises no IDLE capability; it is synchronized by polling |
Neither, so Mode changes nothing and the interval is what runs |
The same holds for CONDSTORE and QRESYNC, which decide how much work a reconciliation pass does rather than whether
it is correct: all three shapes of the question reach the same end state, and
asking only about what changed records which
command each server gets. There is nothing to configure and nothing to check — a server that supports neither is slower
and no less right.
Related
- Getting started — the whole path from an installed instance to a first tool call
- Mailbox OAuth — registering an application, obtaining a refresh token, and the
OAuthblock every token-bearing account above takes - Configuration reference §
MailSynchronization— every key named here, with its constraint and whether changing it needs a restart - IMAP synchronization — what a run actually does with a mailbox
- Secret provisioning — how a
SecretReferenceis backed by material
Trademarks. The product, service, and company names on this page are their owners' trademarks and are used solely to identify the mail services a MailFathom deployment can be configured against. Their use implies no affiliation with, sponsorship by, endorsement by, or certification from those owners, in either direction, and this page reproduces no third-party logo.
Gmail and Google Workspace are trademarks of Google LLC. Microsoft, Outlook, Microsoft 365, Exchange Online, and
Microsoft Entra ID are trademarks of the Microsoft group of companies. iCloud is a trademark of Apple Inc., registered
in the U.S. and other countries and regions. Yahoo and Yahoo Mail are trademarks of Yahoo Inc. and its affiliate
companies. Proton and Proton Mail are trademarks of Proton AG. Fastmail is a trademark and service mark of Fastmail Pty
Ltd. Zoho and Zoho Mail are
trademarks of Zoho Corporation Private Limited and/or its affiliates.
THIRD_PARTY_LICENSES.md
records the per-owner review this statement comes out of, and why it sits here rather than in NOTICE.