PHP 스크립트를 실행하기 위해 하위 도메인의 인바운드 메일에 대해 메일 서버 설정

PHP 스크립트를 실행하기 위해 하위 도메인의 인바운드 메일에 대해 메일 서버 설정

저는 기본 도메인의 하위 도메인에 있는 특정 계정으로 이메일을 받을 수 있도록 회사 서버를 설정하려고 합니다. 즉:[이메일 보호됨]

수신 메일러는 일부 콘텐츠 처리를 처리하는 PHP 스크립트를 트리거해야 합니다.

Ubuntu Server 20.0.4를 실행 중이고 Postfix가 설치되어 있고 Dovecot이 설치되어 있고 택배를 이용해도 시도해 보았지만 그렇게 할 수 없었습니다.

나는 여기까지 왔다:

  • Linux 사용자를 생성하고 로컬 계정을 유효한 사서함으로 사용하도록 postfix를 구성했습니다.
  • subdomain.domain.com에서 수신 메일을 허용하도록 postfix를 구성했습니다.
  • Google 도메인에서 올바르게 라우팅하기 위해 하위 도메인에 대한 A 및 MX 레코드를 추가했습니다.
  • 하위 도메인에 SSL을 구성했습니다(해당 하위 도메인으로 이동할 때 ssllabs 및 apache를 통해 제대로 작동하는지 확인했습니다).
  • PHP 스크립트를 트리거하기 위해 /etc/postfix/master.cf에 몇 가지 추가 구성을 추가했습니다(현재는 테스트 스크립트/자리 표시자임).
    smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=myhook:dummy
    ...
    # PHP SCRIPT HOOK
        myhook unix - n n - - pipe
          flags=F user=www-data argv=/path/to/script/MailParser.php ${sender} ${size} ${recipient}   

MailParser.php 스크립트는 "수신 메일을 성공적으로 받았습니다 timestamp" 라는 로그 파일에 대한 쓰기를 트리거합니다.

이 설정으로 smtper.net을 통해 메일을 보내면

스크립트를 성공적으로 실행하여 로그에 기록하고 사용자 시스템 메일에서 smtper.net의 "test" 메시지를 볼 수 있으므로 모든 것이 괜찮아 보입니다.

그러나 내 Gmail 계정과 같은 일반 이메일 클라이언트를 통해 메일을 보내려고 하면 다음 오류와 함께 반송할 수 없다는 메시지가 나타납니다.

550 5.1.1 연결하려는 이메일 계정이 존재하지 않습니다. 수신자의 이메일 주소에 오타나 불필요한 공백이 있는지 다시 확인해 보세요. 자세히 알아보기https://support.google.com/mail/?p=NoSuchUserf16si1842833plj.1 - gsmtp

나는이 시점에서 막혔다.

답변1

@anx가 지적한 것처럼 문제는 MX 레코드에 있는 것으로 밝혀졌습니다. 또한 도메인의 SSL 인증서가 완전히 구성되지 않아 문제가 발생했습니다. 그렇지 않으면 내 로컬 서버 구성이 올바르게 설정되었습니다.

관련 정보