피드로 돌아가기
Dev.toBackend
원문 읽기
AWS SES emails not reaching your business inbox?
AWS SES에서 이메일이 회사 메일 서버로 전달되지 않는 문제를 MAIL FROM 도메인의 A 레코드 부재 원인으로 파악하고 제거로 해결
AI 요약
Context
AWS SES를 사용하여 이메일을 전송하는 애플리케이션에서 Gmail로는 정상 도착하지만 회사 도메인 메일박스에는 도착하지 않는 문제가 발생했다. SES 대시보드에는 성공으로 표시되었으나 실제로는 회사 메일 게이트웨이에서 거부되고 있었다.
Technical Solution
- SPF 레코드 검토: 상위 도메인의 엄격한 SPF 정책("reject everything")에서 SES가 제외되어 있음을 확인하고 서브도메인에 "v=spf1 include:amazonses.com ~all" SPF 레코드 추가
- SNS 토픽 생성: SES의 send 및 delivery 이벤트를 SNS로 라우팅하여 "553 #5.1.8 Domain of sender address does not exist" 바운스 메시지 수신
- DNS 레코드 검증: dig 명령어로 MAIL FROM 도메인(mail.mydomain.com)의 MX, TXT, A 레코드를 조회하여 A 레코드 부재 확인
- MAIL FROM 도메인 제거: SES 설정에서 custom MAIL FROM 도메인을 제거하여 기본값인 amazonses.com으로 변경
Impact
SES 대시보드에서는 초기 SMTP 250 OK 응답을 성공으로 계산하지만 이후 게이트웨이의 도메인 검증 단계에서 거부되는 이메일이 존재했다. SNS 알림 활성화 이후 이 숨겨진 바운스를 식별할 수 있었다.
Key Takeaway
SES를 포함한 이메일 서비스에서 custom MAIL FROM 도메인을 사용할 경우 RFC 5321 준수를 위해 반드시 A 레코드를 보유해야 하며, 일부 엄격한 게이트웨이는 MX 레코드만으로는 도메인 존재 여부를 검증하지 않는다. 배송 알림(SNS/CloudWatch)을 항상 활성화하여 초기 수락 응답과 실제 전달 상태의 차이를 감지해야 한다.
실천 포인트
AWS SES를 사용하는 개발자는 custom MAIL FROM 도메인을 설정할 때 A 레코드 또는 AAAA 레코드를 필수적으로 구성하고, SNS 또는 CloudWatch를 통한 Bounce/Delivery 이벤트 알림을 반드시 활성화하여 SES 대시보드의 성공 표시가 실제 메일박스 도착을 의미하지 않을 수 있음을 인지해야 한다.