mention that imported messages are not deduplicated

so importing twice can result in duplicates.

related to issue #180
This commit is contained in:
Mechiel Lukkien 2024-06-24 11:46:50 +02:00
parent fdcd2eb0eb
commit beee03574a
No known key found for this signature in database
4 changed files with 11 additions and 2 deletions

6
doc.go
View file

@ -695,6 +695,9 @@ recipients to be accepted, unless other reputation signals prevent that.
Users can also import mailboxes/messages through the account web page by Users can also import mailboxes/messages through the account web page by
uploading a zip or tgz file with mbox and/or maildirs. uploading a zip or tgz file with mbox and/or maildirs.
Messages are imported even if already present. Importing messages twice will
result in duplicate messages.
Mailbox flags, like "seen", "answered", will be imported. An optional Mailbox flags, like "seen", "answered", will be imported. An optional
dovecot-keywords file can specify additional flags, like Forwarded/Junk/NotJunk. dovecot-keywords file can specify additional flags, like Forwarded/Junk/NotJunk.
@ -722,6 +725,9 @@ recipients to be accepted, unless other reputation signals prevent that.
Users can also import mailboxes/messages through the account web page by Users can also import mailboxes/messages through the account web page by
uploading a zip or tgz file with mbox and/or maildirs. uploading a zip or tgz file with mbox and/or maildirs.
Messages are imported even if already present. Importing messages twice will
result in duplicate messages.
usage: mox import mbox accountname mailboxname mbox usage: mox import mbox accountname mailboxname mbox
# mox export maildir # mox export maildir

View file

@ -42,6 +42,9 @@ recipients to be accepted, unless other reputation signals prevent that.
Users can also import mailboxes/messages through the account web page by Users can also import mailboxes/messages through the account web page by
uploading a zip or tgz file with mbox and/or maildirs. uploading a zip or tgz file with mbox and/or maildirs.
Messages are imported even if already present. Importing messages twice will
result in duplicate messages.
` `
func cmdImportMaildir(c *cmd) { func cmdImportMaildir(c *cmd) {

View file

@ -1586,7 +1586,7 @@ const index = async () => {
} }
}, importFieldset = dom.fieldset(dom.div(style({ marginBottom: '1ex' }), dom.label(dom.div(style({ marginBottom: '.5ex' }), 'File'), dom.input(attr.type('file'), attr.required(''), attr.name('file'), function focus() { }, importFieldset = dom.fieldset(dom.div(style({ marginBottom: '1ex' }), dom.label(dom.div(style({ marginBottom: '.5ex' }), 'File'), dom.input(attr.type('file'), attr.required(''), attr.name('file'), function focus() {
mailboxFileHint.style.display = ''; mailboxFileHint.style.display = '';
})), mailboxFileHint = dom.p(style({ display: 'none', fontStyle: 'italic', marginTop: '.5ex' }), 'This file must either be a zip file or a gzipped tar file with mbox and/or maildir mailboxes. For maildirs, an optional file "dovecot-keywords" is read additional keywords, like Forwarded/Junk/NotJunk. If an imported mailbox already exists by name, messages are added to the existing mailbox. If a mailbox does not yet exist it will be created.')), dom.div(style({ marginBottom: '1ex' }), dom.label(dom.div(style({ marginBottom: '.5ex' }), 'Skip mailbox prefix (optional)'), dom.input(attr.name('skipMailboxPrefix'), function focus() { })), mailboxFileHint = dom.p(style({ display: 'none', fontStyle: 'italic', marginTop: '.5ex' }), 'This file must either be a zip file or a gzipped tar file with mbox and/or maildir mailboxes. For maildirs, an optional file "dovecot-keywords" is read additional keywords, like Forwarded/Junk/NotJunk. If an imported mailbox already exists by name, messages are added to the existing mailbox. If a mailbox does not yet exist it will be created. Messages are not deduplicated, importing them twice will result in duplicates.')), dom.div(style({ marginBottom: '1ex' }), dom.label(dom.div(style({ marginBottom: '.5ex' }), 'Skip mailbox prefix (optional)'), dom.input(attr.name('skipMailboxPrefix'), function focus() {
mailboxPrefixHint.style.display = ''; mailboxPrefixHint.style.display = '';
})), mailboxPrefixHint = dom.p(style({ display: 'none', fontStyle: 'italic', marginTop: '.5ex' }), 'If set, any mbox/maildir path with this prefix will have it stripped before importing. For example, if all mailboxes are in a directory "Takeout", specify that path in the field above so mailboxes like "Takeout/Inbox.mbox" are imported into a mailbox called "Inbox" instead of "Takeout/Inbox".')), dom.div(dom.submitbutton('Upload and import'), dom.p(style({ fontStyle: 'italic', marginTop: '.5ex' }), 'The file is uploaded first, then its messages are imported, finally messages are matched for threading. Importing is done in a transaction, you can abort the entire import before it is finished.')))), importAbortBox = dom.div(), // Outside fieldset because it gets disabled, above progress because may be scrolling it down quickly with problems. })), mailboxPrefixHint = dom.p(style({ display: 'none', fontStyle: 'italic', marginTop: '.5ex' }), 'If set, any mbox/maildir path with this prefix will have it stripped before importing. For example, if all mailboxes are in a directory "Takeout", specify that path in the field above so mailboxes like "Takeout/Inbox.mbox" are imported into a mailbox called "Inbox" instead of "Takeout/Inbox".')), dom.div(dom.submitbutton('Upload and import'), dom.p(style({ fontStyle: 'italic', marginTop: '.5ex' }), 'The file is uploaded first, then its messages are imported, finally messages are matched for threading. Importing is done in a transaction, you can abort the entire import before it is finished.')))), importAbortBox = dom.div(), // Outside fieldset because it gets disabled, above progress because may be scrolling it down quickly with problems.
importProgress = dom.div(style({ display: 'none' })), dom.br(), footer); importProgress = dom.div(style({ display: 'none' })), dom.br(), footer);

View file

@ -1362,7 +1362,7 @@ const index = async () => {
mailboxFileHint.style.display = '' mailboxFileHint.style.display = ''
}), }),
), ),
mailboxFileHint=dom.p(style({display: 'none', fontStyle: 'italic', marginTop: '.5ex'}), 'This file must either be a zip file or a gzipped tar file with mbox and/or maildir mailboxes. For maildirs, an optional file "dovecot-keywords" is read additional keywords, like Forwarded/Junk/NotJunk. If an imported mailbox already exists by name, messages are added to the existing mailbox. If a mailbox does not yet exist it will be created.'), mailboxFileHint=dom.p(style({display: 'none', fontStyle: 'italic', marginTop: '.5ex'}), 'This file must either be a zip file or a gzipped tar file with mbox and/or maildir mailboxes. For maildirs, an optional file "dovecot-keywords" is read additional keywords, like Forwarded/Junk/NotJunk. If an imported mailbox already exists by name, messages are added to the existing mailbox. If a mailbox does not yet exist it will be created. Messages are not deduplicated, importing them twice will result in duplicates.'),
), ),
dom.div( dom.div(
style({marginBottom: '1ex'}), style({marginBottom: '1ex'}),