Dovecot erstellt Ordner, Postfix erwartet Datei

8

Ich habe versucht, eine Postfix / Dovecot-Kombination mit virtuellen Benutzern mithilfe dieses Handbuchs zu konfigurieren .

Auf meinem Server werden Postfix 2.6.6 und Dovecot 2.0.9 unter CentOS 6.5 ausgeführt.

Das Problem ist, dass ich die E-Mail nicht erhalte, wenn ich mit Outlook 2013 eine Verbindung zum Server herstelle (über IMAP + SMTP wird eine gute Verbindung hergestellt) und mir eine Test-E-Mail sende. Wenn ich mir das Maillog ansehe, sehe ich, dass ich den Fehler bekomme

postfix/virtual[2768]: 9C3D480768: to=<[email protected]>, relay=virtual, delay=1132, delays=1132/0.02/0/0.02, dsn=4.2.0, status=deferred (delivery failed to mailbox /var/vmail/domain.net/user: cannot open file: Is a directory)

Die Fehlermeldung war ziemlich klar und ich dachte, dies könnten Reste einer fehlerhaften Cyrus / Postfix-Installation sein, die ich zuvor hatte. Ich habe den vmail-Ordner gelöscht, einen Unterordner für die Domain erstellt und den Besitz von allem in vmail: vmail geändert. Ich starte Postfix und Dovecot neu und das Posteingangsverzeichnis wird erneut angezeigt. Postfix beschwert sich weiterhin wie zuvor. Dann habe ich versucht, den Ordner zu löschen und dann eine leere Datei zu erstellen, aber dies machte es nur zu einem Dovecot-Problem und nicht zu einem Postfix-Problem. Jetzt sagt Dovecot, dass es eher eine Datei als ein Verzeichnis erwartet.

/etc/postfix/main.cf

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps

inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

relay_domains = *
virtual_alias_maps=hash:/etc/postfix/vmail_aliases
virtual_mailbox_domains=hash:/etc/postfix/vmail_domains
virtual_mailbox_maps=hash:/etc/postfix/vmail_mailbox

virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2222
virtual_transport = virtual
virtual_uid_maps = static:2222
virtual_gid_maps = static:2222

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

/etc/dovecot/dovecot.conf

listen = *
ssl = no
protocols = imap lmtp
disable_plaintext_auth = no
auth_mechanisms = plain login
mail_access_groups = vmail
default_login_user = vmail
first_valid_uid = 2222
first_valid_gid = 2222
mail_location = maildir:/var/vmail/%d/%n

passdb {
    driver = passwd-file
    args = scheme=SHA1 /etc/dovecot/passwd
}
userdb {
    driver = static
    args = uid=2222 gid=2222 home=/var/vmail/%d/%n allow_all_users=yes
}
service auth {
    unix_listener auth-client {
        group = postfix
        mode = 0660
        user = postfix
    }
    user = root
}
service imap-login {
    process_min_avail = 1
    user = vmail
}

und schließlich einige Beispieleinträge in meinen Domänen / Aliasen / Postfachlisten

domain.tld        OK # /etc/postfix/vmail_domains
[email protected]   domain.tld/user # /etc/postfix/vmail_mailbox
[email protected]   [email protected] # /etc/postfix/vmail_aliases
[email protected]:oOeIaLM/TyEPOdflb+GlL7d1MhE= # /etc/dovecot/passwd
Steen Schütt
quelle
1
Sie haben einen Tippfehler in Ihrer dovecot.conf, die erste MaildirZeile sollte auskommentiert werden.
NickW
@ NickW Danke, dass du darauf hingewiesen hast, obwohl ich das eigentliche Problem gefunden habe, habe ich es nicht bemerkt.
Steen Schütt
Keine Probleme, diese kleinen Versehen haben mich viele Stunden Fustration gekostet :)
NickW

Antworten:

14

Die Antwort ist sehr einfach. Dem Pfad in /etc/postfix/vmail_mailboxfehlt ein abschließender Schrägstrich. Wenn es keinen abschließenden Schrägstrich gibt, behandelt Postfix ihn als Datei und nimmt dabei an, dass das Postfach im Postfachformat (und nicht im Maildir-Format) vorliegt.

Durch Anhängen des abschließenden Schrägstrichs berücksichtigt postfix das Verzeichnis korrekt als maildir-Format und behandelt es entsprechend.

Beispiel:

[email protected]   domain.tld/user/
[email protected]   domain.tld/user2/
Steen Schütt
quelle
omg es ist so unglücklich, dass ich das vor drei Tagen nicht gesehen habe ...
garenyondem