User Tools

Site Tools


networking:linux:ssmtp

SSMTP

See also Postfix Authenticated Smarthost (Does the same thing without requiring the EPEL repo.)

http://www.linux.com/archive/feature/132006

http://www.squad17.org/node/39

SSMTP is a simple replacement for a full MTA such as Sendmail or Postfix.

  • if you already have Postfix installed (RHEL/CentOS), see the link above
  • no server daemons
  • no running processes
  • lightweight
  • flexible
  • easier than dealing with an MTA
  • be sure all you need is a simple outbound sendmail command replacement

Installation

Ubuntu

apt install ssmtp bsd-mailx

CentOS

See also Using the EPEL Repository

Install ssmtp:

yum install ssmtp --enablerepo=epel

On one older system, mdadm depended on sendmail, I had to do this first:

rpm -e --nodeps sendmail

From Address

In modern times, secure mail servers are very strict about who is authorized to send mail. You generally must use a valid sender e-mail 'from address' that matches the authentication credentials used.
Using FromLineOverride=YES will allow the sender to specify the 'from address' at the time of sending. FromLineOverride=NO will force the 'from address' to the root=validsender@domain.tld line in ssmtp.conf.

For sending system or 'root' mail, you will probably have to manipulate the 'from address' to get SSMTP to send mail through a secure mail server.

vi /etc/ssmtp/revaliases

root:validsender@domain.tld

Configuration

For SSL connections on SMTPS port 465:

vi /etc/ssmtp/ssmtp.conf

root=validsender@domain.tld      # will be the 'from address'
mailhub=mail.domain.tld:465      # to use SSL on port 465
RewriteDomain=domain.tld         # instead of the host name
#hostname=_HOSTNAME_
#FromLineOverride=YES            # allows setting 'from address' at runtime
UseTLS=YES                       # for SSL
AuthUser=smtpuser
AuthPass=smtppass
#Debug=YES                       # useful for troubleshooting

:!: If you want to use TLS connections on Submission port 587, you will need to add/change:

mailhub=mail.domain.tld:587
#UseTLS=YES
UseSTARTTLS=YES
#TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt   # Depends on configuration - Not needed on Ubuntu 18.04

:!: If you don't specify a hostname, SSMTP will query the local machine. Since we are authenticating, the hostname doesn't matter too much.

Test

:!: If desired, enable (un-comment) the debug line, then look in /var/log/maillog.

If desired, install the mail command:

yum install mailx

update-alternatives --config mta

Send a Test Message

echo test | mail -s "testing ssmtp" tester@yourdomain.com

Or with no mail command and no subject line:

echo test | ssmtp -v -f "from@domain.tld" -F "Full Name" tester@yourdomain.com

or

echo test | sendmail -v tester@yourdomain.com

tail -f /var/log/mailog

Another Test

cat << EOF >> /tmp/test.eml
From: Full Name <validsender@domain.tld>
To: Test User <tester@somedomain.tld>
Subject: For test only!


EOF

ssmtp -t < /tmp/test.eml

Troubleshooting

Debug=YES
tail -30 /var/log/mail.log

Change the Default MTA

On Centos:

alternatives --config mta
networking/linux/ssmtp.txt · Last modified: 2020/02/14 09:43 by gcooper