Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fetching pop3.uidl leads to rados storage metadata (omap) read #230

Closed
jrse opened this issue Jan 11, 2019 · 0 comments
Closed

fetching pop3.uidl leads to rados storage metadata (omap) read #230

jrse opened this issue Jan 11, 2019 · 0 comments
Assignees
Labels

Comments

@jrse
Copy link
Contributor

jrse commented Jan 11, 2019

fetching pop3.uidl leads to rados storage metadata (omap) read.

fetching the following mail metadata will lead to rados omap query for pop3.uidl metadata.

fetch ... "pop3.uidl"

pop3.uidl:
is used to uniquely identify messages for pop3 clients.
https://tools.ietf.org/html/rfc1939#page-12

  • the pop3 command UIDL is used to receive the uidl of a message.

  • the uidl is used by pop3 clients to indicate which mails are already dowloaded. For that the client will save them appropriatelly. e.g. thunderbird popstate.dat (https://stackoverflow.com/questions/318673/where-does-thunderbird-store-the-uid-of-the-last-message-downloaded-via-pop)

  • There are several pop3 options available in dovecot which define the handling of pop3.uidl. (https://wiki.dovecot.org/POP3Server)

  • The uidl for mdbox/sdbox and rbox are generated. howevever, it is possible to use pop3_reuse_xuidl=yes to use the mail header X-UIDL attribute to set it explicitly ( (which is however rather dprecated) (https://wiki2.dovecot.org/MailboxFormat/dbox)

  • struct mail_vfunc provides the eventhandler void (*update_pop3_uidl)(struct mail mail, const charuidl).
    This eventhandler is used to notify storage plugins that the pop3_uidl has been generated/updated.
    Currently the only mail_storage plugin which implments this event handler is maildir.

  • The current mdbox implementation regarding pop3_uidl only adds the pop3_uidl to the mdbox index, if it was set perviously written to the mdata struct mdata->pop3_uidl. Currently the only storage_plugin which does that is maildir. So i assume the code handling pop3_uidl in mdbox storage plugin is mainly due to migration issues from maildir to mdbox.

To Reproduce
Steps to reproduce the behavior:

  1. execute doveadm -D fetch -u " ... pop3.uidl" mailbox INBOX

Expected behavior
The rbox plugin should behave like the mdbox plugin. It should implement the possibility to save existing pop3.uidls comming from maildir otherwise it should return "" empty string for pop3.uild and pop3.order in rbox_mail_get_special() to trigger the recalculation of uidl based on format and specified header fields (pop3-commands.c::pop3_get_uid)

jrse added a commit that referenced this issue Jan 11, 2019
jrse added a commit that referenced this issue Jan 11, 2019
@jrse jrse self-assigned this Jan 11, 2019
@jrse jrse added the bug label Jan 11, 2019
jrse added a commit that referenced this issue Jan 11, 2019
@jrse jrse closed this as completed Jan 11, 2019
jrse added a commit that referenced this issue Jan 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

1 participant