Postfix Relay – but local mail delivery for root

emailemail-serverpostfixsmtp

I set up postifx as mail relay with a external smtp server configured. Overall this works fine. But my goal is, that all mails will forwarded to the external smtp server – except root.

/etc/postfix/main.cf:

#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = [smtp.relay.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 127.0.0.1
smtp_sasl_auth_enable = yes  
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd  
smtp_sasl_security_options = 
smtpd_use_tls=yes
smtp_tls_security_level = encrypt

With this config, postfix tried to send root mails to root@example.org via the SMTP server. Local delivery for root would be my preferred solution here.

Can anyone help?

Thanks!

Best Answer

Since postfix setup offers a wide variety of settings following are some notes that might help as they enabled local mail delivery on a Ubuntu 16 system with postfix installed (paths may differ on different systems):

Postfix will not deliver to root, but you can redirect all mails for root to another localhost user acount, e.g. the postfix user if such exists, but any other user will do. For that edit

/etc/aliases

to, e.g.:

postmaster: <USER1>
root: <USER1>
<USER2>: <USER1>
...

then issue the command

sudo newaliases


Procmail must be installed, this can be done e.g. by the command

sudo apt install procmail

(One can abort shall procmail be already installed.)


Some settings in

/etc/postfix/main.cf

may be

myhostname = <HOSTNAME>@<LOCALNET>
mydestination = <ALL HOSTNAMES ASSIGNED TO 127.0.0.1, MAYBE ::1, IN /etc/hosts, DELIMITED BY SPACE>
local_transport = local
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# following all possible arguments, strip as you like
notify_classes = bounce, 2bounce, delay, policy, protocol, resource, software

Modification will be effective after issuing the command

sudo service postfix restart


It helps a lot to read the log files

/var/log/mail.log, /var/log/mail.err

More helpful reading:

http://www.postfix.org/BASIC_CONFIGURATION_README.html

http://www.postfix.org/LOCAL_RECIPIENT_README.html

http://www.postfix.org/postconf.5.html#local_transport

http://www.postfix.org/aliases.5.html

Related Topic