Come appare il messaggio
dovecot: imap(user@example.com): Error: open(/var/mail/user) failed: Permission denied (euid=1000(user) egid=1000(user) missing +w perm: /var/mail, dir owned by 0:8 mode=0775)Cause frequenti
- I file di posta appartengono a un utente diverso da quello che usa Dovecot, ad esempio dopo una copia come root.
mail_locationpunta al percorso sbagliato, oppure la cartella non esiste.mail_uid,mail_gidofirst_valid_uidnon corrispondono al proprietario reale.- La casella di sistema
/var/mailrichiede il gruppo mail, che Dovecot non ha. - SELinux o AppArmor blocca l'accesso alla cartella della posta.
Verifica
- Quali impostazioni di percorso e utente sono attive?
doveconf -n | grep -E 'mail_location|mail_uid|mail_gid|first_valid_uid' - Di chi è la cartella della posta?
ls -ld /var/mail /var/vmail - Cosa risulta a Dovecot per questo account?
doveadm user user@example.com - Gli errori esatti
Soluzione
- Imposta il percorso giusto, ad esempio
mail_location = maildir:/var/vmail/%d/%noppuremaildir:~/Maildir. - Correggi il proprietario:
chown -R vmail:vmail /var/vmailechmod -R u+rwX,g-rwx,o-rwx /var/vmail. - Fai corrispondere
mail_uidemail_gida quel proprietario e impostafirst_valid_uidpiù basso. - Per
/var/mailimpostamail_privileged_group = mailcosì Dovecot può creare i file di lock. - Ricarica:
doveadm reloade prova di nuovo l'accesso.
Domande frequenti
Perché funziona per la posta nuova ma non per quella vecchia?
I file vecchi sono stati creati da un altro utente o strumento. Correggi il proprietario di tutto l'albero della posta, non solo delle nuove cartelle.
Postfix e Dovecot devono usare lo stesso utente?
Con la consegna locale chi scrive e chi legge devono poter accedere agli stessi file. Un utente di posta virtuale come vmail per entrambi è la soluzione più semplice.