Dovecot-Sieve-Problem durch Nutzung der HOME-Directory als MAILDIR-Verzeichnis

testit

Well-Known Member
Hallo allerseits,

ich habe unter FreeBSD 11.4 unter Berücksichtigung der Ausführungen unter
https://blog.andreev.it/?p=1604
postfix 3.5.7.1, dovecot 2.3.11.3 mit dovecot-pigeonhole 0.5.11 und roundcube-php74-1.4.9,1 aufgesetzt (Virtual Users Home).

Das funktioniert auch alles wie erwartet, mit einer Ausnahme: Probleme mit serverseitigen Sieve-Filtern.

Nachdem ich im managesieve/config.inc.php

Code:
$config['managesieve_vacation'] = 1;

gesetzt hatte, um in Roundcube einen gesonderten Button „Abwesenheit“ (vacation(out of office)) unter dem Filter-Button zu erzeugen, wunderte ich mich, dass bei eingehenden Emails keine Abwesenheitsnachrichten generiert wurden.

Ein Blick in das Logfile zeigt ein Problem, das wohl nicht unbekannt ist:

Oct 04 11:49:57 imap(user@domain.tld)<51952><PWnZSdWwA71/AAAB>: Debug: Mailbox dovecot.sieve: Mailbox opened because: STATUS
Oct 04 11:49:57 imap(user@domain.tld)<51952><PWnZSdWwA71/AAAB>: Error: stat(/var/mail/vhosts/ user@domain.tld /user/.dovecot.sieve/tmp) failed: Not a directory

Mehreren Quellen im WWW zufolge ist vorstehende Fehlermeldung darauf zurückzuführen, dass das HOME-Directory als MAILDIR-Directory genutzt wird. Man könne den Eintrag „maildir_stat_dirs=yes“ in der /dovecot/conf.d/10-mail.conf aktivieren, um die o.a. Fehlermeldung zu verhindern:

„Seen dovecot-sieve is always enabled, setting maildir_stat_dirs = yes permits to avoid /var/mail/domain.tld/user/.dovecot.sieve (symlink) to be treated as a directory (default behavior).“
Source: https://github.com/tomav/docker-mailserver/pull/1481

Leider bewirkt der Eintrag „maildir_stat_dirs=yes“ bei mir nach Restart von Dovecot nicht, dass die o. a. Fehlermeldung „Not a directory“ verschwindet. Diese wird auch beim Erstellen und Speichern anderer eigener SIEVE-Filter in Roundcube ausgegeben. Man kann folglich keine Filter kreiieren, die angewandt werden.

Da es sich um ein frisch aufgesetztes System handelt, habe ich jetzt noch die Möglichkeit, von vornherein das Ganze so zu konfigurieren, dass das geschilderte Problem nicht mehr durch eine Nutzung der HOME-Directory als MAILDIR-Verzeichnis ausgelöst wird, zumal unter
https://wiki2.dovecot.org/VirtualUsers/Home
folgendes erläutert wird:

Home vs. mail directory
Home directory shouldn't be the same as mail directory with mbox or Maildir formats (but with dbox/obox it's fine). It's possible to do that, but you might run into trouble with it sooner or later. Some problems with this are:
  • Non-mailbox files may show up as mailboxes. If you see this with Maildir, maildir_stat_dirs=yes hides them.
  • Or user just might not be able to create mailbox with wanted name, because there already exists a conflicting file e.g. with Maildir if you have .dovecot.sieve file, user can't create a mailbox called "dovecot.sieve" (i.e. "dovecot" mailbox that has a "sieve" child)
  • And vice versa: If user creates "dovecot.sieve" mailbox, Dovecot will probably start logging all kinds of errors because the mailbox directory isn't a valid Sieve script.
  • If you ever intend to migrate to another mailbox format, it's much easier to do if you can have both old and new mail directories under the user's home directory.

Empfohlen wird unter gleicher Quelle (Ways to set up home directory):

Code:
mail_home = /var/vmail/%d/%n
mail_location = maildir:~/mail


Meine Frage:

Wo setze ich hier an?

In meiner 10-mail.conf für Dovecot2 steht aktuell:
Code:
mail_home = /var/mail/vhosts/%d/%n
mail_location = maildir:~

Wenn ich hier die Einträge in
Code:
mail_home = /var/vmail/%d/%n
mail_location = maildir:~/mail

abändere, muss ich doch vermutlich auch in postfix-Konfigurationsdateien etwas anpassen.


Kann mir vlt. jd. sagen, WO?

Viele Grüße
testit
 
meines Wissens in der main.cf. Dort hast Du jetzt vermutlich den Eintrag home_mailbox = Maildir/
der müsste angepasst werden. Aber frag mich bitte nicht wie genau.
 
Hallo,

dass die main.cf für postfix wohl angepasst werden muss, dachte ich mir schon, aber mir ging es bei meiner Frage in der Tat darum, welche Einträge ich bei dovecot und postfix anpassen muss, um sicherzustellen, dass das HOME-Directoy nicht identisch mit dem MAIL-Directory ist.

Ursprünglich sah meine Einstellung gem. dem eingangs genannten Guides so aus:

10-mail.conf (dovecot2)
mail_home = /var/mail/vhosts/%d/%n
mail_location = maildir:~

+++ Geändert, um HOME-Directory nicht als MAILDIR-Verzeichnis zu setzen +++
10-mail.conf (dovecot2)
mail_home = /var/mail/vhosts/%d/%n
mail_location = maildir:~/mail

Jetzt werden in einem Unterordner /mail die weiteren Unterordner /cur, /tmp und /new unterhalb des .dovecot-sieve-Ordners angelegt, aber es kommt dort keine EMail an. Vermutlich, weil nun die Einträge in main.cf für postfix nicht stimmen:

main.cf (postfix)
home_mailbox = Maildir/
virtual_mailbox_base = /var/mail/vhosts

Hier weiß ich leider nicht weiter ...


Viele Grüße
testit
 
Lies mal die Manpage von "local" durch, dort den Punkt "MAILBOX DELIVERY". "mail_spool_directory" mit dem Pfad auf dein neues Mailverzeichnis anstelle von "home_mailbox" wäre danach die Lösung

edit Typo
 
Hallo,

vielen Dank für den Hinweis!

Aber bleibt auch dann nicht die Frage offen, was ich in der 10-mail.conf für dovecot eintragen muss?
Die Einträge in main.cf und 10-mail.conf müssen ja zueinander passen.

EIGENTLICH müsste doch jeder, der postfix + dovecot2 + sieve (pigeonhole) mit virtuellen Usern einsetzt, aufgrund der Erläuterungen unter https://wiki2.dovecot.org/VirtualUsers/Home ebenfalls Probleme mit sieve haben, sofern er nicht HOME- und MAIL-Directory unterschiedlich definiert hat. Folglich müssten doch theoretisch viele die richtigen Einträge in main.cf und 10-mail.conf nennen können.


Viele Grüße
testit
 
Moin,

10-mail.conf (dovecot2)
mail_home = /var/mail/vhosts/%d/%n
mail_location = maildir:~/mail
Ich nutze Dovecot, postfix, sieve-Regeln und virtuelle User. Ich habe mail_home nicht konfiguriert.

Ein Grobüberblick:

Postfix:
Code:
main.cf:smtpd_sasl_type = dovecot

Hiermit kannst du Postfix sagen, dass die Authentifizierung durch Dovecot erfolgen soll. Bietet sich an, das zu nutzen.

Code:
relay_domains:foobar.de   lmtp:unix:private/lmtp-dovecot
Hiermit sagst du postfix, dass postfix das Ziel für die domain foobar.de bist. Gleichzeitig sagst du, wie der Transport der Mails erfolgen soll: Über lmtp-dovecot.

Dovecot:
Ich nutze LDAP um die virtuellen User zu authentifizieren. Deshalb habe ich unter anderem folgendes in der dovecot-ldap.conf.ext konfiguriert:
Code:
user_filter = (&(objectClass=Person)(mail=%u)
pass_attrs = uid=user,userPassword=password,=userdb_home=/home/vmail/%Ld/%Ln,=userdb_uid=1001,=userdb_gid=1001,userdb_comment=quota_rule=*:storage=%$
pass_filter = (&(objectClass=user)(mail=%u))
Hiermit setze ich unter anderem das, was du mit mail_home konfigurierst. Ich müsste raussuchen, was der Grund hierfür ist, es ist zu lange her, dass ich das konfiguriert habe.

main.cf (postfix)
home_mailbox = Maildir/
virtual_mailbox_base = /var/mail/vhosts
Wie gesagt: Habe ich beides nicht konfiguriert. Ich lasse insgesamt Dovecot die Arbeit machen. Meine Konfigurationsschnipsel sind natürlich nicht vollständig. Es macht aber keinen Sinn, eine Schritt-für-Schritt-Anleitung durchzugehen, weil viele Dinge einfach individuell sind.

HTH
 
Moin moin.

Vor x Jahren hatte ich daheim so eine Konfiguration laufen. In meinen alten Unterlagen habe ich das hier gefunden:

Im Verzeichnis virtual_mailbox_base wird das Basisverzeichnis für die Mailboxstruktur angegeben.
Die Struktur legst Du in in der main.cf mit folgendem Eintrag fest:
virtual_mailbox_maps=hash:/usr/local/etc/postfix/vmail_mailbox
und in
/usr/local/etc/postfix/vmail_mailbox schreibst Du die Zuordnung (postmap hinterher nicht vergessen):
user1@mydomain.com user1/ user2@mydomain.com user2/ usw.

In der Dovecot-Konfiguration steht %d für "directory" und %n für "name".

Vielleicht hilft es dir weiter.
 
Erstmal herzlichen Dank an Euch für die o. a. Hinweise!

Ich werde das in Ruhe durchgehen und Feedback geben.

Viele Grüße
testit
 
Zurück
Oben