To use an external SMTP for all system e-mails, you have to install these:
sudo apt-get install msmtp msmtp-mta
Where msmtp-mta transform the external reference in the sendmail command usable by any application using sendmail. In this way you haven’t to install and configure Postfix since you’ll rely on an external SMTP service.
Create the config file for msmtp
This is an example based on the popular Gmail by Google:
# Example for a system wide configuration file # /etc/msmtprc # A system wide configuration file is optional. # If it exists, it usually defines a default account. # This allows msmtp to be used like /usr/sbin/sendmail. account default aliases /etc/aliases # The SMTP smarthost. # host mailhub.oursite.example # Construct envelope-from addresses of the form "email@example.com". #auto_from on #maildomain oursite.example # Construct envelope-from addresses of the form "firstname.lastname@example.org". # this fix the error: msmtp: account default from /etc/msmtprc-php: envelope-from address is missing ### auto_from on # Use TLS. tls on auth on tls_trust_file /etc/ssl/certs/ca-certificates.crt # Syslog logging with facility LOG_MAIL instead of the default LOG_USER. syslog LOG_MAIL host smtp.gmail.com port 587 from email@example.com user firstname.lastname@example.org password GMAIL-AUTH-PASSWORD
Replace these with the real data from your e-mail account.
In this example, the email@example.com in GMail is the user that created the Gmail app password. He has to have the firstname.lastname@example.org configured as sender address alias in GMail.
To match local users with sender address, create the aliases file:
nano /etc/aliases # See man 5 aliases for format # postmaster: root postmaster: email@example.com root: firstname.lastname@example.org default: email@example.com
If you’ve any process sending emails using a specific username, add to this list with the right email to use. Any occurrence of the original address will be translated to the right address.
Type this to test the new configuration:
sendmail firstname.lastname@example.org WRITE YOUR TEXT Ctrl+D
If you need to use the mail command, install mailutils without installing postfix:
sudo apt-get install --no-install-recommends mailutils
Then you can use something like:
echo -e “Print a variable here $MYVAR.\n\n– \nSign here“ | mail -s “Type your subject here“ $EMAIL
Here some variables are added as you can use them in a custom script.
Using msmtp command directly
If you already use the base mail command and you don’t want to replace it with mail, you can use this:
(echo -e “Subject: Type your subject here“; echo; echo -e “Print a variable here $MYVAR.\n\n– \nSign here“) | msmtp -a default $EMAIL
Now any application using sendmail will actually use your external SMTP service. Use a mail server supporting TLS to avoid transmitting clear text filled with system information.
Tested on Ubuntu Linux 18