Relay server messages to an external account with Postfix
Contents
Software
apt update apt upgrade apt install postfix sasl2-bin mailutils
Mail server credentials
We need to define the credentials that will be used to establish the connection with the smtp server.
Create a file called sasl_passwd in /etc/postfix that contains the credentials.
vi /etc/postfix/sasl_passwd [smtp.oamis.net]:587 account@example.com:8xxxxxx4
Hash the file
postmap hash:/etc/postfix/sasl_passwd
Check the hash file has been created
file /etc/postfix/sasl_passwd.db /etc/postfix/sasl_passwd.db: Berkeley DB (Hash, version 9, native byte-order)
Change header FROM
Using smtp we can only send mail (FROM field in email header) as the user we are connecting with.
vi /etc/postfix/sender_canonical /.+/ account@example.com
Hash the file
postmap hash:/etc/postfix/sender_canonical
Check the hash file has been created
file /etc/postfix/sender_canonical.db /etc/postfix/sender_canonical.db: Berkeley DB (Hash, version 9, native byte-order)
Configure postfix to be a relay
Edit /etc/postfix/main.cf and add/modify the following lines to our main.cf
cat /etc/postfix/main.cf | grep -v "^#" | grep -v "^$" smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no compatibility_level = 2 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 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = empcldgit01.reddog.microsoft.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = servername.example.com, $myhostname, servername, localhost.localdomain, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only inet_protocols = ipv4 relayhost = [smtp.oamis.net]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may sender_canonical_maps = regexp:/etc/postfix/sender_canonical smtp_use_tls = yes
Restart Postfix
systemctl restart postfix systemctl status postfix ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2018-09-11 11:57:29 EDT; 7s ago Process: 3686 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 3686 (code=exited, status=0/SUCCESS) Sep 11 11:57:29 empcldgit01 systemd[1]: Starting Postfix Mail Transport Agent... Sep 11 11:57:29 empcldgit01 systemd[1]: Started Postfix Mail Transport Agent.
Send a test message
mail -s "test message" myemail@example.com <<EOF > Hello > > EOF
Check the log file
tail /var/log/mail.log
Add aliases for local accounts
List aliases in file /etc/aliases
cat /etc/aliases # See man 5 aliases for format postmaster: root root: account@example.com
Compile new aliases file
newaliases
Reload postfix
systemctl restart postfix
References
- Configure Postfix to use Office365 SMTP Relay on Ubuntu 16.04
- How to change default root@ email address linux / postfix / centos?
Daniel Simao 19:15, 11 August 2019 (EDT)