현재 참여하는 프로젝트에서 기존 메일인증은 Gmail api를 사용하여 수신자와 메세지를 토큰과 함께 전송하는 방식이었습니다.
이러한 방식은 발신자가 드러나므로 회신을 통한 피드백 수령에는 용의하나 인증 메일 전송 실패등의 이유로 반환되는 메일이 많아 인증은 no-reply 발신자로 설정할 필요성이 있었습니다.
때문에 기존 AWS 서비스와 연동하여 비교적 간편하게 사용할 수 있는 (EC2에서 사용할 경우 62,000건 까지 무료!) Amazon Simple Email Service(SES)를 사용하여 이러한 문제점을 해결해보려고 합니다.
1. 이메일 등록
우선 ses 콘솔에서 발신을 위해 사용할 이메일을 등록해봅니다.
입력한 주소로 도착한 메일을 확인해 링크를 눌러주면 인증이 완료됩니다.
2. 샌드박스 해제
ses에서는 등록된 이메일이 악용되는것을 막기 위해 기본적으로 샌드박스 정책을 갖고 있습니다.
이러한 이유로 하루에 200개, 1초당 1건의 제한이 걸리게 되는데 실서비스 사용을 위해서는 이를 해제해주어야 합니다.
좌측 Sending Statistics 메뉴에 들어가 Request a Sending Limit Increase 버튼을 클릭합니다.
aws에 보낼 요청 페이지가 나오게 되는데 적절한 값을 입력하고 마지막의 Case description은 요청의 목적을 간단하게 써주시면 됩니다.
제 경우에는
To send verification mail for site sign up (회원 가입을 위한 인증 메일 전송을 위해)
라고 작성하였습니다.
3. 도메인 등록
SES에서는 소유자인지 확인된 도메인에 한정해 발신자를 변경할 수 있습니다. (공식문서)
Domains 메뉴로 들어가 Verify a New Domain 버튼을 클릭하여 현재 소유한 도메인을 입력해 줍니다.
그러면 이러한 창이 뜨는데 도메인 소유를 확인하기 위해 해당 레코드 셋을 등록해달라는 내용입니다.
제 경우에는 Route53을 사용중이므로 Use Route53을 클릭하고 Create Record Sets를 눌러 바로 등록을 완료하였습니다.
Send a Test Email 버튼을 눌러 도메인과 발신자가 제대로 바꿔서 전송되는지 확인해보겠습니다.
이메일 폼을 채워 Send를 눌러줍니다.
만약 이러한 에러가 발생할 경우 샌드박스 해제가 안돼 등록된 메일로만 송신이 가능한 상황일 수 있습니다.
수신자 To를 방금 등록했던 메일주소로 바꿔서 보내보시면 됩니다.
제대로 진행되었다면 이처럼 입력한 도메인과 발신자로 메일이 도착한것을 확인 할 수 있습니다.
4. 엑세스 키를 생성하여 SDK로 발송하기
그 다음으론 프로젝트에서 sdk를 사용하기 위해 자격 증명 콘솔창으로 이동합니다. (click)
새 엑세스 키 만들기 - 키 파일 다운로드 버튼을 눌러 키 파일을 받아줍니다.
cat 명령어를 통해 받은 파일을 열어보면
>cat rootkey.csv
AWSAccessKeyId=.....
AWSSecretKey=.....
다음과 같이 AccessKey와 SecretKey가 포함된것을 확인 할 수 있습니다.
이를 AWS SDK가 식별가능하도록 credentials 파일로 만들어주겠습니다.
터미널 창에 vim ~/.aws/credentials를 입력하여 파일을 생성하고
[default]
AWSAccessKeyId=.....
AWSSecretKey=.....
이러한 형태로 값을 입력해 준 뒤 저장하고 나옵니다.
이것으로 콘솔창에서 필요한 설정은 전부 마쳤습니다.
이후로는 프로젝트에 AWS SDK 종속성을 추가하고 이곳을 참조하여 테스트 코드를 작성해주시면 됩니다.