Gerade habe ich mich mit dem Fehler
„ubuntu dovecot: lmtp(8255, user@server.de): Error: User user@server.de doesn’t have home dir set, disabling duplicate database”
beschäftigt, die in meinen Mailserver Errorlogs erschien. Der Grund für die Warnung ist, dass ich in meiner Mailserver Konfiguration die Option „mail_home” nicht gesetzt habe. Das ist zwar bei einem sehr einfachen Mailserver egal, aber sobald z.B. Sieve eingesetzt wird, spuckt Dovecot diesen Fehler aus, denn Sieve kann von dieser Einstellung Gebrauch machen (Siehe auch hier: Dovecot VirtualUsers Home). Meine Anleitung zu Sieve hat das nicht beeinträchtigt, weil ich dort die Pfade zu den Userscripts sowieso nochmal explizit angegeben habe, dennoch sollte die Einstellung „mail_home” eigentlich gesetzt sein.
Aus diesem Grund habe ich mein Konzept zum Verzeichnisbaum für die Mailkonten überarbeitet und angepasst:
- Pfad zu den Mailboxen bisher: /var/vmail/%d/%n
- Neuer Pfad zu den Mailboxen: /var/vmail/%d/%n/mail
… es wurde als ein „mail” angehängt. Der alte Pfad ist nun das „mail_home” und die Mailbox befindet sich nun darin. Damit bin ich der Empfehlung in den Dovecot Docs gefolgt.
Alle User, die meine Mailserver Anleitungen befolgt haben, sollten diese Änderung ebenfalls durchführen. Meine Hauptanleitung wurde bereits angepasst. Konkret ist folgendes zu tun:
Dovecot beenden:
service dovecot stop
Die Konfigurationsdatei „/etc/dovecot/conf.d/10-mail.conf” öffnen und statt
mail_location = maildir:/var/vmail/%d/%n:LAYOUT=fs
das eintragen:
mail_home = /var/vmail/%d/%n mail_location = maildir:~/mail:LAYOUT=fs
Bevor die neue Konfiguration aktiv werden darf und Dovecot wieder gestartet werden kann, müssen jetzt noch unbedingt die Mailboxen der User verschoben werden – sonst stehen sie vor leeren Postfächern! Da ich bisher nur wenige User auf meinem Server betreue, konnte ich die Verschiebung per Hand machen. Bei größeren Installationen empfiehlt sich die Verwendung eines Scripts, das die Arbeit automatisch erledigt. Leider kann ich euch kein solches Script bereitstellen, aber vielleicht findet sich ja ein Leser, der entsprechende Kenntnisse hat :)
Bei mir hat die Prozedur folgendermaßen ausgesehen:
cd /var/vmail/domain/ mv user1/ mail mkdir user1 chmod 770 user1/ chown vmail:vmail user1/ mv mail/ user1/
… diese Befehlsfolge wurde für alle User (user2, user3, etc) wiederholt.
Dovecot wieder starten:
service dovecot restart
In meinem Fall beschwerte dich Dovecot daraufhin mit „… corrupted indexes” o.Ä. in seinen Errorlogs. Nach einem weiteren Neustart war dann aber Ruhe ;)
Wie bereits geschrieben – am besten führt ihr die Änderungen an eurem Server auch durch, das ist einfach sauberer ;) Wer nicht verschieben will, kann auch einen alternativen Ort für die User Homes anlegen. Schaut euch am besten diese Seite dazu an, dort werden die Möglichkeiten nochmals gezeigt.
Update: Fuchsi hat dieses Script vorgeschlagen (ungetestet! Backup machen!):
cd /var/vmail/domain/ for user in $(ls); do mv "$user/" mail mkdir "$user" chmod 770 "$user/" chown vmail:vmail "$user/" mv mail/ "$user/" done