67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# POP3 and POP3S
|
|
|
|
Bongo keeps POP3 for simple and older mail clients while using the same
|
|
accounts, authentication policy, message files, flags, and per-user mail quota
|
|
as IMAP and Webmail. POP3 is an access protocol only: SMTP remains responsible
|
|
for message submission.
|
|
|
|
## Listeners and TLS
|
|
|
|
The suffixless `pop3` configuration document controls the two listeners:
|
|
|
|
```json
|
|
{
|
|
"version": 1,
|
|
"port": 110,
|
|
"port_ssl": 995,
|
|
"allow_legacy_tls": false,
|
|
"proxy_protocol_enabled": false,
|
|
"proxy_protocol_networks": []
|
|
}
|
|
```
|
|
|
|
Port 110 offers `STLS` before authentication. Port 995 uses implicit TLS.
|
|
Password and GNU GSASL mechanisms are made available only on a protected
|
|
connection under the secure default. Enabling `allow_legacy_tls` is an
|
|
explicit compatibility exception for obsolete clients; current TLS is still
|
|
negotiated when both peers support it.
|
|
|
|
PROXY protocol must remain disabled unless a trusted TCP proxy is actually in
|
|
front of POP3. Enabling it requires at least one exact trusted IPv4 address or
|
|
CIDR in `proxy_protocol_networks`; ordinary clients must never be included.
|
|
|
|
## Commands and capabilities
|
|
|
|
The server implements the normal authorization and transaction commands:
|
|
`USER`, `PASS`, `AUTH`, `APOP`, `STAT`, `LIST`, `UIDL`, `RETR`, `TOP`, `DELE`,
|
|
`RSET`, `NOOP`, `CAPA`, `UTF8`, `STLS`, and `QUIT`. Multiline replies apply
|
|
POP3 dot transparency and canonical CRLF termination even when a stored
|
|
message was read in chunks.
|
|
|
|
`CAPA` reports the implemented `TOP`, `RESP-CODES`, `AUTH-RESP-CODE`,
|
|
`PIPELINING`, `EXPIRE NEVER`, `UIDL`, and `UTF8` features. `STLS`, `USER`, and
|
|
the `SASL` mechanism list are state-dependent. After `UTF8` succeeds, `STLS`
|
|
is no longer offered and is rejected, preventing already-buffered cleartext
|
|
UTF-8 session state from crossing the TLS boundary.
|
|
|
|
## Deletion and quota semantics
|
|
|
|
`DELE` marks a message only for the current POP3 transaction. `RSET` or a
|
|
disconnect leaves it in the mailbox; a successful `QUIT` commits the marked
|
|
deletions. Storage is therefore released only after that commit. POP3 has no
|
|
standard quota query command, but delivery to the same account is still
|
|
limited by the shared Store quota described in [quotas.md](quotas.md).
|
|
|
|
Use IMAP or Webmail when a client needs server-side folders, flags, searching,
|
|
or concurrent mailbox changes. POP3 clients which delete downloaded mail
|
|
should be tested carefully before enabling that option for a large account.
|
|
|
|
## Operational checks
|
|
|
|
After changing the listener or TLS policy, validate and synchronize the
|
|
configuration, restart the agent through `bongo-manager`, and test both the
|
|
clear listener's `STLS` transition and a direct POP3S login. Also verify
|
|
`STAT`, `LIST`, `RETR`, `TOP`, `UIDL`, deletion rollback on disconnect, and
|
|
deletion commit on `QUIT`. The release gate is recorded under POP-01 through
|
|
POP-06 in [release-testing-0.7.md](release-testing-0.7.md).
|