AWS SES 서비스 이용하기

JIPA
7 min readFeb 6, 2022

--

이 포스팅에서는 AWS SES 서비스를 이용해서 메일을 발송하는 구성을 살펴보도록 하겠습니다.

참고로, SES 서비스는 처음 이용한다면 Sandbox Mode 로 시작하게되고 이 경우 E-mail 을 발송하는데 일부 제약 사항이 있습니다. 이러한 제약사항을 해제하고 자유로운 E-mail 발송을 원한다면 아래와 같이 Account Dashboard 화면에서 “Request production access” 버튼을 클릭하여 Support Team 을 통해 Sandbox Mode 를 해제하여야 합니다.

저는 굳이 Production Access 는 필요하지 않아서 Sandbox Mode 에서 구성 및 테스트를 진행하겠습니다.

E-mail 발송을 위한 SES 설정은 아래와 같이 몇 가지 단계만 진행하면 아주 간단하게 마무리할 수 있습니다.

  1. Configuration Set 생성
    : Verified Identity 에서 사용할 Configuration Set 을 생성합니다. Configuration Set 에는 발송 시 발송자 IP 와 같은 몇 가지 옵션 설정을 포함하고 있습니다.

2. 새로운 Verified Identity 생성
: Verified Identity 를 생성하는 방법은 Domain 을 이용하는 방법과 E-mail 주소를 이용한 방법이 있습니다. E-mail Identity 는 발송된 E-mail 을 통해 확인하는 간단하게 생성할 수 있으며 Domain Identity 는 DKIM(DomainKeys Identified Mail) 이라는 방법을 통해 생성할 수 있습니다. 저는 제가 Route53 을 통해 호스팅하고 있는 Domain(cloudguardians.net) 을 이용하여 생성해보도록 하겠습니다.

아래와 같이 Identity Type 을 Domain 으로 선택한 후 Default Configuration Set 을 이전 과정에서 생성한 Configuration Set 으로 선택합니다.

저는 Route 53 을 통해 Domain 을 호스팅하고 있으므로 “Easy DKIM” 을 선택하고 아래와 같이 옵션을 적용하였습니다.

Easy DKIM 을 선택하여 Domain Identity 를 생성하게 되면 Domain 인증을 위한 CNAME Record 가 해당 도메인의 Hosted Zone 에 자동으로 등록되기 때문에 관리자의 입장에서는 Domain 인증을 위한 별도의 작업이 필요하지 않습니다.

정상적으로 Domain Identity 생성이 완료된 후 Route 53 의 Hosted Zone 의 정보를 확인해보면 아래와 같이 3개의 Domain 인증을 위한 새로운 CNAME Record 가 생성되어 있는 것을 확인할 수 있습니다.

CNAME Record 를 통한 Domain 인증이 정상적으로 성공하면 아래와 같이 Identity 의 상태가 Verified 로 변경된 것을 확인할 수 있습니다.

Domain Identity 가 정상적으로 등록되었으니 이제 E-mail 을 발송할 준비가 되었는데요. 서두에 언급드린 것처럼 기본적으로 SES 는 Sandbox Mode 로 시작합니다. 그리고 이 Mode 에서는 제약사항이 있다고 말씀드렸는데요. 대표적으로 Sandbox Mode 에서는 메일 발송 시 수신자의 E-mail 주소도 Verified Identities 리스트에 등록되어 있어야 합니다. 즉, 확인된 E-mail 주소에 한해서만 메일 발송이 가능합니다.

Verified E-mail Identity 아래와 같이 생성하도록 하겠습니다.

등록한 E-mail 을 확인하면 아래와 같이 E-mail 주소 인증을 위한 메일이 수신되어 있는 것을 확인할 수 있습니다. 본문 중간에 위치한 링크를 클릭하여 인증하도록 합니다.

아래와 같이 정상적으로 E-mail 인증이 완료되었습니다.

Verified Identities 화면을 보면 아래와 같이 추가한 E-mail 의 상태가 Verified 인 것을 확인할 수 있습니다.

이제 메일을 발송할 Domain 과 메일을 수신할 E-mail 주소를 모두 등록하였으니 메일 발송이 정상적으로 이뤄지는지 확인해보도록 하겠습니다.

저는 간단하게 AWS CLI 를 아래와 같이 입력하여 메일을 발송해 보도록 하겠습니다.

E-mail 수신자와 E-mail 메시지 본문은 JSON 파일로 저장되어 사용되었습니다.

aws ses send-email --from mail@cloudguardians.net --destination file://destination.json --message file://message.json

destination.json 내용

{
"ToAddresses": ["mail@example.com"],
"CcAddresses": [],
"BccAddresses": []
}

message.json 내용

{
"Subject": {
"Data": "Test email using the AWS CLI",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "This is the message body in text format.",
"Charset": "UTF-8"
},
"Html": {
"Data": "This message body contains HTML formatting. It can, for example, contain links like this one: <a class=\"ulink\" href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide\" target=\"_blank\">Amazon SES Developer Guide</a>.",
"Charset": "UTF-8"
}
}
}

실행 화면

SES 를 통해 발송된 E-mail 이 정상적으로 수신되었는지 확인해보도록 하겠습니다.

아래와 같이 정상적으로 메일이 수신되었습니다

감사합니다.

--

--

JIPA
JIPA

Written by JIPA

Always Day 1. Security is job zero.

No responses yet