On 17 Feb 2003, Timo Sirainen wrote:
On Mon, 2003-02-17 at 21:39, Timo Sirainen wrote:
/* move the file into new/ directory - syncing will pick it up from there */ if (rename(tmp_path, new_path) == 0) failed = FALSE;
Here you can lose emails if the new/ folder contains a message whose base name is equal.
In theory, yes. In practice, I'd say not. Courier and qmail-pop3d also use rename() instead of link()+unlink(). I'd say it's safe enough then.
Quoting a well known friend of ours, Mark Crispin - Two wrongs doesn't make one right.
qmail-pop3d doesn't move messages from tmp/ to new/. It only moves messages from new/ to cur/. Messages _can_ get lost there, and it seems like Bernstein accepts this.
If a message is lost in this operation, it basically means that a broken server/client has moved a message from new to cur earlier, without taking the one second into consideration.
So where is the bug - qmail-pop3d or Dovecot? I'd say both. First and foremost the server that placed the original message in cur/ in the first place, in breach of Maildir, and qmail-pop3d for renaming that message instead of linking it.
Andy
-- Andreas Aardal Hanssen http://www.andreas.hanssen.name/gpg