INBOX, Junk and scope folders are views of the mail Inbound has received, so some operations behave differently than on a traditional IMAP server.
Default folders
Each mailbox credential includes these folders:
The personal namespace is
"" and the hierarchy separator is /. INBOX and the special-use folders cannot be deleted or renamed. With a read_write credential you can create, rename, and delete other folders. Renaming a folder also renames its subfolders; deleting a folder keeps its subfolders. Creating or renaming onto an existing custom folder returns NO [ALREADYEXISTS], and onto a special-use or Scopes/... name returns NO [CANNOT]. Read-only credentials can’t change folders or subscriptions.
Folders, flags, and appended messages belong to one credential. Other credentials on the same account don’t see them.
Scope folders
Every configured scope also appears as a folder underScopes:
Scopes is a non-selectable container (\Noselect), and its name is reserved. A domain scope appears as Scopes/*@example.com; an address scope appears as Scopes/support@example.com.
Scope folders are filtered views of the same messages as INBOX (junk mail appears only in Junk). They always open read-only, even for read_write credentials. You cannot append, move, or copy messages into a scope folder, change flags in it, or expunge from it. A read_write credential can copy messages from a scope folder into a writable folder.
Capabilities
Before login, the server advertises exactly these capabilities:AUTH=PLAIN and SASL-IR are no longer listed.
Supported commands:
- Authentication:
LOGINandAUTHENTICATE PLAIN(withSASL-IR). APLAINauthorization identity different from the login email is rejected withNO [AUTHORIZATIONFAILED]. - Folders:
LIST,LSUB,NAMESPACE,SELECT,EXAMINE,STATUS,CREATE,RENAME,DELETE,SUBSCRIBE,UNSUBSCRIBE. - Messages:
FETCH,SEARCH,STORE,COPY,MOVE, and theirUIDforms, plusEXPUNGE,UID EXPUNGE,APPEND,CLOSE,UNSELECT,CHECK,NOOP, andIDLE. ENABLE UTF8=ACCEPT, before a folder is selected. OtherENABLEarguments are ignored.
COPY and APPEND return COPYUID and APPENDUID. MOVE returns COPYUID followed by an untagged EXPUNGE for every moved message, and moving a message into the folder it’s already in returns NO [CANNOT]. EXPUNGE and UID EXPUNGE send an untagged EXPUNGE for each removed message.
SUBSCRIBE and UNSUBSCRIBE persist per credential; LSUB returns subscribed folders.
Extensions that aren’t advertised are not supported, including STARTTLS (use implicit TLS on port 993), CONDSTORE, QRESYNC, QUOTA, COMPRESS=DEFLATE, SORT, THREAD, ACL, OAuth (XOAUTH2 or OAUTHBEARER), and the Gmail-only XLIST. Requests that would enable CONDSTORE, such as SELECT (CONDSTORE) or SEARCH MODSEQ, are rejected with BAD.
Search
SEARCH supports sequence sets, UID, flag and keyword keys (such as SEEN, UNSEEN, DELETED, FLAGGED, KEYWORD), BEFORE/ON/SINCE, SENTBEFORE/SENTON/SENTSINCE, LARGER/SMALLER, OLDER/YOUNGER (WITHIN), HEADER, FROM, TO, CC, BCC, SUBJECT, BODY, TEXT, OR, and NOT.
- Text searches are case-insensitive substring matches. For received mail they match Inbound’s parsed fields:
SUBJECT, the address headers, and the plain-text body.TEXTchecks the subject and plain-text body, so text that exists only in an HTML part may not match. For appended messages they match the raw message. HEADERsearches on other header names match the raw message.SENTBEFORE,SENTON, andSENTSINCEuse the parsedDateheader of received mail and don’t match appended messages.BEFORE,ON,SINCE,OLDER, andYOUNGERuse the internal date, which is when Inbound received the message.\Recentis never set, soRECENTandNEWmatch nothing.- Unknown search keys are rejected with
BAD Unknown search term. ACHARSETargument is accepted and ignored. Dates are compared in UTC.
New-message notifications
DuringIDLE, the server sends EXISTS as soon as new mail is synchronized into the selected folder, including mail addressed to a secondary envelope recipient. Outside IDLE, new messages are reported on the next command, such as NOOP. Active sessions are also refreshed about every 60 seconds as a fallback.
An IDLE command ends after 30 minutes: the server sends * BYE IDLE terminated and closes the connection. Reissue IDLE before then (most clients restart it every 29 minutes) or reconnect automatically.
Flags and read state
Writable credentials can set standard flags (\Seen, \Answered, \Flagged, \Deleted, \Draft) and keywords in writable folders. Fetching message content from a writable folder sets \Seen unless the client uses BODY.PEEK. Read-only credentials, EXAMINE, and scope folders never set \Seen. STORE without .SILENT returns the updated flags.
Flags set on a received message in INBOX also apply to the same message in the credential’s scope folders. Flags on copies in other folders, such as a custom folder, are independent.
IMAP flags and the mailbox HTTP API share the same state. They are separate from the dashboard’s read state: marking a message read in a mailbox does not mark it read in the dashboard, and the reverse is also true.
Known limitations
Cross-session updates and retained history
New messages, expunges and moves are pushed to other open sessions on the same folder asEXISTS and EXPUNGE. Flag changes arrive as FETCH FLAGS, including changes made through HTTP. The update journal is stored in Postgres rather than in a gateway process, so it survives restarts. Expunge history is retained for approximately seven days; a session behind the retained history is disconnected and must reconnect and resynchronize rather than silently miss removals.
First sync of a large mailbox
Each sync adds at most 500 received messages that this credential hasn’t seen yet, newest first, so new arrivals don’t wait behind older mail. On a mailbox with a lot of existing mail,INBOX fills in over the next few syncs, and older messages can get higher UIDs than newer ones.
Received-message deletion and moves
Moving a received message into a custom folder orTrash does create a copy there that stays until you expunge it. Moving it into Junk marks it as junk instead (see Junk). Messages created with APPEND, such as sent copies and drafts, are stored separately and are permanently removed when their last copy is expunged.
Sent mail
Immediate sending through SMTP or the HTTP API with aread_write mailbox password saves a message in that credential’s Sent in the background. Clients may still save their own copy with APPEND: a matching Message-ID already in Sent is deduplicated, in either order. Account-key sends also save to enabled read/write mailboxes whose sending address (or login email, when no sending address is set) exactly matches the From address; domain scopes alone do not select a mailbox. SMTP-only credentials and scheduled sends do not populate a mailbox. Historical sent email records are not backfilled.
Junk
The junk filter decides whether a received message belongs inINBOX or in Junk; it is never in both. Each credential can have its own spam level and sender lists. Moving a received message from INBOX into Junk marks it as junk, and moving it from Junk back to INBOX marks it as not junk. The decision applies to this credential only, in IMAP and the mailbox API; it doesn’t change other credentials, the account verdict or webhooks. Copying a received message into INBOX or Junk has the same effect.
New mail appears in INBOX or Junk once the junk filter has made its verdict, normally within a few seconds of arrival (at most about two minutes if filtering is unavailable). If the verdict that applies to this credential changes later, for example when the account verdict changes in the email API or dashboard and the credential has no decision of its own, the message moves between INBOX and Junk with its flags, and open sessions receive EXPUNGE for the folder it left and EXISTS for the folder it entered.
Expunging a received message from Junk removes it from the credential’s folders; it doesn’t return to INBOX if it is later marked as not junk. Messages appended to Junk are stored like other appended messages.
Filters
Mailbox filters run once, when a received message first enters the credential’s mailbox, and can move it to another folder, flag it or mark it as junk. A message a filter moved out ofINBOX is no longer in INBOX or the scope folders, like any other move. Changing filters later doesn’t re-sort existing mail.
Guard-filtered messages
Messages blocked by Guard are not synchronized, and their content cannot be fetched. If a message is blocked after it was already synchronized, it is removed from the credential’s folders at the next sync: right away for open sessions, otherwise when the client opens the folder or requests itsSTATUS. Email clients may still show content they cached earlier.
Scope changes and revoked access
When a credential’s scopes, login email, type, access mode, sender settings, enabled state, password,protocols, allowedIps or selfService change, its active IMAP sessions immediately receive * BYE Mailbox credentials or scopes changed and must reconnect. Changing its name, storageQuotaBytes, dailySendLimit, spam settings or filters doesn’t end sessions. On the next folder listing or selection, folders for removed scopes disappear, and received messages that no longer match any remaining scope are removed from all of the credential’s folders. Appended messages are not affected.
Each login rechecks that the login email’s domain is verified, that at least one scope domain is verified, and that an exact sender identity is still covered by a verified scope. It also checks that the credential’s protocols.imap is enabled and that the client address is in its allowedIps (see Access and Limits). If not, authentication fails with the same NO [AUTHENTICATIONFAILED] as a wrong password.
Open sessions repeat these checks about every 5 minutes. A session whose login email domain is no longer verified receives * BYE Mailbox credentials are no longer valid; one that lost a verified scope domain receives * BYE Mailbox credentials or scopes changed. Every session must log in again after 24 hours (* BYE Session expired, please log in again). To end access right away, disable the credential, rotate its password, or delete it.
Message and storage limits
An
APPEND over 1 MiB is rejected with NO [TOOBIG]. Appended messages must be valid UTF-8 without NUL bytes; encode other 8-bit content with base64 or quoted-printable. The account storage and message-count limits are shared by all of the account’s credentials and folders. A credential’s own storage quota counts each message it stored once, however many folders hold it. Exceeding either limit returns NO [OVERQUOTA]. For SMTP limits, see Send with SMTP.
Connection limits and timeouts
Connections over the per-IP limit are closed without a reply. A connection that hasn’t logged in within 30 seconds receives
* BYE Authentication timeout, closing connection. Once a login is throttled, attempts return NO [AUTHENTICATIONFAILED] until the window ends, even with the correct password. Authentication requests are also rate-limited by the API, so avoid reconnect loops and retry with backoff.
Troubleshooting
Scopes and Permissions
Understand exact domain matching, sender policies, and read-only scope views.
Manage Credentials
Change access levels, replace scopes, rotate passwords, and disable credentials.