Linux 환경(CentOS)에서 백엔드-프론트엔드 문의 양식에 대한 SMTP 인증을 설정하는 방법은 무엇입니까?

Linux 환경(CentOS)에서 백엔드-프론트엔드 문의 양식에 대한 SMTP 인증을 설정하는 방법은 무엇입니까?

CentOS-Bash 공유 호스팅 환경에서 저는 mail()PHP 기능이 포함된 간단한 백엔드-프론트엔드 문의 양식이 포함된 웹사이트를 호스팅하고 있습니다.

테스트 이메일은 내 Gmail 계정에 도달할 수 있지만 도착하는 경우(매우 드물지만) 시간이 오래 걸리며 일반적으로 한 시간 이상 걸립니다.


호스팅 회사의 인프라 개발자로부터 다음과 같은 이유를 알게 되었습니다.

  • 전송된 최종 이메일에는 [email protected]유효한 DKIM, 유효한 SPF 및 SMTP 인증이 없습니다.

인프라 개발자는 이 문제를 해결하려면 호스팅 환경에서 이메일 계정을 열고 거기로 이메일을 전달하여 실제로 유효한 DKIM, 유효한 SPF 및 SMTP 인증을 갖도록 제안했습니다.


하지만 여전히 이메일을 내 Gmail 계정으로 전달하고 싶다고 가정해 보겠습니다.
Linux 환경(CentOS)에서 백엔드-프런트엔드 문의 양식에 대한 SMTP 인증을 설정하는 방법은 무엇입니까?
이는 공유 호스팅 환경에서도 가능합니다(DKIM 및 SPF는 어떻습니까?)...

노트

  • 위 질문에 추가된 또 다른 질문은 이 세션의 기반이 된 간단한 테스트 형식보다 약간 더 복잡한 두 번째 형식으로 발생합니다
    ."From" => $email 헤더 이메일 주소내 Gmail 주소이므로 최종 발송 주소가 [email protected]다음과 같이 잘못 해석되었습니다.이메일 위조("스푸핑"), 위의 서버 불일치 외에도 다시 발생합니다.

답변1

PHP는 mail()기본 운영 체제의 메일 전송 에이전트(간단히 MTA, Sendmail, Postfix, Exim, OpenSMTPD...와 같은 이메일 서비스 소프트웨어)에 의존합니다. 귀하의 경우 웹 호스트의 MTA는 본질적으로 "공장 기본 설정"에서 실행되는 것으로 보입니다. 이는 호스팅 공급자가 MTA가 실제로 이러한 방식으로 메일을 보내는 데 사용될 것으로 기대하지 않음을 의미합니다.

PHP 양식 처리기를 사용하도록 변경하는 것이 좋습니다.PHP 메일러아니면 아주 기본적인 것 대신에 그런 것 mail(). 이렇게 하면 호스트의 기본 설정에 의존하지 않고 애플리케이션 내에서 메일 서버를 지정할 수 있습니다.

이를 통해 SMTP 인증(및 이에 수반되는 필수 암호화)과 같은 기능을 사용할 수도 있습니다. 웹 호스트가 여러 사용자 간에 공유되는 경우 루트 액세스 권한이 없을 가능성이 높습니다. 이 경우 PHPMailer와 같은 것을 사용하는 것이 유일한 접근 방식일 수 있습니다.할 수 있는애플리케이션에서 사용할 메일 서버 설정을 선택합니다.

메일을 전 세계로 보내려는 경우 DKIM과 SPF가 적합합니다. 하나의 계정으로 메일을 전달하는 것만으로는 충분하지 않습니다. 포트 587 또는 465(TLS 적용 방법에 따라 다름)를 사용하여 SMTP 서버에 연결하도록 애플리케이션을 구성하면 메일을 보낼 때 애플리케이션이 본질적으로 메일 클라이언트처럼 작동하므로 SMTP 서버 관리자가 DKIM 및 SPF에 대해 걱정할 필요가 없습니다. 그러나 서버 관리자는 서버의 DKIM 및 SPF의 이점을 누리기 전에 귀하(/귀하의 애플리케이션)에게 인증을 요구할 것이며, 인증 자격 증명을 암호화되지 않은 상태로 서버에 전달하고 싶지 않기 때문에 암호화가 필요합니다.

그럼에도 불구하고 웹 양식을 통해 이메일을 보낼 때 개인 Gmail 계정을 사용하지 않는 것이 좋습니다. 웹 호스트가 해킹되어 이메일 액세스 자격 증명이 도난당하는 경우를 대비해 별도의 계정을 만드세요.

관련 정보