d8026c5308
Previously we were attempting to save out mails according to http://www.qmail.org/man/man5/maildir.html in 4 steps: 1 Create a unique filename 2 Do stat(tmp/<filename>). If it found a file, wait 2 sec and go back to 1. 3 Create and write the message to the tmp/<filename>. 4 Link from tmp/* to new/* (we did step 2 up to 15 times) But as stated by http://wiki1.dovecot.org/MailboxFormat/Maildir (see section 'Issues with the specification'), this is a pointless approach, e.g. there are race issues between stating that the filename does not exist and the actual moving (when it might exist). So, we can simplify the steps as suggested in the dovecot wiki and tighten up our safety at the same time. One improvement that we do is to open the file, guaranteeing that it did not exist before in an atomic manner, thus our simplified approach is really more secure than what we had before. Also, we throw an OfflineImapError at MESSAGE level when the supposedly unique filename already exists, so that we can skip this message and still continue with other messages. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net> |
||
---|---|---|
.. | ||
__init__.py | ||
Base.py | ||
Gmail.py | ||
IMAP.py | ||
LocalStatus.py | ||
LocalStatusSQLite.py | ||
Maildir.py | ||
UIDMaps.py |