Files
bongo/docs/protocols.md
T
Mario Fetka 9e02056ba1
Debian Trixie package bundle / packages (push) Successful in 21m5s
Implement per-user mail storage quotas
2026-07-21 11:30:16 +02:00

4.1 KiB

Protocol overview

Bongo keeps compatibility with older standards where that can be done without weakening the default policy, while advertising modern extensions only when their handlers and tests are present.

Mail transport

The SMTP server supports classic SMTP and ESMTP with SIZE, PIPELINING, 8BITMIME, DSN, CHUNKING/bounded BDAT, optional SMTPUTF8, STARTTLS, SASL authentication, and REQUIRETLS on TLS-capable listeners. BINARYMIME is deliberately not advertised or accepted. Authenticated submission and implicit TLS use listener-specific policy; Internet delivery uses opportunistic STARTTLS unless REQUIRETLS, DNSSEC-authenticated DANE, or an RFC 8461 MTA-STS destination policy requires authenticated TLS.

LMTP transports are available for local downstream services such as Mailman. Trusted SMTP/LMTP peers can receive original-client metadata through negotiated XCLIENT or XFORWARD, or through explicitly configured fallback headers. Incoming HAProxy PROXY v1/v2 is a separate, source-restricted connection feature.

See smtp.md, tls.md, and mail-authentication.md.

Mail access

IMAP advertises IMAP4rev2, IMAP4rev1, and legacy IMAP4, plus the implemented capabilities documented in imap.md. This preserves basic access for old clients while allowing modern UTF-8 mailbox and message handling after ENABLE UTF8=ACCEPT.

POP3 implements the normal transaction commands and advertises TOP, RESP-CODES, AUTH-RESP-CODE, PIPELINING, EXPIRE NEVER, UIDL, and UTF8. STLS is offered before authentication; SASL and password login are advertised only according to the TLS policy. POP3S provides implicit TLS. After a successful UTF8 command, STLS is no longer advertised and is rejected so that the negotiated UTF-8 session state cannot cross into TLS. Both IMAP STARTTLS and POP3 STLS discard buffered cleartext before negotiating TLS.

Mail-storage limits are enforced by the shared Store for SMTP delivery, IMAP, POP3, Web access, and external collection. IMAP exposes RFC 9208 quota queries; POP3 has no standardized quota command and releases charged storage only when its QUIT update transaction successfully commits marked deletions. See Mail storage quotas.

Server-side filtering

ManageSieve uses TCP 4190 and implements the RFC 5804 management commands, including script upload, activation, listing, retrieval, rename, deletion, space checks, and syntax checks. The Sieve engine reports fileinto, envelope, body, variables, vacation, and vacation-seconds support. Authentication mechanisms are obtained from the shared GNU GSASL policy and are offered after TLS.

Thunderbird and other ManageSieve clients can update the active script without depending on the Web interface. Later interfaces, including a future JMAP implementation, must operate on the same user filter model rather than inventing incompatible rules.

Web, calendars, and contacts

The Python 3 Web service provides Webmail and user settings. CalDAV exposes calendars using iCalendar data, and CardDAV exposes address books using vCard data. External HTTPS is normally supplied by a reverse proxy; the Bongo Web listener itself defaults to HTTP on loopback.

JMAP and Exchange/MAPI protocols are not part of Bongo 0.7. JMAP is planned for 0.9 after the mail protocols and Store API are stable. Native Exchange/Outlook compatibility remains research beyond that milestone.

Private Bongo protocols

The Store and Queue protocols coordinate local Bongo agents. They are not public client protocols and have no Internet compatibility promise. Bind them to a private interface and firewall ports 689 and 8670 from clients.

Authentication and message security

Mail protocols share GNU GSASL and the same Bongo account/app-password policy. Password mechanisms are not exposed on an unencrypted connection. Optional TOTP protects the master login; app passwords keep non-interactive clients usable. SPF, DKIM, and DMARC authenticate incoming domain claims; outgoing DKIM and SRS cover signing and forwarding. None of these replaces TLS or user authentication.