Я пытался отправить письмо с помощью mail()
функции php, но это как-то не удалось, жалуясь, что требуется настоящее доменное имя. В почтовом журнале наблюдается следующее:
sendmail 4984 r25984: from = apache, size = 273, class = 0, nrcpts = 1, msgid = <201.r25@localhost.localdomain>, relay = apache @ localhost
sendmail 4985 r25985: ruleset = 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), задержка = 00: 00:01, xdelay = 00: 00: 00, mailer = relay, pri = 30273, relay = [127.0.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
включен. Что еще мне нужно сделать, чтобы доставить почту?
источник
sendmail.mc
, изменили строкиlocalhost.localdomain
иlocalhost
что-то значимое и скомпилировали файл mc вsendmail.cf
?dnl
перед ними.mail()
? И,sendmail.mc
это не правильный файл конфигурации, этот файл должен быть скомпилирован вsendmail.cf
использованиеm4
.Ответы:
Я думаю, что я только что решил это. У меня есть следующее в / etc / hosts :
Мне нужно разместить myserver.com перед строкой,
localhost.localdomain
чтобы sendmail подумал, что использует реальный домен для отправки электронной почты.источник
/etc/hosts
(с "s"), кроме этого: хороший ответ!Вы должны настроить в своих скриптах заголовки вашего письма
From: sender@domain.com
.источник
В вашем
sendmail.mc
добавлении:Перекомпилируйте
sendmail.cf
, перезапустите sendmail, и вы должны быть в порядкеисточник
В моем случае в Ubuntu 16.04 для экземпляра AWS необходимо было добавить
/etc/mail/sendmail.mc
:в строке перед
MAILER_DEFINITIONS
строкой в конце файла И добавьте ту же строку в конец/etc/mail/submit.mc
. Затем введитеsudo su
права доступа root и скомпилируйте для настройки:... тогда
exit
sudo. Наконец,sudo service sendmail restart
для перезапуска sendmail, и оттуда электронные письма появлялись как отправленные с доменного имени. Ни одна из других команд FEATURE или MASQUERADE не требовалась, ни запись в/etc/hosts
файле.источник