RFC support
The standards each yarilo service implements, and how far. A row is yes only when the code serves it and, for an extension a client discovers, the server advertises it: a command a client is never told about is, to that client, absent.
| meaning | |
|---|---|
| yes | implemented and advertised where the protocol advertises |
| partial | usable with the limit given in the note |
| no | not implemented; listed because clients or other servers commonly use it |
Drafts and vendor protocols that yarilo also speaks are listed at the end of each section, without a number. Feature coverage is the same picture by feature rather than by standard.
IMAP
Served by yarilo-imap, through yarilo-imap-login. Extensions marked after login are in CAPABILITY once the client is authenticated.
| RFC | Title | State | Notes |
|---|---|---|---|
| 9051 | IMAP4rev2 | yes | |
| 3501 | IMAP4rev1 | yes | |
| 2177 | IDLE | yes | |
| 2342 | NAMESPACE | yes | after login; see Namespaces |
| 2971 | ID | yes | before login always; after login while imap_ is non-empty |
| 3516 | BINARY | yes | after login |
| 3691 | UNSELECT | yes | after login |
| 4314 | ACL | yes | after login, with acl. (off by default) |
| 4315 | UIDPLUS | yes | after login |
| 4731 | ESEARCH | yes | after login |
| 4959 | SASL-IR | yes | |
| 5161 | ENABLE | yes | after login |
| 5182 | SEARCHRES | yes | after login |
| 5256 | SORT, THREAD | yes | after login: SORT, THREAD=REFERENCES, THREAD=ORDEREDSUBJECT |
| 5258 | LIST-EXTENDED | yes | after login |
| 5464 | METADATA | yes | after login, when a metadata dict is configured |
| 5465 | NOTIFY | partial | after login; annotation and metadata events are not reported |
| 5819 | LIST-STATUS | yes | after login |
| 6154 | SPECIAL-USE, CREATE-SPECIAL-USE | yes | after login |
| 6851 | MOVE | yes | after login |
| 6855 | UTF8=ACCEPT | yes | after login |
| 7162 | CONDSTORE, QRESYNC | yes | after login |
| 7888 | LITERAL+ | yes | |
| 8438 | STATUS=SIZE | yes | after login |
| 8474 | OBJECTID | yes | after login: MAILBOXID, EMAILID, THREADID |
| 9208 | QUOTA | yes | after login, while imap_ is on (the default) |
| 3348 | CHILDREN | no | not advertised |
| 3502 | MULTIAPPEND | no | |
| 4467 | URLAUTH | no | |
| 4469 | CATENATE | no | |
| 4978 | COMPRESS=DEFLATE | no | |
| 5255 | I18NLEVEL | no | SORT and THREAD collate with i;unicode-casemap, but the extension is not advertised |
| 5267 | ESORT, CONTEXT=SEARCH, CONTEXT=SORT | no | |
| 5957 | SORT=DISPLAY | no | |
| 7889 | APPENDLIMIT | no | not advertised; the size limit still applies |
| 8437 | UNAUTHENTICATE | no | |
| 8508 | REPLACE | no | |
| 8514 | SAVEDATE | no | |
| 8970 | PREVIEW | no |
See IMAP for the settings.
POP3
Served by yarilo-pop3, through yarilo-pop3-login.
| RFC | Title | State | Notes |
|---|---|---|---|
| 1939 | POP3 | yes | |
| 2449 | Extension mechanism | yes | CAPA with TOP, UIDL, USER, RESP-CODES, PIPELINING; EXPIRE and LOGIN-DELAY are not advertised |
| 2595 | STLS | yes | on a listener with STARTTLS |
| 3206 | SYS and AUTH response codes | yes | AUTH-RESP-CODE |
| 5034 | SASL authentication | yes | |
| 1460 | LAST | yes | with pop3_; the command was dropped from POP3 by RFC 1725 |
| 6856 | UTF8 | no |
See POP3.
Submission
Served by yarilo-submission, through yarilo-submission-login, which answers EHLO until the client has authenticated. The client keeps that answer for the session, so it lists the extensions yarilo-submission serves, with the same limits.
| RFC | Title | State | Notes |
|---|---|---|---|
| 5321 | SMTP | yes | |
| 6409 | Message submission | yes | relayed to an external MTA |
| 3207 | STARTTLS | yes | port 587 |
| 8314 | Implicit TLS | yes | port 465 |
| 4954 | AUTH | yes | |
| 6152 | 8BITMIME | yes | |
| 1870 | SIZE | yes | the submission_ limit |
| 2920 | PIPELINING | yes | |
| 2034 | ENHANCEDSTATUSCODES | yes | |
| 3030 | CHUNKING | yes | |
| 9422 | LIMITS | yes | RCPTMAX when submission_ is set |
| 3461 | DSN | no | |
| 3030 | BINARYMIME | no | |
| 4468 | BURL | no | |
| 6531 | SMTPUTF8 | no | |
| 8689 | REQUIRETLS | no |
Also spoken: XCLIENT (Postfix), toward a relay that advertises it and from peers in general.. See Submission.
LMTP
Served by yarilo-lmtp, through yarilo-lmtp-login, which answers LHLO itself.
| RFC | Title | State | Notes |
|---|---|---|---|
| 2033 | LMTP | yes | |
| 6152 | 8BITMIME | yes | |
| 1870 | SIZE | yes | the quota_ limit when set |
| 2920 | PIPELINING | yes | |
| 2034 | ENHANCEDSTATUSCODES | yes | |
| 3030 | CHUNKING | yes | |
| 9422 | LIMITS | yes | RCPTMAX when lmtp_ is set |
| 3461 | DSN | partial | ORCPT is accepted; DSN is not advertised |
| 6531 | SMTPUTF8 | no |
Also spoken: XCLIENT (Postfix), from peers in general.. See LMTP.
JMAP
Served by yarilo-jmap, through yarilo-jmap-login.
| RFC | Title | State | Notes |
|---|---|---|---|
| 8620 | JMAP core | yes | session, request envelope, back-references, blob upload and download |
| 8620 §7.3 | Push over EventSource | yes | a write on any pod reaches the stream as a yarilo-locks event; off with jmap_, see Push |
| 8621 | JMAP for Mail | yes | Mailbox/ and Email/ answer cannotCalculateChanges, which the RFC allows |
| 8621 §7 | Submission | yes | when a relay is configured; identities are read-only |
| 8621 §8 | Vacation response | yes | with Sieve vacation on |
| 9425 | JMAP for Quotas | yes | read-only |
| 9661 | JMAP for Sieve scripts | yes | |
| 8620 §7.2 | PushSubscription | no | |
| 8887 | JMAP over WebSocket | no |
See JMAP.
Sieve and ManageSieve
Scripts run at delivery; sieve_ narrows the set a deployment offers.
| RFC | Title | State | Notes |
|---|---|---|---|
| 5804 | ManageSieve | yes | |
| 5228 | Sieve | yes | fileinto, reject, envelope, encoded-character |
| 3894 | copy | yes | |
| 5173 | body | yes | |
| 5183 | environment | yes | |
| 5229 | variables | yes | |
| 5230 | vacation | yes | |
| 5231 | relational | yes | |
| 5232 | imap4flags | yes | |
| 5233 | subaddress | yes | |
| 5235 | spamtest, spamtestplus, virustest | yes | report "not scanned" until a status header is configured |
| 5260 | date, index | yes | |
| 5293 | editheader | yes | |
| 5429 | ereject | yes | |
| 5435 | enotify | yes | |
| 5436 | mailto notification method | yes | |
| 5463 | ihave | yes | |
| 5490 | mailbox, mboxmetadata, servermetadata | yes | |
| 5703 | foreverypart, mime, extracttext, replace, enclose | yes | |
| 6131 | vacation-seconds | yes | |
| 6609 | include | yes | |
| 6785 | IMAP events (imapsieve) | yes | |
| 7352 | duplicate | yes | |
| 8579 | special-use | yes | |
| 8580 | fcc | yes | |
| 9042 | mailboxid | yes |
Also implemented: regex (draft), and the vnd. extensions. See Sieve.
Authentication
SASL mechanisms run in yarilo-auth and are offered by every protocol that authenticates.
| RFC | Title | State | Notes |
|---|---|---|---|
| 4422 | SASL | yes | |
| 4616 | PLAIN | yes | |
| 5802 | SCRAM-SHA-1, SCRAM-SHA-1-PLUS | yes | |
| 7677 | SCRAM-SHA-256, SCRAM-SHA-256-PLUS | yes | |
| 9266 | tls-exporter channel binding | yes | the -PLUS mechanisms, over TLS 1.3 |
| 7628 | OAUTHBEARER | yes | with an OAuth2 passdb |
| 7662 | Token introspection | yes | |
| 7519 | JWT | yes | local mode |
| 6749 | OAuth 2.0 password grant | yes | for PLAIN and LOGIN, with oauth2_ |
| 2195 | CRAM-MD5 | no | |
| 2831 | DIGEST-MD5 | no | |
| 4752 | GSSAPI (Kerberos) | no | |
| 4422 App. A | EXTERNAL | no |
Also implemented: LOGIN (draft) and XOAUTH2 (Google). See SCRAM and OAuth 2.0.
Message format and transport
| RFC | Title | State | Notes |
|---|---|---|---|
| 5322 | Internet Message Format | yes | |
| 2045–2049 | MIME | yes | |
| 2231 | MIME parameter continuations | yes | parameters keep their order and spelling |
| 8446 | TLS 1.3 | yes | TLS 1.2 is the default minimum |
Also spoken: the HAProxy PROXY protocol on any listener with haproxy_, and the Postfix policy delegation protocol in yarilo-quota-status.