Postix- oder Dovecot-Debugprotokoll für den Maildir-Ordner, den Besitzer und die Berechtigung des E-Mail-Ordners des virtuellen Benutzers

Postix- oder Dovecot-Debugprotokoll für den Maildir-Ordner, den Besitzer und die Berechtigung des E-Mail-Ordners des virtuellen Benutzers

Ich kann kein vollständiges Tutorial zu Maildir und den Ordnern finden, in denen sich Besitzer und Berechtigungen befinden. Wenn es eines gibt und Sie es bereits gefunden haben, teilen Sie es bitte mit.

Auf jeden Fall frage ich mich, ob es eine Möglichkeit gibt, mit Postfix, Dovecot Log oder einem anderen Tool Fehlermeldungen bezüglich der Maildir-Konfiguration zu erhalten, etwa wie (hey, dieser Ordner hat einen falschen Besitzer oder es fehlen die Berechtigungen oder er wurde nicht einmal erstellt)

Ich weiß, Sie werden mir sagen: „Senden Sie uns Ihren Ordner und Ihre Konfiguration“, aber ich würde gerne wissen, wie ich dies für andere zukünftige Fälle debuggen kann.

Was ich wirklich gerne wissen würde, ist zum Beispiel: Mein virtueller Benutzer hat /home/user/domain/usermail/Maildir

Welche Berechtigungen und Besitzer sollten Home, User, Domain, Usermail und Maildir haben?

Bitte bedenken Sie, dass es mir vor allem darum geht, das DEBUGGEN von Problemen im Zusammenhang mit Ordnerberechtigungen zu LERNEN.

und ich habe in dovecot.conf:

 verbose_ssl=yes
 mail_debug=yes
 auth_debug=yes
 auth_verbose=yes

und in master.cf postfix conf in diesen Zeilen

smtp    inet    n       -       n       -       -       smtpd -v
submission inet n       -       n       -       -       smtpd -v

Ist übrigens die Berechtigung drwxr-s--- für den Usermail-Ordner in Ordnung?

Antwort1

Für virtuelle Benutzer müssen Sie ein Systembenutzerkonto erstellen, diesem die E-Mails übertragen und anschließend die UID und GID dieses Benutzers in Postfix und Dovecot konfigurieren.

Hier sind die relevanten Teile meines dovecot.conf:

userdb {
  driver = static
  args = uid=8 gid=12 home=/var/spool/mail/%n
}

mail_location = maildir:~
mail_uid = 8
mail_gid = 12

Die Benutzerdatenbank ist eine sehr einfache, passwd-ähnliche Datei, die nur Benutzernamen und Passwörter enthält. Alles andere ist im eigentlichen userdb {...}Block darüber fest codiert, also befinden sich UID und GID sowie das „Home“ des Benutzers darin /var/spool/mailund beginnen mit dem verwendeten Login (vorausgesetzt, es wurde zuvor in der Passwd-Datei definiert, da sonst der Zugriff verweigert wird).

mail_locationteilt ihm mit, dass die E-Mails im Maildir-Format vorliegen und sich in ~(Home) befinden, was dem „Home“-Pfad entspricht, den es oben aus der Benutzerdatenbank erhalten hat. mail_gid/uidLegen Sie den Besitz der E-Mails erneut auf den entsprechenden Systembenutzer fest, dem die E-Mails gehören sollen. In Postfix sollte dies offensichtlich dasselbe sein.

Nachspann main.cf:

virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailboxes
virtual_uid_maps = static:8
virtual_gid_maps = static:12

Dasselbe Basisverzeichnis wie Dovecot, es /etc/postfix/vmailboxeshat jedoch die Syntax, <mail user account> <mail directory>/sodass es beispielsweise, wenn es enthält, serverfault serverfault/Postfix mitteilt, dass alle an empfangenen E-Mails serverfault@domainin landen /var/spool/mail/serverfault, was dem Ort entspricht, an dem Dovecot nach ihnen sucht, wenn Sie sich mit dem serverfaultBenutzernamen anmelden.

Dann müssen wir virtual_uid/gid_mapsden Besitz der E-Mails wieder auf den Systembenutzer festlegen, den wir zuvor ausgewählt/erstellt haben. Es sollte derselbe sein wie bei Dovecot.

Ich kenne keine besonderen Optionen für die Protokollierung, die zum Anzeigen von Fehlern erforderlich sind. Wenn ich die Berechtigungen des virtuellen E-Mail-Ordners durcheinanderbringe, fängt mein Dovecot ohne spezielle Konfiguration an, in den Protokollen zu schreien (keine protokollierungsbezogenen Optionen in meiner dovecot.conf):

Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: opendir(/var/spool/mail/username) failed: Permission denied (euid=8(mail) egid=12(mail) missing +r perm: /var/spool/mail/username)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:04 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username/) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: chdir(/var/spool/mail/username) failed: Permission denied
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:09 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/.Sent Messages/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)
Mar 07 12:54:10 sanctuary dovecot[2175]: imap(username): Error: stat(/var/spool/mail/username/tmp) failed: Permission denied (euid=8(mail) egid=12(mail) missing +x perm: /var/spool/mail/username, dir owned by 0:0 mode=0700)

Dasselbe gilt für Postfix, wenn ich versuche, eine E-Mail zu senden, obwohl die Berechtigungen durcheinander geraten sind:

Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: maildir access problem for UID/GID=8/12: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: warning: perhaps you need to create the maildirs in advance
Mar 07 12:56:45 sanctuary postfix/virtual[2736]: E752F186: to=<username@sanctuary>, relay=virtual, delay=0.05, delays=0.03/0.01/0/0.01, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /var/spool/mail/username/tmp/1425729405.P2736.sanctuary: Permission denied)

Antwort2

dovecot-ldaIch gehe davon aus, dass du zum Einsenden deiner Mails an dein Maildir verwendest. Soweit ich mich erinnere, dovecot-ldawerden dir detaillierte Informationen darüber angezeigt, welche Berechtigungen fehlen.

dovecot-ldahat keinen Zugriff auf die globale Protokollierungsfunktion von Dovecot. Sie müssen die Protokollierung daher dovecot-ldaseparat konfigurieren. Suchen Sie dazu in Ihrer Dovecot-Konfiguration nach „protocol lda {“ und ändern Sie die Parameter log_pathentsprechend info_log_pathIhren Anforderungen. Wenn Sie hier Dateien einfügen, sollten diese von dovecot-lda beschreibbar sein, und wenn Sie Syslog verwenden möchten (d. h. die Parameter leer lassen), müssen Sie die Berechtigung von /dev/log ändern.

Das Dovecot-Wiki enthält weitere Einzelheiten:http://wiki2.dovecot.org/LDA

Übrigens: Sie benötigen kein SMTP und kein ausführliches Übermittlungsprotokoll in Postfix, wenn Sie herausfinden möchten, wo das Problem mit der lokalen E-Mail-Zustellung liegt.

verwandte Informationen