문제

이것은 내가 고치기 쉽다고 확신하지만 하루 종일 머리를 두드리고 있습니다.

고객을위한 새로운 웹 사이트를 개발하고 있습니다. 웹 사이트는 (이 예입니다) 웹 사이트.com에 있습니다. 방문자의 요청을 requests@website.com으로 이메일로 보내기 위해 PHP 양식 스크립트가 있습니다.

다른 도메인의 스테이징 서버에서 이것을 코딩했을 때 모두 잘 작동했습니다. 웹 사이트.com으로 옮겼을 때 메일 메시지가 도착하지 않았습니다. 웹 서버는 주요 ISP가있는 가상 호스트에 있습니다.

그 이후로 배운 내용은 다음과 같습니다. 내 고객의 메일 서버는 사무실의 물리적으로 상자에 Microsoft Exchange입니다. 외부 세계에있는 누군가가 requests@website.com으로 이메일을 보내면 메일이 도착합니다. 하지만 웹 서버가 동일한 이메일 주소로 보내면 매번 실패합니다. 이것은 ~ 아니다 PHP 문제. 웹 서버에 쉘을 확보하고 Sendmail과 Unix Mail 응용 프로그램으로 이것을 테스트했습니다. 또한 쉘에서 다양한 이메일 계정을 이메일로 보내서 테스트했습니다. 예를 들어 웹 사이트.com 도메인의 아무도 아무도 이메일로 보내 주실 수 있습니다.

요컨대, 웹 사이트에 로그인하면 requests@website.com, user@website.com, other_user@website.com으로 메일을 보내십시오. 다른 모든 주소는 잘 작동합니다. 내가 발견 한 것은 삭제 된 이메일이받은 편지함에 앉아있는 웹 서버의 "Catchall"계정으로 라우팅된다는 것입니다.

웹 사이트.com에서 MX 조회를했습니다. MX 레코드는 Mailsec.website.com을 가리 킵니다. Telnet을 Mailsec.website.com Port 25로 보내고 SMTP 서버를 볼 수 있습니다.

requests@website.com으로 메일을 보낼 때 Website.com이 MX 조회를하지 않는 것으로 보입니다. 내 이론은 도메인을 로컬로 인식하고, "요청"사용자 계정이이를 전달할 수 없다는 것을보고 메일을 Catchall 계정으로 삭제한다는 것입니다. 내가 원하는 것은 Sendmail이 MX 조회를 수행하고 Exchange 서버로 메시지를 보내도록 강요하는 것입니다. 나는 여기서 위트가 끝났다. 이 작업을 수행하는 방법을 알 수 없습니다.

그 문제에 대해, 나는 여기서 기지에서 벗어날 수 있으며 이것을 완전히 잘못 진단했을 수도 있습니다. 인터넷 메일과 MX는 항상 나에게 흑인 예술처럼 보였고,이 질문에서 나의 무지가 확실히 보여지고 있습니다.

도움이 되었습니까?

해결책

문제는 Sendmail (귀하의 프로세스)이 로컬 Sendmail 데몬과 대화하고 있다는 것입니다. 로컬 Sendmail Daemon은 Website.com이기 때문에 이메일을 전달하는 방법을 알아야한다고 생각합니다. 불행히도, To Field의 실제 주소는 웹 서버에 존재하지 않으므로 "Catchall"메일 박스에 덤프합니다. ISP와 대화하고 Sendmail 구성을 업데이트하여 메일이 주소가 주소가 ...@webit.com이 로컬로 처리하는 대신 메일 교환기로 향할 수 있도록해야합니다.

다른 팁

기본적으로 SendMail은 로컬 이메일 도메인의 목록입니다. sendmail.mc 파일에서 다음 줄을 사용하여 꺼질 수 있습니다.

define(`confDONT_PROBE_INTERFACES',`True')

변경 전후에 로컬 이메일 도메인으로 루트 목록으로.

echo '$=w' | sendmail -Am -bt

자동 추측을 비활성화 한 후 (일반적으로)/etc/mail/local-host-names 파일에 "수동으로"추가 해야하는 도메인을 볼 수 있습니다.

Sendmail 질문의 경우 PS News : Comp.Mail.SendMail을 사용할 수 있습니다.

TVANFOSSON에는 기본적으로이를 가지고 있지만 임시 해결 방법으로 스크립트를 변경하여 'user@mailsec.website.com'을 메일로 변경하면 메일이 실제 메일 서버로 전달됩니다.

포함 할 tsm.cf 파일 (/etc/mail/또는 유사한) 편집

FEATURE(relay_entire_domain) 

도메인 ()와 mailer () 라인 사이. 파일을 편집하므로 보안을 향상시킬 수도 있습니다.

define(`confPRIVACY_FLAGS',``noexpn,novrfy'')

TSM.CF 파일을 변경 한 후 (또는 어느 sendmail config 파일), sendmail 프로세스를 다시 시작하거나 걸음으로 깎습니다.

도메인의 WWW 및 MX 서버가 동일한 프로세스 공간에 존재하지 않기 때문에 이러한 변경이 필요합니다. 이 기능은 Sendmail을 외부 전달 메커니즘을 사용하여 도메인의 메시지를 처리하도록 트리거합니다.

TSM.CF 파일의 편집 된 부분은 다음과 유사하게 보일 것입니다.

DOMAIN(website.com)dnl
FEATURE(relay_entire_domain)dnl
define(`confPRIVACY_FLAGS',``noexpn,novrfy'')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

저에게 효과가있는 것은 웹 사이트를 호스팅하는 웹 서버에 MX 레코드를 추가하는 것이 었습니다. 이는 원래 도메인 이름 서버에 할당 된 호스트를 가리 킵니다. 여기에 제시된 경우에는 Mailsec.website.com을 가리키는 MX 레코드가 있습니다.

나는 신입이다. 확장하고 싶었습니다 RB_CWI 답변이지만 댓글을 달 수 없습니다. 그의 해결책은 훌륭하게 작동했습니다.

당신은 ~ 아니다 도메인 ()을 정의하는 데 필요합니다.

그러나 내 시스템에서는 Sendmail-CF 패키지를 설치해야했습니다.

아래 지침은 수행되었습니다 Centos 6.5

먼저 Sendmail-CF를 설치하십시오

sudo yum install sendmail-cf

그런 다음 Senmail.mc를 편집하십시오

sudo vi /etc/mail/sendmail.mc

파일 하단에서 기능 추가 기능 (Relay_entire_domain) DNL이므로 다음과 같습니다.

...
FEATURE(relay_entire_domain)dnl
MAILER(smtp)dnl        # right above this line
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

파일을 저장하고 sendmail을 다시 시작하십시오.

sudo service sendmail restart

같은 문제에 갇혔습니다. MX는 외부 교환 서버를 가리키지 만 PHP/Sendmail 은이 레코드를 조회하지 않았습니다. 대신이 웹 서버에 WordPress에 의해 게시 된 메일은 캐치 볼 메일 박스에 떨어졌습니다.

솔루션은 웹 서버의 모든 사서함을 삭제하는 것이 었습니다. 이제 Sendmail은 MX에 관심이 있었고 모든 메일은 Exchange에 갔다.

그러나 Exchange는 WebSpace의 메일 서버를 나가는 메일의 Smarthost로 사용합니다. 이를위한 솔루션으로 메일 서버에 액세스하기 위해 FTP 자격 증명을 사용할 수있었습니다. 이 솔루션 이이 지구의 모든 공급자에게 작동하지는 않지만, 우리의 경우 (All-inkl.com)는 해결되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top