Troubleshooting Postfix SASL Authentication: Fixing “cannot connect to saslauthd server” Error


10 views

When configuring Postfix with SMTP authentication using SASL, you might encounter the frustrating "cannot connect to saslauthd server" error. The key symptoms include:

  • Failed authentication attempts with "535 5.7.8 Error: authentication failed"
  • Log entries showing "SASL authentication failure: cannot connect to saslauthd server"
  • Successful tests with testsaslauthd but failures in actual Postfix operation

First, let's check the existing setup based on the information provided:

# Current smtpd.conf configuration
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
saslauthd_path: /var/run/saslauthd/mux
autotransition:true

# Postfix main.cf entry
smtpd_sasl_auth_enable = yes

1. Check saslauthd Process Status

ps aux | grep saslauthd
systemctl status saslauthd

If saslauthd isn't running, start it with the correct parameters:

saslauthd -a shadow -m /var/run/saslauthd -n 5

2. Verify Socket Path Accessibility

The most common root cause is Postfix (running in chroot) being unable to access the saslauthd socket. Check these paths:

ls -la /var/run/saslauthd/
ls -la /var/spool/postfix/var/run/saslauthd/

Create the necessary directory structure if missing:

mkdir -p /var/spool/postfix/var/run/saslauthd
chown postfix:sasl /var/spool/postfix/var/run/saslauthd
mount --bind /var/run/saslauthd /var/spool/postfix/var/run/saslauthd

3. Update Postfix Configuration

Modify your /etc/postfix/sasl/smtpd.conf:

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
saslauthd_path: /var/spool/postfix/var/run/saslauthd/mux
log_level: 3

Enable verbose logging in saslauthd:

saslauthd -d -a shadow -m /var/run/saslauthd

Check authentication attempts in real-time:

tail -f /var/log/auth.log
  1. Ensure saslauthd is running with correct parameters
  2. Verify socket path exists in Postfix chroot environment
  3. Confirm proper permissions on all directories
  4. Check that SELinux/AppArmor isn't blocking access
  5. Restart both saslauthd and Postfix after changes

After applying these changes, test authentication again:

telnet localhost 25
EHLO example.com
AUTH PLAIN AHRlc3R1c2VyAHRlc3RwYXNzd29yZA==

When setting up SMTP authentication in Postfix, you might encounter the frustrating SASL error where Postfix can't locate the saslauthd socket. The critical error message appears as:

warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory

Interestingly, testsaslauthd works fine but Postfix fails to authenticate users, indicating a path or permission issue rather than a complete SASL setup failure.

First verify these essential components:

# Check saslauthd status
systemctl status saslauthd

# Verify socket path
ls -la /var/run/saslauthd/mux

# Test SASL directly
testsaslauthd -u username -p password

Many Postfix installations run in a chroot jail. If your master.cf shows entries like this:

smtp      inet  n       -       y       -       -       smtpd

The 'y' indicates chroot is active. You'll need to mirror the saslauthd socket path inside the chroot:

mkdir -p /var/spool/postfix/var/run/saslauthd
mount --bind /var/run/saslauthd /var/spool/postfix/var/run/saslauthd

Edit /etc/default/saslauthd with these key settings:

START=yes
MECHANISMS="shadow"
OPTIONS="-c -m /var/run/saslauthd"

Then restart saslauthd:

systemctl restart saslauthd

Your /etc/postfix/sasl/smtpd.conf should contain:

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
saslauthd_path: /var/run/saslauthd/mux
log_level: 3

And in main.cf add:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

Enable verbose logging in saslauthd:

saslauthd -a shadow -d

Check the mail logs in real-time:

tail -f /var/log/mail.log

Verify SASL capabilities in Postfix:

telnet localhost 25
EHLO example.com

Look for AUTH capabilities in the response.

If you're still facing issues, consider:

# Change authentication method
pwcheck_method: auxprop
auxprop_plugin: sasldb

# Or use PAM directly
pwcheck_method: pam

Remember to create appropriate sasldb entries if changing methods:

saslpasswd2 -c -u example.com username