IMAP NOTIFY (RFC 5465) ?

Sébastien Michel seb2lille at gmail.com
Thu Apr 23 12:56:31 EDT 2020


Hi,

Le mer. 4 mars 2020 à 14:40, Дилян Палаузов
<dilyan.palauzov at aegee.org> a écrit :
>
> Hello,
>
> is RFC 5465 (IMAP NOTIFY (https://tools.ietf.org/html/rfc5465.html) supported in 3.0 as stated at
> https://www.cyrusimap.org/imap/rfc-support.html ?

I don't see any reference to such RFC 5465 in the code source or in
the documentation, where do you find it ?

Cyrus only supports RFC 5423 Internet Message Store Events
(https://tools.ietf.org/html/rfc5423) and this RFC just defines
semantics for event notification on mailbox store, it defines no
protocol and no content format.
When at Worldline we contributed the code for event notification we
made the choice of a JSON format based on this RFC.
You have to configure event_notifier with a supported notifyd method
in imapd.conf to enable this feature. Here we have our own method to
publish in kafka topics.
But I think it is not what you want because this is not server to
client notification but server to server.

> Per RFC 5465 page 7, the server-side support is announced with “ S: * OK [CAPABILITY IMAP4REV1 NOTIFY]”.  The CAPABILITY
> answer is generated in imap/imapd.c using “static struct capa_struct base_capabilities[]” in capa_response().  The
> latter contains no code to generate NOTIFY.
>
> Moreover, the event_notifier in imapd.conf suggests utilizing it for EVENT NOTIFICATIONS,but the possible options for
> notifyd(8) https://www.cyrusimap.org/imap/reference/manpages/systemcommands/notifyd.html are null, log, mailto, zephyr
> and external: none of which is applicable to IMAP NOTIFY as substitution of IMAP IDLE.

When I worked on event notification at this time I had in mind to
prepare the work for implementing IMAP NOTIFY in Cyrus.
My opinion is to have a single notification scheme in the source code
for EVENT NOTIFICATIONS, for IMAP NOTIFY and for cyrus replication, so
avoiding 3 notification schemes.
But at this time (pre Cyrus 2.5) the organization of the source code
of cyrus was awful and the impact was to huge, and I couldn't do this
alone (as an external developper not involved in the community).

Regards,
Sébastien


More information about the Cyrus-devel mailing list