발신자 주소에 실제 도메인 이름을 구성하는 방법 : to=external@server.com, ctladdr

PHP mail()기능을 사용하여 이메일을 보내려고했지만 실제 도메인 이름이 필요하다는 불만이 있습니다. 메일 로그에서 다음이 관찰됩니다.

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 =, 릴레이 = 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, 메일러 = 릴레이, pri = 30273, 릴레이 = [127.0.0.1] [127.0.0.1], dsn = 5.6.0, stat = 데이터 형식 오류
sendmail 4984 r25984 : r25984 : DSN : 데이터 형식 오류

cron은 logrotate에 문제가있을 때마다 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 메일 기능의 주소에서 헤더가 이미 설정되었습니다. 또한 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

내가 필요한 것은 sendmail 이 실제 도메인을 사용하여 이메일을 보내는 것으로 생각 localhost.localdomain하도록 myserver.com을 회선 앞에 배치 하는 것입니다.


답변

스크립트에서 이메일 헤더를 구성해야 From: sender@domain.com합니다.


답변

당신의 sendmail.mc추가 :

LOCAL_CONFIG
Djmyserver.com

sendmail.cf다시 컴파일 하고 sendmail을 다시 시작하면 괜찮을 것입니다.


답변

필자의 경우 AWS 인스턴스의 Ubuntu 16.04에서 다음을 추가해야했습니다 /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

그런 다음 exitsudo. 마지막으로 sudo service sendmail restartsendmail을 다시 시작하면 도메인 이름에서 보낸 이메일이 나타납니다. 다른 FEATURE 또는 MASQUERADE 명령이나 /etc/hosts파일 의 항목이 필요하지 않았습니다 .