I have postfix to send mail using gmail. I have aliases set but things aren't working right
if I send mail to someone at gmail.com it works
crontab with MAILTO=root sends mail via gmail relay to account
if I send mail to using mail -s "Test subject" <textfile, it works and sends via gmail relay (I get email at )
but if I send mail using mail -s "Test subject" root <textfile it tries to get gmail to send mail via gmail relay to root@mail even though alias is set to
hostname is mail
mailname is cmforester.com (/etc/mailname)
/etc/aliases:
postmaster: root: www-data: clint: main.cf:
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no inet_interfaces = all inet_protocols = all mailbox_size_limit = 0 mydestination = $myhostname, localhost mydomain = cmforester.com myhostname = mail.cmforester.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = $mydomain readme_directory = no recipient_delimiter = + relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 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 smtpd_use_tls = yes 22 Answers
As suggested by NerdOfLinux I ran new aliases but it couldn't resolve "mail" so I looked in my hosts file and added "mail" next to "localhost" and that fixed it. I previously ran newaliases but then made some changes to the main.cf file and my hostname/domainname which I believe made my aliases become problematic
Editing:
/etc/postfix/main.cf
and changing:
myorigin = $mydomain to:
myorigin = $myhostname resolved the problem for me in that it:
- Prevented the unexpected conversion of recipient
roottoroot@$mydomain; and - Got my
/etc/aliasesforwarding working to the remote address I need
I won't pretend to be sure but my assumption is the following:
When a recipient without @somedomain.com is used ie. root, then postfix conceptually automatically appends @[myorigin parameter value]
if [myorigin parameter value] is identified as the local host, which $myhostname would be, then postfix knows it is destined for a local user and thus references /etc/aliases for the mapping.
Following the above logic, using $mydomain doesn't match the local host and is therefore assumed to be a remote address ie. root@$mydomain and so /etc/aliases gets ignored (as it is only applied to local server users)