I was experiencing a problem sending mail to an address at my own domain. I wanted my PHP app to send notification emails to firstname.lastname@example.org but they kept bouncing with “status=bounced (unknown user: “user”)”.
Accessing the log:
sudo tail /var/log/mail.log -n 200
This will return the last 200 lines of the log.
May 24 12:28:04 example postfix/pickup: DC48FC0927: uid=33 from= May 24 12:28:04 example postfix/cleanup: DC48FC0927: message-id=<email@example.com> May 24 12:28:04 example postfix/qmgr: DC48FC0927: from=<firstname.lastname@example.org>, size=9136, nrcpt=1 (queue active) May 24 12:28:04 example postfix/local: DC48FC0927: to=<email@example.com>, relay=local, delay=0.06, delays=0.03/0.01/0/0.01, dsn=5.1.1, status=bounced (unknown user: "user") May 24 12:28:04 example postfix/cleanup: E7413C0928: message-id=<20170524122804.E7413C0928@example.com> May 24 12:28:04 example postfix/qmgr: E7413C0928: from=<>, size=10993, nrcpt=1 (queue active) May 24 12:28:04 example postfix/bounce: DC48FC0927: sender non-delivery notification: E7413C0928 May 24 12:28:04 example postfix/qmgr: DC48FC0927: removed May 24 12:28:04 example postfix/local: E7413C0928: to=<firstname.lastname@example.org>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox) May 24 12:28:04 example postfix/qmgr: E7413C0928: removed May 24 12:28:04 example postfix/pickup: EBC48C0927: uid=33 from= May 24 12:28:04 example postfix/cleanup: EBC48C0927: message-id=<email@example.com> May 24 12:28:04 example postfix/qmgr: EBC48C0927: from=<firstname.lastname@example.org>, size=8898, nrcpt=1 (queue active)
I’m not sure if others have experienced this issue, but if your email server is hosted on another domain and you use postfix and SMTP to send local emails from a PHP web form for example, then you need to setup the following in your postfix configuration.
Open your Postfix config file.
sudo nano /etc/postfix/main.cf
Scroll down and look for the entries for
mydestination. Change them so they look like this.
. . . smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = localhost alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain . . .
This forces postfix to always use the external email server, even in a case the email recipient is under your local domain name, like email@example.com.
Lastly, let’s restart Postfix.
sudo systemctl restart postfix
You can send a test email to see if it works.
echo "Test Email message body" | mail -s "Email test subject" firstname.lastname@example.org
Let me know if this helped. Follow me on Twitter, Facebook and YouTube, or 🍊 buy me a smoothie.
p.s. I increased my AdSense revenue by 200% using AI 🤖. Read my Ezoic review to find out how.
Thanks, this seems to have worked for me partially. Microsoft 365 shows it as a junk e-mail, but it least got sent which is better than not sending at all!
It works!!! The simplest solution is always the best.
it doesn’t work for me 🙁
Thanks for making it simple! I went through very complicated configurations and couldn’t see what was wrong with mine until I saw this one.
Dude, you are awesome. Your articles have saved my butt more than a few times, thanks!!
If I’m right this happends only when hostname is same as domain. And it should not be because then FQDN breaks. So, if your domain is example.com and you want get something informatic in the beginning of SSH-commandline you should use somethinglike example as hostname.
Works like a charm, thanks a lot .
Quick, accurate, simply great. Thank you very much.
Thanks man. Works great
Like every other suggestion I can find. it doesnt work. The only way I can find to send to my own domain or relay to my own domain is to change the domain name in the hosts file. Then everything works
HI! It didn’t work for me. But I have a question, what happens if I keep mydestination header blank ?
Thanks a lot. Easy to understand, saved a lot time.