Skip to content

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
yesimplemented and advertised where the protocol advertises
partialusable with the limit given in the note
nonot 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.

RFCTitleStateNotes
9051IMAP4rev2yes
3501IMAP4rev1yes
2177IDLEyes
2342NAMESPACEyesafter login; see Namespaces
2971IDyesbefore login always; after login while imap_id_send is non-empty
3516BINARYyesafter login
3691UNSELECTyesafter login
4314ACLyesafter login, with acl.enabled (off by default)
4315UIDPLUSyesafter login
4731ESEARCHyesafter login
4959SASL-IRyes
5161ENABLEyesafter login
5182SEARCHRESyesafter login
5256SORT, THREADyesafter login: SORT, THREAD=REFERENCES, THREAD=ORDEREDSUBJECT
5258LIST-EXTENDEDyesafter login
5464METADATAyesafter login, when a metadata dict is configured
5465NOTIFYpartialafter login; annotation and metadata events are not reported
5819LIST-STATUSyesafter login
6154SPECIAL-USE, CREATE-SPECIAL-USEyesafter login
6851MOVEyesafter login
6855UTF8=ACCEPTyesafter login
7162CONDSTORE, QRESYNCyesafter login
7888LITERAL+yes
8438STATUS=SIZEyesafter login
8474OBJECTIDyesafter login: MAILBOXID, EMAILID, THREADID
9208QUOTAyesafter login, while imap_quota is on (the default)
3348CHILDRENnonot advertised
3502MULTIAPPENDno
4467URLAUTHno
4469CATENATEno
4978COMPRESS=DEFLATEno
5255I18NLEVELnoSORT and THREAD collate with i;unicode-casemap, but the extension is not advertised
5267ESORT, CONTEXT=SEARCH, CONTEXT=SORTno
5957SORT=DISPLAYno
7889APPENDLIMITnonot advertised; the size limit still applies
8437UNAUTHENTICATEno
8508REPLACEno
8514SAVEDATEno
8970PREVIEWno

See IMAP for the settings.

POP3 ​

Served by yarilo-pop3, through yarilo-pop3-login.

RFCTitleStateNotes
1939POP3yes
2449Extension mechanismyesCAPA with TOP, UIDL, USER, RESP-CODES, PIPELINING; EXPIRE and LOGIN-DELAY are not advertised
2595STLSyeson a listener with STARTTLS
3206SYS and AUTH response codesyesAUTH-RESP-CODE
5034SASL authenticationyes
1460LASTyeswith pop3_enable_last; the command was dropped from POP3 by RFC 1725
6856UTF8no

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.

RFCTitleStateNotes
5321SMTPyes
6409Message submissionyesrelayed to an external MTA
3207STARTTLSyesport 587
8314Implicit TLSyesport 465
4954AUTHyes
61528BITMIMEyes
1870SIZEyesthe submission_max_mail_size limit
2920PIPELININGyes
2034ENHANCEDSTATUSCODESyes
3030CHUNKINGyes
9422LIMITSyesRCPTMAX when submission_max_recipients is set
3461DSNno
3030BINARYMIMEno
4468BURLno
6531SMTPUTF8no
8689REQUIRETLSno

Also spoken: XCLIENT (Postfix), toward a relay that advertises it and from peers in general.xclient.trusted_nets. See Submission.

LMTP ​

Served by yarilo-lmtp, through yarilo-lmtp-login, which answers LHLO itself.

RFCTitleStateNotes
2033LMTPyes
61528BITMIMEyes
1870SIZEyesthe quota_mail_size limit when set
2920PIPELININGyes
2034ENHANCEDSTATUSCODESyes
3030CHUNKINGyes
9422LIMITSyesRCPTMAX when lmtp_max_recipients is set
3461DSNpartialORCPT is accepted; DSN is not advertised
6531SMTPUTF8no

Also spoken: XCLIENT (Postfix), from peers in general.xclient.trusted_nets. See LMTP.

JMAP ​

Served by yarilo-jmap, through yarilo-jmap-login.

RFCTitleStateNotes
8620JMAP coreyessession, request envelope, back-references, blob upload and download
8620 §7.3Push over EventSourceyesa write on any pod reaches the stream as a yarilo-locks event; off with jmap_push_poll: 0, see Push
8621JMAP for MailyesMailbox/queryChanges and Email/queryChanges answer cannotCalculateChanges, which the RFC allows
8621 §7Submissionyeswhen a relay is configured; identities are read-only
8621 §8Vacation responseyeswith Sieve vacation on
9425JMAP for Quotasyesread-only
9661JMAP for Sieve scriptsyes
8620 §7.2PushSubscriptionno
8887JMAP over WebSocketno

See JMAP.

Sieve and ManageSieve ​

Scripts run at delivery; sieve_extensions narrows the set a deployment offers.

RFCTitleStateNotes
5804ManageSieveyes
5228Sieveyesfileinto, reject, envelope, encoded-character
3894copyyes
5173bodyyes
5183environmentyes
5229variablesyes
5230vacationyes
5231relationalyes
5232imap4flagsyes
5233subaddressyes
5235spamtest, spamtestplus, virustestyesreport "not scanned" until a status header is configured
5260date, indexyes
5293editheaderyes
5429erejectyes
5435enotifyyes
5436mailto notification methodyes
5463ihaveyes
5490mailbox, mboxmetadata, servermetadatayes
5703foreverypart, mime, extracttext, replace, encloseyes
6131vacation-secondsyes
6609includeyes
6785IMAP events (imapsieve)yes
7352duplicateyes
8579special-useyes
8580fccyes
9042mailboxidyes

Also implemented: regex (draft), and the vnd.yarilo.* extensions. See Sieve.

Authentication ​

SASL mechanisms run in yarilo-auth and are offered by every protocol that authenticates.

RFCTitleStateNotes
4422SASLyes
4616PLAINyes
5802SCRAM-SHA-1, SCRAM-SHA-1-PLUSyes
7677SCRAM-SHA-256, SCRAM-SHA-256-PLUSyes
9266tls-exporter channel bindingyesthe -PLUS mechanisms, over TLS 1.3
7628OAUTHBEARERyeswith an OAuth2 passdb
7662Token introspectionyes
7519JWTyeslocal mode
6749OAuth 2.0 password grantyesfor PLAIN and LOGIN, with oauth2_grant_url
2195CRAM-MD5no
2831DIGEST-MD5no
4752GSSAPI (Kerberos)no
4422 App. AEXTERNALno

Also implemented: LOGIN (draft) and XOAUTH2 (Google). See SCRAM and OAuth 2.0.

Message format and transport ​

RFCTitleStateNotes
5322Internet Message Formatyes
2045–2049MIMEyes
2231MIME parameter continuationsyesparameters keep their order and spelling
8446TLS 1.3yesTLS 1.2 is the default minimum

Also spoken: the HAProxy PROXY protocol on any listener with haproxy_protocol, and the Postfix policy delegation protocol in yarilo-quota-status.