[Dovecot] There is a way to know if a email has been expunged ?
Alex Baule
alexwbaule at gmail.com
Sun Feb 12 18:48:37 EET 2012
Tks timo !
I will see the plugin to do like it!
Em 12/02/2012 13:46, "Timo Sirainen" <tss at iki.fi> escreveu:
> Hi,
>
> Yeah, you shouldn't do the erasing directly in expunge(), because it may
> still be aborted. Do it in sync_notify() like quota plugin does.
>
> On 12.2.2012, at 16.52, Alex Baule wrote:
>
> > I want to know because i have header and body splited. To erase the
> > body, i must have shure, that header was expunged. Some tests that i
> > made, the client call expunge, but i don't know why (there is notting
> > in mail log) the header was not expunged, nut my body was, because i
> > call it before expunge the header. something like this.
> >
> > if (found_body){
> > erase_body();
> > super.expunge(_mail);
> > }
> >
> > Because that expunge that no happen, (the client call, but the email
> > was not expunged) i think to do like this way:
> >
> > if (found_body){
> > super.expunge(_mail);
> > if(_mail was expunged){
> > erase_body();
> > }
> > }
> >
> > TKs Timo !
> >
> > Em 12 de fevereiro de 2012 02:19, Timo Sirainen <tss at iki.fi> escreveu:
> >> On 10.2.2012, at 19.39, Alex Baule wrote:
> >>
> >>> Hy Everyone...and Timo !
> >>>
> >>> There is a way to know if a email was expunged (deleted from hard
> >>> disk) inside a plugin ? I rewrite the expunge function, but the real
> >>> expunge function is void, i can't know if was really expunged.
> >>>
> >>> There is a way to know this ?
> >>
> >> It's not known until transaction_commit() what messages are expunged.
> What do you need to know this for? There are a few different ways.
> >>
> >> If you simply need one of the sessions to definitely know that it
> expunged a message, you can do it like quota plugin does. (So even if there
> are multiple clients doing EXPUNGE at the same time, quota is never
> decreased more than once per mail.) See quota-storage.c and most
> importantly quota_mailbox_sync_notify().
> >>
> >> Quota code also shows the other method of doing it: keep track of what
> mail_expunge()s have been called, and then in transaction commit check if
> it succeeds and if it does do what you want to do.
> >>
> >
>
>
More information about the dovecot
mailing list