Remove "Duplicate" emails (and documentation update)

@lbutlr kremels at kreme.com
Sat Feb 24 03:01:09 EET 2018


On 2018-02-23 (16:47 MST), Joseph Tam <jtam.home at gmail.com> wrote:
> 
> On Fri, 23 Feb 2018, @lbutlr wrote:
> 
>> $ doveadm -f table fetch -u kremels 'hdr.message-id guid uid
>> hdr.x-listname' mailbox "Archive" | sort| awk 'cnt[$1]++{if
>> (cnt[$1]==2) print prev[$1]; print} {prev[$1]=$0}' |grep -E "[0-9] +$"
>> |awk '{print "doveadm expunge -u kremels MAILBOX-GUID "$2" UID "$3}?
> 
> I was unaware of the syntax "hdr.{header}" -- all the reference materials
> I've seen only refers to "hdr" which returns the entire header block.

the error message from doveadm if you specify an invalid field is:

Available fetch fields: hdr.<name> body.<section> binary.<section> user mailbox mailbox-guid seq uid guid flags modseq hdr body body.snippet text text.utf8 size.physical size.virtual date.received date.sent date.saved date.received.unixtime date.sent.unixtime date.saved.unixtime imap.envelope imap.body imap.bodystructure pop3.uidl pop3.order refcount storageid

>> First, even after expunging a message and running doveadm index -u
>> kremels ?Archive?, subsequent runs still show the same duplicate
>> messages.
> 
> I suspect client side caching.

No, there is no client side involved. I am executing all of these these commands on the mail server. I expunge the messages, I index (or even force-resync) and the next search shows the same messages even though they are not in the Maildir anymore.

> If {count} is what you expected, then dovecot has the correct information
> and it's likely some client-side caching issue.

I would have needed to check the count before doing this, and I did not.

>> Second, what I really want to do is run this over ALL the mailboxes,
>> except for Junk and Sent but if that is possible I can?t find the right
>> syntax.
> 
> You mean to remove duplicates from any 2 mailboxes, or remove duplicates
> in mailboxes also found in Archive?

I want to find any duplicates (based on msg ID) across all mailboxes, except Sent

> 	doveadm -f table fetch -u kremels \
> 		'hdr.message-id guid uid' \
> 		NOT mailbox Archive \
> 		NOT mailbox Junk \
> 		NOT mailbox Sent \
> 		| sort -b >list1

Aha! Didn't know you could use NOT mailbox. That probably solves my issue on that score.

-- 
"It's unacceptable to think" - George W Bush 15/Sep/2006



More information about the dovecot mailing list