Як налаштувати справжнє доменне ім’я для адреси відправника


10

Я спробував надіслати електронний лист за допомогою 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], відхилити = 553 5.5.4 ... Реальне доменне ім’я, необхідне для адреси відправника
sendmail 4984 r25984: to=external@server.com, ctladdr = apache (48/48), затримка = 00: 00:01, xdelay = 00: 00: 00, mailer = реле, pri = 30273, реле = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = Помилка формату даних
sendmail 4984 r25984: r25984: DSN: Помилка формату даних

cron може надсилати електронне повідомлення на адресу external@server.com, коли є проблеми з логротатом. Я не впевнений, чому 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?
fboaventura

@fboaventura, ні, я прокоментував два рядки, видаливши dnlперед ними.
Переповнення питання

Чи можете ви додати відповідну частину свого скрипта для php, куди ви звертаєтесь mail()? І, sendmail.mcце не правильний файл конфігурації, цей файл повинен бути скомпільований з sendmail.cfвикористанням m4.
fboaventura

@fboaventura, дякую, я знаю, що стосовно вимоги до компіляції я можу зараз працювати. Дивіться мою відповідь нижче. Дякуємо за допомогу :)
Питання Переповнення

Відповіді:


10

Я думаю, що я щойно це вирішив. У / 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щоб sendmail подумав, що він використовує реальний домен для надсилання електронної пошти.


3
Ви можете безперечно прийняти свою власну відповідь, це було рішенням ... Як сторонне позначення, це, як правило, /etc/hosts(з "s"), крім іншого: хороша відповідь!
Левіт


1

У вашому sendmail.mcоних:

LOCAL_CONFIG
Djmyserver.com

Перекомпілюйте sendmail.cf, перезавантажте sendmail, і вам повинно бути в порядку


1

У моєму випадку для Ubuntu 16.04 для екземпляра AWS потрібно було додати /etc/mail/sendmail.mc:

define(`confDOMAIN_NAME', `mydomainname.com')dnl

у рядку перед MAILER_DEFINITIONSрядком до кінця файлу І додайте той самий рядок до кінця /etc/mail/submit.mc. Потім введіть sudo suкореневі дозволи та компілюйте для налаштування з:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

... тоді exitсудо. Нарешті, sudo service sendmail restartдля перезавантаження sendmail, а звідси й електронні листи з’являлися як надіслані з доменного імені. Жодна з інших команд FEATURE або MASQUERADE не потрібна, а також запис у /etc/hostsфайл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.