Faccia copia costante di maildir

Supponendo che sto utilizzando Dovecot ed è formato da maildir per salvare e accedere a posta in un server. Come faccio ad evitare le condizioni di gara durante la copia di un maildir?


Ho letto alcune esercitazioni sui backup e sull'utilizzo di maildir ma non ho visto chiunque scrivesse di questo. Usano solo cp o rsync per copiare la directory in un altro luogo. È imansible che il maildir diventi uno stato incoerente copiando o ho bisogno di qualche tipo di block?

EDIT: Voglio eseguire regolarmente i backup, ma non credo che sia vero per la questione. So che potrei interrompere il server di posta (Dovecot e Postfix), ma penso che dovrebbe essere ansible senza farlo. Per quanto mi conosco, maildir support l'accesso concorrente da diverse applicazioni.

One Solution collect form web for “Faccia copia costante di maildir”

Ho appena letto la documentazione per Maildir in Dovecot e pochi altri documenti su Maildir e Maildir ++. Spero di non perdere niente di importnte.


Maildir è progettato per funzionare senza serrature. La maggior parte delle operazioni richieste sono atomiche sui file system moderni. Ciò significa che non devi preoccuparti molto delle condizioni di gara come la lettura incoerente. Ma ci sono ancora alcuni problemi se si desidera eseguire il backup di un Maildir mentre il server di posta è in esecuzione.

Problemi

  • Il backup e il ripristino di tmp/ è inutile. Ogni Maildir contiene le directory new/ , cur/ e tmp/ . Directory tmp/ contiene le mail che vengono scritte sul disco in questo momento. Sono spostati a new/ quando sono scritti con successo. Ciò significa che i file in tmp/ non possono essere ancora completati. Anche se il file è completo, il process che stava scrivendo il file non è più in esecuzione dopo il ripristino del backup. Ciò significa che se tale file viene ripristinato, non sarà mai aggiunto alla cassetta postale e non può essere mai rimosso.

  • Può essere ragionevole escludere wherecot-uidlist.lock dal backup. Dovecot utilizza un'estensione di Maildir denominata Maildir ++. Questa estensione ha bisogno di bloccare. L'acquisizione del block per la lettura non è richiesta dall'estensione, ma può essere ragionevole escludere il file di block dal backup.

  • Acquisire wherecot-uidlist.lock o utilizzare l'istantanea del filesystem. In sostanza, è ansible copiare solo la directory, ma è ansible perdere alcune mail per condizioni di gara. Il motivo è che elencare e copiare il contenuto di una directory (ricorsivamente) non è atomica. Ciò significa che è ansible perdere un'email durante la creazione del backup quando un utente modifica un tag (ad esempio visto / non visto) o spostando la posta. Per gestire tali situazioni, Dovecot acquisisce il file di block (come sopra) per each azione. Se si utilizza Dovecot, è ansible risolvere il problema acquisendo la chiusura prima di creare il backup. Ciò può essere fatto con /usr/lib/wherecot/maildirlock . Un'altra possibilità è quella di utilizzare istantanee del file system. Poiché la creazione di un'istantanea è atomica, il problema non si verifica nelle istantanee.

Come riepilogo rapido: se si desidera eseguire un backup durante l'esecuzione di Dovecot, è necessario acquisire prima il file di block wherecot-uidlist.lock o creare un'istantanea di un filesystem. Quindi, è ansible copiare il Maildir. Può essere ragionevole escludere tmp/ e wherecot-uidlist.lock dal backup.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.