preview image
허원철의 개발 블로그

AWS - SES 사용 후기

2020-04-11

AWS SES 사용 후기이다.

AWS SES란?

Amazon Simple Email Service(SES)는 AWS에서 제공하는 클라우드 기반 이메일 발송 서비스이다.

사전 준비

계정 신청

인스턴스를 하나 할당받는 것처럼 SES를 사용하기 위한 신청을 해야 되는데, 정상적으로 신청이 되었다면 이 상태가 샌드박스 상태이다. 만약, 실서비스에서 사용하려면 샌드박스 상태를 벗어나야한다.

샌드박스 상태는 일일(200건), 초당(1건) 발송 제한이 걸려있고, 등록된 이메일에만 메일 전송이 가능하다.

문서

당연할 수 도 있겠지만, SES에 대한 가이드 문서를 꼭 읽어보고 진행하길 권한다. 이메일 도메인 지식이 없는 사람도 이메일 도메인 지식 습득할 수 있을 뿐만 아니라 SES 기능 숙지도할 수 있다.

사용방법

전송 API

SMTP 인터페이스 또는 AWS SDK, HTTP API형태로 제공한다.

※ AWS SDK를 사용한다면 이메일 템플릿을 저장해두고 사용하는 방법도 존재한다.

알림

메일은 수신거부, 반송 등의 알림을 받을 수 있다. 이를 받기 위한 수단(방식)으로는 AWS SNS 또는 별도의 email를 등록하여 받아볼 수 있다.

시뮬레이터

알림에 대한 후처리기를 빠르게 테스트하기 위해 시뮬레이터를 제공한다. 특정 메일으로 메일을 전송하면 각각의 시나리오를 테스트해볼 수 있다. 예를 들면, bounce@simulator.amazonses.com에 메일을 전송하면 반송 알림을 받을 수 있다.

주의 해야할 점

평판

평판이라는 개념이 존재하여, 평판 낮아지면 할당받은 일일/초당 발송 횟수가 낮아질 수 있고 나중에는 계정이 정지될 수 있다. 평판에 대한 관리가 지속적으로 되어야 하며, 이에 대한 대책을 강구해야 한다. 그렇다보니, 알림에 대한 후처리는 필수라고 볼 수 있다.

반송율, 수신거부율

평판은 반송율과 수신거부율로 인해 정해지는데 권장사항으로는 반송율는 5%미만, 수신거부율는 0.1%미만 을 유지할 수 있도록 해야 한다. 이를 포함해 모범 사례는 문서를 참고하면 좋다.

개발,운영하면서 얻는 팁

  • 실서비스로 가기까지 생각보다 실제 반송/수선거부 처리를 유도하기가 어려웠다. (방법이 잘 못된 것일 수도 있겟지만) 스팸처리, 자동응답 등등을 설정해도 정상적으로 메일이 전송되는 것으로 처리되었다. 그래서 실서비스 반영까지 시뮬레이터 테스트와 제한된 이메일을 저장해둘 별도의 테이블을 만들어 필터링이 잘되는지 정도의 테스트만 진행했었다.

  • Google Gmail경우, 반송/수선거부 데이터를 제공하지 않는다.

  • Yahoo 이메일에 대한 반송율이 꽤 높았다. (초반 데이터로만 봤을 때, 50%정도 되었다.) 확실하지는 않지만 2019년 3월쯤 관련 내용을 볼 수 있는데, 장기 미사용 유저에 대해 휴먼계정으로 전환되어 나타난 현상으로 추측된다. 이로 인해, 각종 포럼이나 stackoverflow에도 여러 질의응답이 오가는 것을 볼 수 있다. 그래서 우리가 할 수 있는 처리는 다른 이메일을 등록하도록 유도하거나 유효한 이메일인지, 반송율이 높은 이메일이 알 수 있는 별도 API를 사용하여 반송율을 낮춰야 할 것이다.

아쉬운 점

  • 평판이 계산되는 날짜 범위 기준이 명확하지 않다. AWS 콘솔 > SES > 평판 대시보드에서 반송율, 수신거부율을 볼 수 있는데, 기준 날짜도 다르고 언제 기준이 바뀌는지도 알 수가 없다.
  • 매번 콘솔에 들어가서 보자니 귀차니즘이 생겨서 반송율, 수신거부율을 알기 위한 API를 찾아봤지만 없었다. 그나마 2주간에 발송건 수, 반송건 수, 수신거부건 수를 알수 있는 데이터가 있어서 이를 가공하여 주기적으로 슬랙으로 알림을 전송하고 있다.

Alt slack message