Amazon Simple Email Service(SES)는 aws의 이메일 서비스이다.
이 글은 SES 관련해서 이것저것 정리한 글이다.
메시지 전송이 계정의 일일 최대치를 초과하면 Amazon SES 에 대한 호출이 거부된다.
💡 Amazon SES 에서 메시지를 수락하는 속도는 계정의 최대 전송 속도보다 느릴 수 있다.
→ [AWS Support 센터](https://console.aws.amazon.com/support/home#/)에서 [create case]로 할당량 증가를 요청할 수 있음.
https://docs.aws.amazon.com/ko_kr/ses/latest/DeveloperGuide/manage-sending-quotas.html
도용 및 침해를 방지하기 위해서 맨 처음 구성된 제약이 있는 환경을 말한다.
실제 운영 서비스에 SES를 본격적으로 적용하려면 SANDBOX 해제가 필요하다.
→ 정상적인 메일 발송을 하기 위해서는 SANDBOX해제 필요(참고)24시간 내 회신된다.
참고된 링크처럼 SANDBOX만 해제를 할 수도 있지만 일일전송량, 초당 전송량 limit을 수정하면서 SANDBOX해제를 동시에 요청 할 수도 있다.
추가로, support에서 description작성시 요구한 질문에 대한 답변이 없으면 요청이 거부된다!
AWS는 계정의 반송률을 5% 미만으로 유지할 것을 권장한다. 계정의 반송률이 10%를 넘으면 해당 계정의 이메일 전송 기능을 AWS에서 일시 중지 시킬 수 있다. 또한 불만 제기 비율이 0.1% 이상인 경우에도 이메일 발송을 일시 중지 시킬 수 있다.
반송의 원인은 여러가지가 있을 수 있다.
따라서 반송의 원인이 되는 이메일 주소들을 관리를 하는 것이 필요하다. SNS(Amazon Simple Notification Service)를 사용해서 반송되는 이메일에 대한 정보를 받고 관리할 수 있다.
SNS로 반송되는 이메일에 대한 관리를 아래처럼 할 수 있다.
AWS SES에서는 반송 메일에 대한 시뮬레이션을 할 수 있다. 반송 메일에 대한 SNS등을 만들고 시뮬레이션을 해볼 수 있다.(참고)
→ 메일박스 시뮬레이터 주소로 테스트 할 경우 반송률, 불만제기 비율에는 영향없음.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ses-high-bounce-rate/
Amazon SES를 통해 프로덕션 이메일을 보내려면 아래와같은 방법이 있다.
1. SMTP(Simple Mail Transfer Protocol) 인터페이스
2. Amazon SES API(SDK를 사용하는 방법이 여기에 해당됨.)
Amazon SES SMTP 인터페이스를 사용하여 이메일을 전송하면 SMTP 지원 프로그래밍 언어, 이메일 서버 또는 애플리케이션을 사용할 수 있다고 하는데 이 부분은 잘 모르겠다. 기존에 이메일 서버를 가지고 있는 사용자의 경우에는 SMTP를 구성해서 메일을 보낼 수 있다는 걸까?
SMTP credentials 발급이 필요하며, JAVA로 개발시 JavaMail api 1.5 이상이 요구된다.
Amazon SES SMTP 인터페이스를 사용하여 이메일 전송
아래와 같은 방법들로 SES API를 호출할 수 있다.
직접 HTTPS 요청 만들기
가장 고급 방법이며, 요청의 인증 및 서명을 수동으로 처리한 다음 요청을 수동으로 구성해야 합니다. Amazon SES API에 대한 자세한 내용은 API v2 참조의 환영 페이지를 참조하십시오.
AWS SDK 사용 (제일 대중적인듯)
AWS SDK를 사용하면 Amazon SES를 포함하여 여러 AWS 서비스의 API에 쉽게 액세스할 수 있습니다. SDK를 사용할 경우 인증, 요청 서명, 재시도 로직, 오류 처리 및 기타 하위 수준 기능이 알아서 처리되므로 고객을 만족시킬 애플리케이션 구축에 집중할 수 있습니다.
명령줄 인터페이스 사용
AWS Command Line Interface은(는) Amazon SES용 명령줄 도구입니다. 또한 PowerShell 환경에서 스크립팅하는 사용자를 위해 AWS Tools for Windows PowerShell도 제공합니다.
서비스에서 이메일을 보낼때 각자 환경에 맞는 SES SDK를 사용해서 이메일을 발송해야한다.
JAVA의 경우 SDK에서 제공하는 메일 발송 class에는 2가지가 있다.
트래픽이 많은 경우 AmazonSimpleEmailServiceAsync을 사용해 메일을 발송하는 것이 대응하기에 더 좋을 것 같다.
사용자 지정 MAIL FROM 도메인을 사용하는 이유
https://docs.aws.amazon.com/ko_kr/ses/latest/DeveloperGuide/mail-from.html
기본적으로 Amazon SES 를 통해 보내는 메시지는amazonses.com
MAIL FROM 도메인으로. 기본 MAIL FROM 도메인은 이메일을 전송한 애플리케이션 (이 경우) 과 일치하므로 Sender Policy Framework (SPF) 인증은 이 메시지를 성공적으로 검증합니다.
대부분의 발신자에게 이 인증 수준이면 충분하지만, 일부 발신자의 경우 MAIL FROM 도메인을 소유하고 있는 도메인으로 설정하는 것을 선호합니다. 사용자 지정 MAIL FROM 도메인을 설정하면 이메일이 Domain-based Message Authentication, Reporting and Conformance(DMARC)를 준수할 수 있습니다. DMARC를 통해 발신자의 도메인은 해당 도메인에서 발송된 이메일이 하나 이상의 인증 시스템에 의해 보호되고 있음을 나타낼 수 있습니다.
DMARC 검증은 Sender Policy Framework(SPF) 및 DomainKeys Identified Mail(DKIM)을 사용하는 두 가지 방법을 이용해 수행할 수 있습니다. SPF 검증을 위해서는 From 주소의 도메인이 MAIL FROM 도메인과 일치해야 하므로 SPF를 통해 DMARC를 준수하는 유일한 방법은 사용자 지정 MAIL FROM을 사용하는 것입니다. 사용자의 고유한 MAIL FROM 도메인을 사용하면 SPF, DKIM 또는 두 가지를 모두 사용하여 유연하게 DMARC 검증을 수행할 수 있습니다.
전체 도메인을 확인하면 해당 도메인의 모든 이메일 주소를 확인하게 되므로 해당 도메인의 이메일 주소를 개별적으로 확인할 필요가 없다. 예를 들어, 도메인 example.com을 확인하면 user1@example.com, user2@example.com을 비롯하여 example.com을 사용하는 모든 주소에서 이메일을 보낼 수 있다.
도메인 인증 : TXT Record
DKIM 인증 : CNAM Record
Email 수신 : MX Record (필요에 따라)
https://docs.aws.amazon.com/ko_kr/ses/latest/dg/creating-identities.html#just-verify-domain-proc
https://docs.aws.amazon.com/ko_kr/ses/latest/dg/send-email-authentication-dkim-easy.html
base64 사용X. CDN 등을 사용해서 외부 링크로 src 를 넣어주어야 한다.
SVG 도 외부 링크로 넣어봤는데 처리가 잘 안되었다. 되도록 비트맵 형식의 확장자만 지원하는듯 하다(ex : PNG).
네이버는 필터링으로 height, line-height 를 없에버린다.
a.button 형식의 css 셀렉터를 썼는데, 네이버 자체 스타일 때문에 겹쳐서 제대로 안 나올 수 있음.
overflow 는 모바일에서 안나올 수 있음. 되도록 지양.
이벤트 게시를 위한 CloudWatch 이벤트 대상 설정
공감하며 읽었습니다. 좋은 글 감사드립니다.