Dovecot creates folder, Postfix expects file
The answer is extremely simple. The path in /etc/postfix/vmail_mailbox
is missing a trailing slash. When there is no trailing slash, postfix will treat it as a file and thereby assume the mailbox is in Mailbox (and not Maildir) format.
By appending the trailing slash, postfix will correctly consider the directory to be of maildir format and treat it accordingly.
Example:
[email protected] domain.tld/user/
[email protected] domain.tld/user2/
Related videos on Youtube
Steen Schütt
Updated on September 18, 2022Comments
-
Steen Schütt almost 2 years
I have tried configuring a Postfix/Dovecot combo with virtual users using this guide.
My server is running Postfix 2.6.6 and Dovecot 2.0.9 on CentOS 6.5.
The problem is that when I connect to the server using Outlook 2013 (it connects just fine on IMAP+SMTP) and send myself a test e-mail I don't receive the e-mail. Looking at the maillog I can see I'm getting the error
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)
The error message was pretty clear and I thought, well, this could be leftovers from a defect Cyrus/Postfix installation I had earlier. I went ahead and deleted the vmail folder, created a subfolder for the domain and changed the ownership of everything to vmail:vmail. I restart postfix and dovecot and the inbox directory appears again. Postfix continues to complain as it did before. Then I tried deleting the folder and then create an empty file, but this only made it a dovecot issue rather than a postfix issue, so now dovecot says it was expecting a file rather than a directory.
/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 }
and finally some example entries in my domains/aliases/mailbox lists
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
-
NickW over 10 yearsYou have a typo in your dovecot.conf, the first
Maildir
line should be commented out. -
Steen Schütt over 10 years@NickW Thanks for pointing that out, although I did find the actual issue I didn't notice this.
-
NickW over 10 yearsNo problems, those little oversights have cost me many an hour of fustration :)
-
-
garenyondem over 6 yearsomg its so unfortunate i didnt see this three days ago...