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


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.