Dev/AWS

Amazon SES 이메일 수신 불가 문제 해결법 (Suppression List Removal)

자취방생활 2021. 4. 28. 12:30

안녕하세요,

 

이전 포스트에서 Amazon SES와 EC2를 이용하여 이메일 전달 시스템을 구축해봤습니다.

wkcnlqkd202.tistory.com/2

 

Amazon SES와 Sendmail을 이용한 메일 전달 시스템 구축하기 [1/2]

안녕하세요, Amazon Simple Email Service(SES)와 AWS EC2를 이용하여 Gmail에서 메일을 주고 받을 수 있도록 시스템을 구축해보도록 하겠습니다. 제가 구축했었던 당시의 상황을 설명드리자면... AWS EC2를 통

wkcnlqkd202.tistory.com

이메일을 전송할 경우, Amazon SES를 이용하여 이메일을 전송하게 됩니다.

 

이때, 받는 사람의 주소를 찾을 수 없는 경우 Suppression list에 등록이 됩니다.

 

 

 

 

메일 보내기 실패

이후 해당 주소를 등록하고 이메일을 보낼경우,

Suppression list에 있기 때문에 위와 같이 메일을 전송할 수 없다고 이메일이 도착합니다.

 

위 사진(예시)의 경우 'test_send@example.com'가 'test_receive@example.com'으로 메일을 보냈지만,

전송에 실패했을때 받은 이메일입니다.

 

Suppresion list에 있는 이메일 리스트를 제거하기 위해서는 'AWS CLI'를 이용하면 됩니다.

aws.amazon.com/ko/cli/

 

AWS 명령줄 인터페이스

aws-shell은 명령줄 셸 프로그램으로서, AWS 명령줄 인터페이스를 사용하는 새로운 사용자와 고급 사용자 모두에게 도움이 되는 편의 기능 및 생산성 기능을 제공합니다. 주요 기능은 다음과 같습

aws.amazon.com

 

1. 설치

 

AWS CLI는 AWS의 여러 서비스들을 관리하기 위한 Command-line Interface이기 때문에

꼭 EC2에 설치하지 않아도 됩니다.

 

저의 경우 주로 사용하는 운영체제가 Windows 10 64bit이기 때문에,

이에 맞는 설치 프로그램을 아래 링크를 통해 Windows용 설치 프로그램을 다운받아서 설치했습니다.

docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2.html

 

AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

 

$ aws --version
aws-cli/2.x.x Python/3.x.x Windows/10 exe/AMD64 prompt/off

설치를 진행하고 각 운영체제에 맞는 Console을 띄워 해당 명령어를 입력하여 정상적으로 설치 되었는지 확인해봅니다.
(Windows의 경우 'Power Shell'이나 'CMD' 사용)

 

 

 


 

 

 

 

2. AWS CLI용 IAM 계정 생성

 

정상적으로 설치가 완료되었으면, 이제 AWS CLI를 통해 AWS에 접속해야겠죠?

AWS CLI용 계정을 생성합니다.

아래의 링크를 클릭하여 IAM Management Console에 접속합니다.

console.aws.amazon.com/iam/home#/home

 

https://console.aws.amazon.com/iam/home#/home

 

console.aws.amazon.com

 

 

 

IAM 사용자 추가

액세스 관리 → 사용자 → 사용자 추가를 클릭합니다.

 

 

 

 

IAM 사용자 추가 - 세부 설정

사용자 이름을 입력하고, AWS 액세스 유형을 선택합니다

 

저는 이름을 'awscli_acccess'으로 진행해보겠습니다.

그리고 액세스 유형은 AWS CLI로 접속할 것이기 때문에 '프로그래밍 방식 액세스'를 선택하고 다음으로 넘어갑니다.

 

 

 

 

IAM 사용자 추가 - 권한 설정

이번엔 계정에 어떤 권한을 부여할 것인지 설정하는 차례입니다.

일단 '그룹 생성' 버튼을 클릭합니다.

 

 

 

 

IAM 사용자 추가 - 그룹 생성

특정 보안 권한을 가지고 있는 그룹을 생성합니다

 

저의 경우 'awscli_group'이라는 이름으로 진행해보겠습니다.

'정책 필터'에 'SES'를 입력하면 'AmazonSESFullAccess'라는 항목이 있습니다.

Amazon SES에 대한 모든 권한을 부여하는 항목입니다.

체크하고 '그룹 생성'버튼을 클릭합니다.

 

(정책을 'AdministratorAccess'으로 설정하면 SES뿐만 아니라

AWS의 모든 서비스들에 접속할 수 있는 권한을 얻을 수 있습니다.

 

하지만 이 경우 계정/비밀번호가 노출될 경우 매우 위험하기 때문에

SES에만 모든 권한을 부여하도록 하겠습니다.)

 

완료가 되었으면 다음으로 진행합니다.

('태그'는 생략하고 넘어갑니다.)

 

 

 

 

IAM 사용자 추가 완료

사용자 추가가 완료되면 '액세스 키 ID'와 '비밀 액세스 키'를 저장합니다.

('.csv 다운로드'를 활용하면 훨씬 편합니다.)

 

 

 

 


 

 

 

 

3. AWS CLI 설정

 

$ aws configure
AWS Access Key ID [None]: 액세스 키 ID 입력
AWS Secret Access Key [None]: 비밀 액세스 키 입력
Default region name [None]: AWS 지역 입력
Default output format [None]: 빈칸으로 유지

IAM 계정을 생성 했으면 다시 운영체제의 Console로 돌아와 'aws configure'를 입력합니다.

 

그러면 방금 생성한 IAM 계정의 ID와 비밀 키를 입력하고,

AWS 지역을 입력합니다. (한국(서울)의 경우 'ap-northeast-2')

'Default output format'은 그냥 엔터를 눌러서 넘어갑니다.

 

 

 

 

4. SES Suppression list - 조회/삭제

$ aws sesv2 list-suppressed-destinations
{
	"SuppressedDestinationSummaries": [
    	{
            "EmailAddress": "test_receive@example.com",
            "Reason": "BOUNCE",
            "LastUpdateTime": "2021-04-27T00:00:00.000000+09:00"
        }
    ]
}

Configure 작업이 끝나면, Suppression list를 조회해봅시다.

역시나 해당 이메일 주소가 리스트에 있었습니다.

 

위의 이메일 주소를 Suppression list에서 제거해 봅시다.

 

 

 

 

$ aws delete-suppressed-destination `
>> --email-address test_receive@example.com

윈도우 기준, 위의 명령어를 입력하여 이메일을 Suppression list에서 제거합니다.

(MacOS나 Linux의 경우 ' ` ' 문자 대신 ' | '를 입력합니다.)

 

그리고 다시 Suppression list를 조회하면 해당 항목이 지워지고,

정상적으로 이메일을 수신할 수 있습니다.

 

 

 


 

 

 

이번에는 Amazon SES의 Suppression list에 등록된 이메일을 제거하는 방법에 대해 알아보았습니다.

 

긴 글 읽어 주셔서 감사합니다 :)