1

I'm testing remote smtp login on a server and keep getting 535 5.7.8 Error: authentication failed: authentication failure errors in the syslog and mail.log. Postfix is configured to use system user names and passwords.

I generated a user name and password with perl -MMIME::Base64 -e 'print encode_base64("username");' and perl -MMIME::Base64 -e 'print encode_base64("password");'

I am logging into the server with openssl s_client -starttls smtp -connect email.example.com:587 and using the auth login to input the user name and password.

I've turned on dovecot debugging but not seeing much in logs other than the authentication failure message.

Postfix main.cf:

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
#smtpd_sasl_type = dovecot
#smtpd_sasl_auth_enable = yes
myhostname = email.example.org
mydomain = example.com
myorigin = example.com
home_mailbox = Maildir/
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, email.example.com, ip-172-30-0-39.ec2.internal, localhost.ec2.internal, localhost, $mydomain, localhost.$mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

dovecot:

auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_verbose = yes
mail_location = maildir:~/Maildir
mail_privileged_group = mail
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 {
  driver = pam
}
protocols = " imap"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0666
  }
}
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  driver = passwd
}

service auth {
  # auth_socket_path points to this userdb socket by default. It's typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Users that have
  # full permissions to this socket are able to get a list of all usernames and
  # get the results of everyone's userdb lookups.
  #
  # The default 0666 mode allows anyone to connect to the socket, but the
  # userdb lookups will succeed only if the userdb returns an "uid" field that
  # matches the caller process's UID. Also if caller's uid or gid matches the
  # socket's uid or gid the lookup succeeds. Anything else causes a failure.
  #
  # To give the caller full permissions to lookup all users, set the mode to
  # something else than 0666 and Dovecot lets the kernel enforce the
  # permissions (e.g. 0777 allows everyone full permissions).
  unix_listener auth-userdb {
    mode = 0666
    #user =
    #group =
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

service auth-worker {
  # Auth worker process is run as root by default, so that it can access
  # /etc/shadow. If this isn't necessary, the user should be changed to
  # $default_internal_user.
  #user = root
}

service dict {
  # If dict proxy is used, mail processes should have access to its socket.
  # For example: mode=0660, group=vmail and global mail_access_groups=vmail
  unix_listener dict {
    #mode = 0600
    #user =
    #group =
  }
}
1
  • I can log in with imap remotely without issue. It's just smtp giving me the problem. I'll post more of config when I get a chance. Thanks.
    – StevieD
    Sep 28, 2020 at 19:45

1 Answer 1

1

OK, I was able to get authentication working by adding the following lines to the postfix main.cf config file:

 smtpd_sasl_path = private/auth
 smtpd_sasl_type = dovecot
 smtpd_sasl_auth_enable = yes
2
  • 1
    Note that by adding it to main.cf unprefixed you are offering sasl on all ports - you might wish to tune smtpd_sasl_tls_security_options & smtpd_sasl_security_options to prevent accepting plain passwords via unencrypted connections.
    – anx
    Sep 29, 2020 at 23:27
  • Thanks for the tip. Yeah, I will be going back through these settings to tighten things up as much as possible for sure. Goal for now is to just establish a working baseline.
    – StevieD
    Sep 30, 2020 at 3:56

You must log in to answer this question.

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