Я пытался отправить электронное письмо с помощью php mail()
функция, но почему-то не удалось, жалуясь, что требуется настоящее доменное имя. В почтовом журнале наблюдается следующее:
sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, relay = apache @ localhost
sendmail 4985 r25985: набор правил = check_mail, arg1 =, relay = mydomain.com [127.0.0.1], reject = 553 5.5.4 ... Для адреса отправителя требуется настоящее доменное имя
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), delay = 00: 00: 01, xdelay = 00: 00: 00, mailer = relay, pri = 30273, relay = [127.0.0.1]. 0.1] [127.0.0.1], dsn = 5.6.0, stat = Ошибка формата данных
sendmail 4984 r25984: r25984: DSN: ошибка формата данных
cron может отправлять электронную почту на external@server.com всякий раз, когда возникает проблема с logrotate. Я не уверен, почему php не может этого сделать. Я попытался внести изменения в конфигурацию по умолчанию в sendmail.mc следующим образом:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Но, похоже, это не имеет никакого эффекта. Заголовок с адреса в функции php mail уже установлен. Я также убедился, что SELinux httpd_can_sendmail
включен. Что еще мне нужно сделать, чтобы получить почту?
Думаю, я только что решил это. У меня в / etc / hosts:
127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com
Мне нужно разместить myserver.com перед строкой с localhost.localdomain
так что Отправить почту будет думать, что он использует реальный домен для отправки электронной почты.
Вы должны настроить в своих сценариях заголовки электронной почты, чтобы From: sender@domain.com
.
В моем случае в Ubuntu 16.04 на экземпляре AWS нужно было добавить /etc/mail/sendmail.mc
:
define(`confDOMAIN_NAME', `mydomainname.com')dnl
в строке перед MAILER_DEFINITIONS
строку в конец файла И добавьте ту же строку в конец /etc/mail/submit.mc
. Затем введите sudo su
для root-прав и скомпилировать в config с:
m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf
...затем exit
судо. В заключение, sudo service sendmail restart
для перезапуска sendmail, и оттуда письма появлялись как отправленные с доменного имени. Ни одна из других команд FEATURE или MASQUERADE не требовалась, ни запись в /etc/hosts
файл.
В твоем sendmail.mc
Добавить:
LOCAL_CONFIG
Djmyserver.com
Перекомпилировать sendmail.cf
, перезапустите sendmail и все будет в порядке