12

I've setup postfix, dovecot and roundcube. receiving and sending email via roundcube is working as well as receiving emails via imap with another email client.

But I'm not able to send emails with an external email client. As soon as I connect, I see:

postfix/smtpd[1258]: warning: SASL: Connect to private/auth failed: No such file or directory
postfix/smtpd[1258]: fatal: no SASL authentication mechanisms

in mail.log.

here my dovecot config:

dovecot -n
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.6 
mail_location = mbox:~/mail:INBOX=/var/mail/%u
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocols = imap pop3
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

here my postfix config:

postconf -n
alias_database = hash:/etc/aliases
alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
default_transport = error
dovecot_destination_recipient_limit = 1
html_directory = /usr/share/doc/postfix/html
inet_interfaces = 127.0.0.1, 192.168.1.134
inet_protocols = ipv4
local_recipient_maps = $virtual_mailbox_maps
local_transport = virtual
mailbox_size_limit = 0
mydestination = localhost
myhostname = vocdemosvr01.voxtelo.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = $mydomain
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relay_domains = proxy:pgsql:/etc/postfix/pgsql/relay_domains.cf
relay_transport = error
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql/virtual_alias_maps.cf
virtual_gid_maps = static:12
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql/virtual_domains_maps.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql/virtual_mailbox_maps.cf
virtual_minimum_uid = 8
virtual_transport = dovecot
virtual_uid_maps = static:8
voxdemosvr01:/var/spool/postfix/private# 

Which configuration do I need to check?

2
  • 1
    I'm going to take a random guess and say your SASL configuration in the Postfix configuration and your SASL authentication daemon.
    – HBruijn
    Aug 8, 2014 at 10:09
  • 1
    More seriously in the right column in this screen under related you might find useful answers to similar questions
    – HBruijn
    Aug 8, 2014 at 10:14

7 Answers 7

13

Check

/etc/dovecot/conf.d/10-master.conf

for line

unix_listener private/auth

change it to

unix_listener /var/spool/postfix/private/auth

Restart dovecot and try again. If still doesn't work, post output of dovecot -n and postconf -n.

4
  • It is already like this. I've added the outputs to the description, thanks.
    – markus
    Aug 8, 2014 at 11:55
  • 1
    so no help? i have same issue!
    – holms
    Sep 29, 2014 at 6:20
  • 1
    For me this was related to a syntax error in conf.d/auth-sql.conf.ext. Just thought I'd point out that a fatal error in any of these configuration files can cause this. dovecot -n led me to figure this out. Thanks @Tutul! Apr 21, 2015 at 21:10
  • this solved my problem. I was unable to my smtps service (465/submissions) using the openssl client (serverfault.com/a/644122/253935). Now I can send emails via nodemailer using my server as a secure SMTP server.
    – CybeX
    Jul 20, 2020 at 21:33
12

After spending some hours trying to figure out this, I finally fixed my problem, hope this helps to others...

In the postfix/main.cf file you have something like:

smtpd_sasl_path = private/auth

and in the dovecot/conf.d/10-master.conf you have something like:

service auth { 
    # auth_socket_path points to this userdb socket by default. It's typically 
    # used by dovecot-lda, doveadm, possibly imap process, etc. Its default 
    # permissions make it readable only by root, but you may need to relax these 
    # permissions. Users that have access to this socket are able to get a list 
    # of all usernames and get results of everyone's userdb lookups. 
    unix_listener /var/spool/postfix/private/auth { 
      mode = 0666 
      user = postfix 
      group = postfix 
    } 

  ...

in my case the "private/auth" in the first file was not matching the unix_listener path, as soon as I put this one equal to the first it solved the problem. My guess is that the smtpd_sasl_path has to be the same as the /var/spool/postfix/... otherwise it will fail.

Hope this helps,

2

Before doing any of re-jigging of your paths, check the dovecot configuration syntax with:

dovecot -n

That command should dump the dovecot configuration file to screen, if it does not then it will show the first error it encountered. Edit the file to fix errors, if any and you should be good to go. If you get a Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 6: Expecting '=' or similar, then simply deleting the spaces before and / or after the equals sign on the denoted line should fix it (I think it is an encoding issue).

0

Another place to check is /etc/postfix/master.cf in the submission configuration. Make sure the smtpd_sasl_path variable there matches the one in dovecot's configuration files.

0

I had a similar issue when setting up iRedMail dockerized version on Ubuntu 20.04.

I realized that Dovecot was not running in the Docker container. And when I tried starting the service the command service dovecot start I got the error

root@mail:/var/spool/postfix# service dovecot start    
 * Starting IMAP/POP3 mail server dovecot
Error: bind(/var/spool/postfix/private/dovecot-auth) failed: No such file or directory
Fatal: Failed to start listeners

I also ran the command below to confirm that my dovecot configuration was fine:

dovecot -n

And yes the output from the command showed that it was fine.

Here's how I fixed it:

The issue was caused by Postfix not being installed/running on the in my container which I discovered when I checked the docker logs for the container using - docker logs container-id. The file /var/spool/postfix/private/dovecot-auth which Dovecot was referencing was supposed to be created by Postfix, however, since the script to install Postfix failed because the correct path to the script was not picked when building the iRedMail image, this issue then came up as Dovecot could not find the file /var/spool/postfix/private/dovecot-auth:

[iRedMail] [Entrypoint] /docker/entrypoints/postfix.sh 
/docker/entrypoints/functions.sh: line 113: /docker/entrypoints/postfix.sh: No such file or directory
[iRedMail] [Entrypoint] /docker/entrypoints/mlmmj.sh 
[iRedMail] [Entrypoint] /docker/entrypoints/mlmmjadmin.sh 
[iRedMail] [Entrypoint] /docker/entrypoints/iredapd.sh 
[iRedMail] [Entrypoint] /docker/entrypoints/antispam.sh 
mail: cannot send message: Process exited with a non-zero status

All I had to do was to pull the docker repository for iRedMail using git clone -b stable https://github.com/iredmail/dockerized, rebuilt the image in my local using docker build . --tag iredmail:latest -f dockerized/Dockerfiles/Dockerfile, and then run it. This time the correct location of my Postfix install script was picked, and the Postfix installation and setup ran fine.

And when I checked Dovecot service again using:

service dovecot start

It showed me that it was running fine.

That's all

0

Somehow, in addition to the other settings, I had to add the following line to my main.cf:

queue_directory = /var/spool/postfix
0

For the latest version of postfix using Docker edit dovecot/conf.d/10-master.conf

Change

  unix_listener /var/spool/postfix/private/auth {

with this

 unix_listener /dev/shm/sasl-auth.sock {
1
  • For me uncommenting the first line and its block made it work. It was commented out by default. Jan 7 at 9:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .