Проблема с доставкой писем, отправленных с помощью функции php
mail()
на почтовые ящики локального домена, когда у домена указаны внешние MX записи, например, Яндекс.
В примере с сайта mydomain.ru
отправляется письмо на ящик [email protected]
sendmail
пытается доставить письмо на локальный почтовый ящик, и возвращает ошибку:
Apr 14 11:48:24 mydomain sm-mta[1256]: v3E8mOKX001256: <user@mydomain.ru>... User unknown Apr 14 11:48:24 mydomain sendmail[1255]: v3E8mOSK001255: to=user@mydomain.ru, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=91914, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
Но, даже если такой пользователь и существует, почту он получает с другого сервера, в нашем случае с mail.yandex.ru
Входные данные:
root@mydomain:~# cat /etc/hostname mydomain.ru
root@mydomain:~# cat /etc/hosts 127.0.0.1 localhost 111.111.111.111 mydomain.ru mydomain
Добавляем в:
root@mydomain:~# mcedit /etc/mail/sendmail.mc
в конец файла (разные открывающиеся и закрывающиеся кавычки — так и нужно)
define(`MAIL_HUB',`mydomain.ru.')dnl define(`LOCAL_RELAY',`mydomain.ru.')dnl
затем
root@mydomain:~# cd /etc/mail/ root@mydomain:/etc/mail# make all reload root@mydomain:/etc/mail# make all -C /etc/mail root@mydomain:/etc/mail# reboot
На основе: http://promote-sites.ru/blog/server/mail-from-yandex-and-sendmail.html