발신자 주소에 실제 도메인 이름을 구성하는 방법


10

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가 활성화되어 있는지 확인했습니다. 우편물을 배달하려면 어떻게해야합니까?


당신은 편집 sendmail.mc, 라인 변경 localhost.localdomainlocalhost의미있는과에 엠씨 파일을 컴파일 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

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


3
당신은 자신의 해답이 해결책이라는 것을 분명히 받아 들일 수 있습니다 /etc/hosts.
레위


1

당신의 sendmail.mc추가 :

LOCAL_CONFIG
Djmyserver.com

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


1

필자의 경우 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파일 의 항목이 필요하지 않았습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.