How to send emails from server

This page show how to send emails from a server by connecting to an external SMTP server.

As a alternative, you can also check the complete guide on how to build an email server.

Prerequisite

You will need a SMTP server to send the email. The one of your regular email address will work perfectly.

Install

$ sudo apt install exim4-daemon-light bsd-mailx

Configure

Edit file /etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='satellite'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1; ::1'
dc_readhost='example.org'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.example.org::587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

The line dc_smarthost need to be updated with the name of port of the smtp server that you will use. Edit file /etc/exim4/passwd.client and add a line like

smtp.example.org:username:mYpa$$w0rd

Note: if smtp.example.org is a CNAME, you must use the destination of the CNAME in the passwd.client file.

$ host smtp.gmail.com
smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com.
gmail-smtp-msa.l.google.com has address 74.125.206.108
gmail-smtp-msa.l.google.com has address 74.125.206.109
gmail-smtp-msa.l.google.com has IPv6 address 2a00:1450:400c:c04::6d

here you see on the first line that smtp.gmail.com is a CNAME (alias) to gmail-smtp-msa.l.google.com. In that case you can put *.google.com in the password file. Finally, activate the new configuration using

$ sudo systemctl reload exim4.service

Test

$ echo "body" | mailx -s "subject" address@example.org

You should receive the email in your mailbox