
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/mail
und beginnen mit dem verwendeten Login (vorausgesetzt, es wurde zuvor in der Passwd-Datei definiert, da sonst der Zugriff verweigert wird).
mail_location
teilt 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/uid
Legen 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/vmailboxes
hat 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@domain
in landen /var/spool/mail/serverfault
, was dem Ort entspricht, an dem Dovecot nach ihnen sucht, wenn Sie sich mit dem serverfault
Benutzernamen anmelden.
Dann müssen wir virtual_uid/gid_maps
den 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-lda
Ich gehe davon aus, dass du zum Einsenden deiner Mails an dein Maildir verwendest. Soweit ich mich erinnere, dovecot-lda
werden dir detaillierte Informationen darüber angezeigt, welche Berechtigungen fehlen.
dovecot-lda
hat keinen Zugriff auf die globale Protokollierungsfunktion von Dovecot. Sie müssen die Protokollierung daher dovecot-lda
separat konfigurieren. Suchen Sie dazu in Ihrer Dovecot-Konfiguration nach „protocol lda {“ und ändern Sie die Parameter log_path
entsprechend info_log_path
Ihren 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.