paulgorman.org/technical

SMTPS

Assume we have a mail server/smarthost running Postfix. We also have Debian boxes with exim4 that want to send mail through our smarthost, perhaps administrative alerts. In some settings, it’s a problem to send out to port 25 (smtp).

Port 587 is explicitly for authenticated clients to securely submit mail to the Mail Submission Agent.

On the smarthost, in /etc/postfix/master.cf:

submission inet n       -       -       -       -       smtpd
    -o smtpd_enforce_tls=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject

And in /etc/postfix/sasl/smtpd.conf specify only the following mechanisms:

mech_list: PLAIN LOGIN

And make sure the port is open:

~ $  cat /etc/iptables/rules.v4 | grep 587
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT

On our sending Debian boxes, make sure exim4 is installed and configured, and that the hostname is set correctly:

~ $  hostname -f
~ $  sudo apt-get install exim4
~ $  sudo dpkg-reconfigure exim4-config

Follow the example to supply an appropriate server, login name, and password:

~ $  sudo cat /etc/exim4/passwd.client
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password

The user as which exim runs (i.e. “Debian-exim”) must be able to read this file.

Add to /etc/aliases:

root: alert@example.com

and run:

~ #  newaliases

Test like:

~ $  openssl s_client -quiet -starttls smtp -connect mail.example.com:587

Also:

~ $  exim -bp
~ $  exim -qff