

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon SES로 이메일 수신
<a name="receiving-email"></a>

Amazon SES를 사용하여 이메일 전송을 관리하는 것 외에도 하나 이상의 도메인을 대신하여 이메일을 수신하도록 SES를 구성할 수도 있습니다. 이메일 수신자인 SES는 다른 메일 서버와의 통신, 스팸 및 바이러스 검사, 신뢰할 수 없는 출처의 메일([Spamhaus](https://www.spamhaus.org/) 또는 SES의 차단 목록에 있는 주소) 차단, 도메인 내의 수신자에 대한 메일 수락 등의 기본 메일 수신 작업을 처리합니다.

수신한 이메일의 처리 범위는 지정한 사용자 지정 지침에 따라 결정됩니다. 이 지침은 두 가지 형태로 제공됩니다.
+ **수신 규칙***(받는 사람 기반 제어)*은 수신 이메일에 대한 세분화된 제어 기능을 제공합니다. 수신 규칙은 수신 메일을 Amazon S3 버킷으로 전송하거나, Amazon SNS 주제에 게시하거나, Amazon WorkMail 로 전송하거나, 메시지가 특정 이메일 주소로 전송되면 자동으로 반송 메시지를 전송하는 작업과 같이 고급 처리를 수행할 수 있습니다.
+ **IP 주소 필터***(IP 기반 제어)*는 광범위한 제어 수준을 제공하며 설치가 간단합니다. 이러한 필터를 사용하면 특정 IP 주소 또는 IP 주소 범위의 모든 메시지를 명시적으로 차단하거나 허용할 수 있습니다.

*수신 규칙* 또는 *IP 주소 필터*를 사용한 이메일 수신, 설정 및 구현에 대한 학습을 시작하려면 먼저 [이메일 수신 개념 및 사용 사례](receiving-email-concepts.md)를 읽어서 작동 방식 및 사용할 수 있는 다양한 방법에 대한 개요를 파악하세요. 다음으로 [이메일 수신 설정하기](receiving-email-setting-up.md) 섹션은 이메일 수신 설정 필수 조건을 설명합니다. 그런 다음 [이메일 수신 콘솔 연습](receiving-email-walkthroughs.md) 섹션은 *수신 규칙* 및 *IP 주소 필터* 구성에 사용되는 마법사에 대해 설명합니다.

**참고**  
이메일 수신은 SES가 이메일 수신을 지원하는 AWS 리전에 계정이 있는 경우에만 사용할 수 있습니다. AWS 일반 참조의 [이메일 수신 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints) 테이블에는 SES가 이메일 수신을 지원하는 모든 AWS 리전이 나열되어 있습니다.

**Topics**
+ [Amazon SES 이메일 수신 개념 및 사용 사례](receiving-email-concepts.md)
+ [Amazon SES 이메일 수신 설정](receiving-email-setting-up.md)
+ [Amazon SES 이메일 수신 콘솔 연습](receiving-email-walkthroughs.md)
+ [Amazon SES 이메일 수신의 지표 보기](receiving-email-metrics.md)

# Amazon SES 이메일 수신 개념 및 사용 사례
<a name="receiving-email-concepts"></a>

Amazon SES를 이메일 수신기로 사용하는 경우 서비스에 메일로 수행할 작업을 알려야 합니다. 기본 방법인 수신 규칙을 사용하면 *수신자 기반 제어*를 통해 수신자를 기반으로 수행할 작업 세트를 지정함으로써 이메일 수신을 세밀하게 제어할 수 있습니다. 다른 방법인 IP 주소 필터는 광범위한 *IP 기반 제어*를 사용하여 원래 IP 주소 또는 주소 범위에 따라 메일을 차단하거나 허용할 수 있습니다.

Amazon SES가 수신된 이메일을 처리하는 방법에 대한 개요와 규칙 및 필터를 설정할 때 이메일을 수신, 필터링, 처리하는 방법을 고려하는 데 도움이 되는 사용 사례에서 두 가지 방법에 대해 모두 설명합니다.

**Topics**
+ [수신 규칙을 사용한 수신자 기반 제어](#receiving-email-concepts-rules)
+ [IP 주소 필터를 사용한 IP 기반 제어](#receiving-email-concepts-ip-filters)
+ [이메일 수신 프로세스](#receiving-email-process)
+ [Amazon SES 이메일 수신에 대한 사용 사례 및 제한](#receiving-email-consider-use-case)
+ [이메일 수신 인증 및 맬웨어 검사](#receiving-email-auth-and-scan)

## 수신 규칙을 사용한 수신자 기반 제어
<a name="receiving-email-concepts-rules"></a>

수신 메일을 제어하는 기본 방법은 도메인, 하위 도메인 또는 이메일 주소(확인된 도메인 ID 중 하나에 속해야 함)를 포함하는 확인된 ID에 대해 순서가 지정된 작업 목록을 통해 메일이 처리되는 방식을 지정하는 것입니다. 이러한 작업은 *규칙 세트* 내에서 생성하는 *수신 규칙*에 정의되고 정렬됩니다.

옵션으로 발송된 메일을 받는 수신자가 조건에 지정된 수신자 자격 증명과 일치하는 경우에만 작업을 수행하도록 지정하는 방법으로 수신자 조건을 추가할 수도 있습니다. 예를 들어 *example.com*을 소유하는 경우, *user@example.com*에 대한 메일이 반송되도록 지정하고 *example.com* 및 해당 하위 도메인에 대한 다른 모든 메일이 전달되도록 지정할 수 있습니다.

또는, 수신자 조건을 추가하지 않으면 확인된 도메인에 속한 모든 이메일 주소, 도메인 및 하위 도메인 등 모든 항목에 작업이 적용됩니다. 수신 규칙에 적용할 수 있는 조치는 다음과 같습니다.
+ **헤더 추가 작업 - **수신 이메일에 헤더를 추가합니다. 이 작업은 보통 다른 작업과 연계해서 사용합니다.
+ **반송 응답 반환 작업 - **발신자에게 반송 응답을 돌려보내 이메일 수신을 거부하고 설정에 따라 Amazon SNS를 통해 사용자에게 알립니다.
+ ** AWS Lambda 함수 호출 작업 -** Lambda 함수를 통해 코드를 호출하고 선택적으로 Amazon SNS를 통해 알립니다.
+ **S3 버킷에 전송 작업 -** 메일을 Amazon S3 버킷으로 전송하고 설정에 따라 Amazon SNS를 통해 알립니다.
+ **Amazon SNS 주제에 게시 작업 - **Amazon SNS 주제에 전체 이메일을 게시합니다.
**참고**  
SNS 작업은 Amazon SNS 알림에 이메일 콘텐츠 사본을 첨부합니다. 여기에 언급된 다른 Amazon SNS 알림 옵션은 이메일 전송에 대한 알림만을 제공하며, 여기에는 이메일 내용 자체가 아니라 이메일에 대한 정보가 포함되어 있습니다.
+ **규칙 세트 중지 작업 - **해당 수신 규칙 세트의 평가를 중단하고, 설정에 따라 Amazon SNS를 통해 사용자에게 알립니다.
+ **Amazon WorkMail 통합 작업 - **Amazon WorkMail로 메일을 처리합니다. Amazon WorkMail이 설정을 처리하므로 일반적으로 이 작업을 직접 사용할 필요는 없습니다.

수신 규칙이 *규칙 세트*로 그룹화됩니다. 기존 규칙 세트가 없는 경우 수신 규칙 생성을 시작하기 전에 먼저 규칙 세트를 생성해야 합니다. AWS 계정에 대해 여러 규칙 세트를 정의할 수 있지만 한 번에 하나의 규칙 세트만 활성화됩니다. 다음 그림에서는 수신 규칙, 규칙 세트 및 작업이 서로 어떻게 관련되어 있는지 보여줍니다.

![\[인바운드 이메일 개요\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/inbound_overview_v2.png)


## IP 주소 필터를 사용한 IP 기반 제어
<a name="receiving-email-concepts-ip-filters"></a>

**IP 주소 필터**를 설정하여 메일 흐름을 제어할 수 있습니다. IP 주소 필터는 선택사항이며 특정 IP 주소 또는 특정 범위의 IP 주소에서 발신한 메일의 수락 또는 차단을 지정할 수 있게 합니다. IP 주소 필터에 *차단 목록*(수신 메일을 차단하려는 IP 주소) 및 *허용 목록*(항상 메일을 수락하려는 IP 주소)이 포함될 수 있습니다.

IP 주소 필터는 스팸을 차단하는 데 유용합니다. Amazon SES는 Spamhaus에 나열된 것을 포함하여 스팸을 보내는 것으로 알려진 IP 주소의 차단 목록을 자체적으로 유지합니다. 하지만 허용 목록에 추가하여 해당 IP 주소에서 메일을 받도록 선택할 수 있습니다. 차단된 IP 주소를 보여주는 로그가 없으므로 차단된 발신자가 관리자에게 관련 정보를 알려야 합니다. 또한 이를 통해 발신자는 자신의 IP 주소가 [Spamhaus](https://www.spamhaus.org/)와 같은 차단 목록에 있는지 확인하고 목록에서 제외하도록 요청할 수 있습니다. 이렇게 하면 IP 주소 필터를 유지 관리할 필요가 없으며 이메일 전송 가능성이 향상된다는 점에서 관리자와 발신자 모두에게 도움이 됩니다.

**참고**  
IP 주소 필터 구성과 관계없이 Amazon EC2는 허용 목록에 없는 한 포트 25(메일 전송)의 아웃바운드 트래픽을 차단합니다. 자세한 내용은 [AWS re:Post 문서](https://repost.aws/knowledge-center/ec2-port-25-throttle)를 참조하세요.
정해진 일부 IP 주소에서만 메일을 받고 싶다면 차단 목록에는 `0.0.0.0/0`를 입력하고, 허용 목록에는 신뢰하는 IP 주소를 입력하세요. 이 구성은 기본적으로 모든 IP 주소를 차단하고, 명시적으로 지정하는 IP 주소에서 발신하는 메일만 허용합니다.

## 이메일 수신 프로세스
<a name="receiving-email-process"></a>

Amazon SES가 도메인에 대한 이메일을 수신하면 다음과 같은 이벤트가 발생합니다.

1. Amazon SES는 먼저 발신자의 IP 주소를 확인합니다. Amazon SES는 다음과 같은 경우를 제외하고 메일이 이 단계를 통과하도록 허용합니다.
   + IP 주소가 차단 목록에 존재합니다.
   + IP 주소가 Amazon SES 차단 목록에 있지만 허용 목록에는 없습니다.

1. Amazon SES는 활성 규칙 세트를 검사하여 수신 규칙이 수신자 조건을 포함하고 있는지 확인합니다.
   + 수신자 조건이 있고 수신 이메일의 수신자 중 하나와 일치하는 경우 Amazon SES는 이메일을 수락합니다. 일치하는 항목이 없으면 Amazon SES는 이메일을 차단합니다.
   + 수신 규칙이 수신자 조건을 포함하지 않는 경우 Amazon SES는 메일을 수락합니다. 규칙의 모든 작업은 사용자가 소유한 확인된 모든 자격 증명에 적용됩니다.

1. Amazon SES는 이메일을 인증하고 해당 콘텐츠에서 스팸 및 맬웨어를 검사합니다.
   + Amazon SES로 이메일을 전송한 원격 호스트의 IP 주소는 SMTP 트랜잭션 중에 사용된 MAIL FROM의 도메인에 지정된 SPF 정책에 따라 검사됩니다.
   + 이메일의 헤더 섹션에 있는 DKIM 서명이 검사됩니다.
   + 콘텐츠 검사가 활성화된 경우 이메일 콘텐츠에서 스팸 및 맬웨어가 있는지 검사합니다.
   + 수신 규칙 평가 중에 이메일 인증 및 콘텐츠 검색 결과를 사용할 수 있습니다.

   자세한 정보는 [이메일 인증 및 맬웨어 탐지](#receiving-email-auth-and-scan)을 참조하세요.

1. Amazon SES가 수락하는 이메일의 경우 활성 규칙 세트 내의 모든 수신 규칙이 사용자가 정의한 순서대로 적용됩니다. 각 수신 규칙 내에서 작업은 정의한 순서대로 실행됩니다.

## Amazon SES 이메일 수신에 대한 사용 사례 및 제한
<a name="receiving-email-consider-use-case"></a>

이 단원에서는 Amazon SES 이메일 수신에 대한 몇 가지 일반적인 고려 사항 및 사용 사례에 대해 설명합니다. 질문 및 답변 형식으로 제공되며, 이는 Amazon SES를 사용하여 사용자가 소유한 하나 이상의 확인된 도메인을 대신하여 이메일을 수신하고 관리하는 데 도움이 되는지 판단할 수 있는 자주 묻는 질문과 사실입니다.

### 리전별 가용성
<a name="receiving-email-consider-use-case-regions"></a>

**Amazon SES가 해당 리전에서 이메일 수신을 지원합니까?**

Amazon SES는 특정 AWS 리전에서만 이메일 수신을 지원합니다. 이메일 수신이 지원되는 리전의 전체 목록은 AWS 일반 참조의 [Amazon Simple Email Service 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/ses.html)을 참조하세요.

### POP 또는 IMAP 기반 이메일 클라이언트
<a name="receiving-email-consider-use-case-clients"></a>

**수신 전자 메일을 받는 데 Microsoft Outlook을 사용할 수 있습니까?**

Amazon SES에는 들어오는 이메일을 수신하기 위한 POP 또는 IMAP 서버가 포함되어 있지 않습니다. 즉, Microsoft Outlook과 같은 이메일 클라이언트를 사용하여 들어오는 이메일을 수신할 수 없습니다. 이메일 클라이언트를 사용하여 이메일을 전송하고 수신할 수 있는 해결 방법이 필요한 경우 [Amazon WorkMail](https://aws.amazon.com/workmail) 사용을 고려해 보십시오.

### 다른 AWS 서비스 사용
<a name="receiving-email-consider-use-case-permissions"></a>

**권한을 적절히 설정하셨습니까?**

메일을 S3 버킷으로 전송하거나 본인 소유가 아닌 Amazon SNS 주제로 게시하거나 Lambda 함수를 트리거하거나 사용자 지정 관리형 키를 사용하고자 하는 경우 Amazon SES에 해당 리소스에 대한 액세스 권한을 주어야 합니다. Amazon SES에 액세스 권한을 부여하려면 콘솔 또는 해당 AWS 서비스의 APIs에서 리소스에 대한 정책을 생성합니다. 자세한 정보는 [권한 부여하기](receiving-email-permissions.md) 단원을 참조하십시오.

### 이메일 콘텐츠
<a name="receiving-email-consider-use-case-content"></a>

**Amazon SES가 이메일 콘텐츠를 어떻게 전달하기를 바라십니까?**

Amazon SES는 이메일 콘텐츠를 두 가지 방식으로 전달합니다. 즉, 이메일을 사용자가 지정하는 S3 버킷에 저장하거나 이메일 사본이 포함된 Amazon SNS 알림을 전송합니다. Amazon SES는 수정되지 않은 원시 이메일을 다목적 인터넷 전자 우편(MIME) 형식으로 전송합니다. MIME 형식에 대한 자세한 내용은 [RFC 2045](https://tools.ietf.org/html/rfc2045)를 참조하세요.

**수신하게 될 이메일의 크기는 얼마나 됩니까?**

S3 버킷에 이메일을 저장하는 경우 이메일(헤더 포함)의 최대 용량은 40MB입니다. Amazon SNS 알림을 통해 이메일을 수신하는 경우 이메일(헤더 포함)의 최대 용량은 150KB입니다.

**메일 처리 프로세스를 어떻게 트리거하고자 하십니까?**

메일을 수신한 후에는 자체 코드로 처리하고 싶을 것입니다. 예를 들어 사용자 애플리케이션이 Base64 인코딩의 이메일을 표시할 수 있는 형식으로 변환해서 최종 사용자가 이메일 클라이언트로 확인할 수 있도록 할 것입니다. 이 프로세스를 시작하는 두 가지 방법이 있습니다.
+ 이메일을 Amazon S3 버킷으로 전송하는 경우 애플리케이션이 S3 활동으로 발생하는 Amazon SNS 알림을 청취하고, 알림에서 이메일의 메시지 ID를 추출하고 이를 통해 Amazon S3에서 이메일을 가져오면 됩니다.

  또는 Lambda 함수를 작성하여 이메일 처리 프로세스를 수신 규칙에 포함시켜도 됩니다. 이 경우에는 수신 규칙이 우선 이메일을 Amazon S3에 쓴 다음 Lambda 함수를 트리거해야 합니다. Lambda 함수가 다른 작업의 실행에 영향을 미치는 결과물을 반환해야 하는지 여부에 따라서 수신 규칙 내에서 Lambda 작업을 동기식으로 또는 비동기식으로 실행할 수 있습니다. 해당 사용 사례에 반드시 동기식 실행이 필요한 경우가 아니라면 비동기식 실행 사용이 좋습니다. 에 대한 자세한 내용은 [AWS Lambda 개발자 안내서](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)를 AWS Lambda참조하세요.
+ 이메일을 SNS 작업을 사용해 Amazon SNS 알림으로 전송하는 경우 애플리케이션이 Amazon SNS 알림을 청취하고 알림에서 이메일 메시지를 추출하면 됩니다.

**이메일을 암호화하고자 하십니까?**

Amazon SES는 AWS Key Management Service (AWS KMS)와 통합되어 선택적으로 S3 버킷에 쓰는 메일을 암호화합니다. Amazon SES는 Amazon S3 작성하기 전에 이메일을 암호화하는 데 사용합니다. 따라서 Amazon S3에서 메일을 가져온 다음 사용자 측에서 콘텐츠를 해독해야 합니다. 이 [AWS SDK for Java](https://aws.amazon.com/sdk-for-java/) 및 [AWS SDK for Ruby](https://aws.amazon.com/sdk-for-ruby/)은(는) 암호 해독을 처리할 수 있는 클라이언트를 제공합니다. Amazon SES는 이메일을 S3 버킷으로 전송하는 경우에만 이메일을 암호화할 수 있습니다.

### 원치 않는 메일
<a name="receiving-email-consider-use-case-unwanted"></a>

**이메일 수신 프로세스의 어느 시점에서 원치 않는 메일을 차단하고자 하십니까?**

발신자가 수신자에게 이메일을 전송하려고 시도할 때 발신자의 이메일 서버는 수신자의 서버와 명령 시퀀스를 교환합니다. 이러한 시퀀스를 *SMTP 대화*라고 합니다.

이메일 수신 프로세스의 두 시점에서 수신되는 이메일을 차단할 수 있는데 SMTP 대화 중과 SMTP 대화 이후, 이렇게 두 시점입니다. SMTP 대화 중에는 *IP 주소 필터*를 사용하여 메시지를 차단하고, SMTP 대화 후에는 *거부 규칙*을 사용하여 이메일을 차단합니다.

IP 주소 필터를 사용하면 특정 IP 주소에서 발신된 이메일을 차단할 수 있습니다. IP 주소 필터를 사용하여 원치 않는 메일을 차단하면 SMTP 대화 중 차단된 메시지에는 비용이 청구되지 않는다는 이점이 있습니다. IP 주소 필터 사용의 단점은 메시지의 실제 내용을 분석하지 않고 지정한 IP 주소에서 발신된 이메일을 차단한다는 점입니다. IP 주소 필터에 대한 자세한 내용은 [IP 주소 필터 생성 콘솔 연습](receiving-email-ip-filtering-console-walkthrough.md) 단원을 참조하세요.

거부 규칙을 사용하면 메시지가 전송된 주소(혹은 도메인 또는 하위 도메인)를 기반으로 이메일 발신자에게 반송 메일 알림을 보낼 수 있습니다. 거부 규칙을 사용하면 발신자에게 반송 메일 알림을 보내기 전에 수신되는 메시지에 대해 추가 분석을 수행할 수 있다는 이점이 있습니다. 예를 들어 AWS Lambda 를 사용하여 메시지가 DKIM 인증에 실패하거나 스팸으로 식별된 경우에만 반송 메일 알림을 보낼 수 있습니다. 하지만 거부 규칙을 사용하면 SMTP 대화 이후에 거부 규칙이 처리되기 때문에 수신한 각 메시지에 대해 비용이 청구된다는 단점이 있습니다. Lambda를 사용하여 수신되는 메시지의 내용을 분석하는 경우에도 비용이 청구될 수 있습니다. 수신 규칙에 대한 자세한 내용은 [수신 규칙 만들기 콘솔 연습](receiving-email-receipt-rules-console-walkthrough.md) 단원을 참조하세요. Lambda를 사용하여 수신되는 이메일 분석에 대한 자세한 내용은 [Lambda 함수 예제](receiving-email-action-lambda-example-functions.md) 단원을 참조하십시오.

### 메일 스트림
<a name="receiving-email-consider-use-case-streams"></a>

**메일 스트림을 어떻게 나누고 싶으십니까?**

도메인은 다양한 종류의 메일을 수신합니다. 예를 들어 도메인이 수신하는 메일 중에서 *user@example.com*으로 가는 메일은 개인 수신함으로 들어가야 합니다. 한편 *unsubscribe@example.com*으로 가는 메일은 자동화 시스템으로 처리하는 것이 좋습니다. 이처럼 이메일을 종류에 따라 다르게 처리할 수 있도록 수신 규칙을 사용해 수신 메일을 분류할 수 있습니다. 수신 규칙 설정 방법에 대한 자세한 내용은 다음([수신 규칙 만들기](receiving-email-receipt-rules-console-walkthrough.md))을 참조하세요.

## 이메일 수신 인증 및 맬웨어 검사
<a name="receiving-email-auth-and-scan"></a>

Amazon SES는 수신된 각 이메일을 인증하고 해당 이메일 콘텐츠에서 스팸 및 맬웨어를 선택적으로 검사합니다. SES는 이메일 인증 또는 콘텐츠 검색 결과에 따라 수신된 이메일에 대해 어떠한 작업도 수행하지 않습니다. 그러나 이러한 작업의 결과는 [Amazon SNS 알림](receiving-email-notifications-examples.md#receiving-email-notifications-examples-sns-action) 또는 [Amazon S3로 전송된](receiving-email-action-s3.md) 메시지의 헤더와 같은 SES 수신 규칙 작업에서 사용할 수 있는 속성으로 제공됩니다.

**이메일 인증**

Amazon SES는 SPF, DKIM 및 DMARC를 사용하여 수신된 각 이메일을 인증합니다. 각 인증 메커니즘의 결과는 활성 [수신 규칙 세트](receiving-email-action-sns.md)의 규칙을 평가하는 과정에서 SES가 발송하는 Amazon SNS 알림에 제공됩니다. 또한 Amazon S3의 이메일 사본을 수신하도록 선택한 경우 이메일 인증 결과는 SES가 이메일의 헤더 섹션에 추가하는 `Authentication-Results` 헤더에 캡처됩니다.

```
Authentication-Results: example.com;
spf=pass (spfCheck: 10.0.0.1 is permitted by domain of example.com) client-ip=10.0.0.1; envelope-from=example@example.com; helo=10.0.0.1;
dkim=pass header.i=example.com;
dkim=permerror header.i=some-example.com;
dmarc=pass header.from=example@example.com;
```

`Authentication-Results` 헤더는 [RFC 8601](https://datatracker.ietf.org/doc/html/rfc8601)에 설명되어 있습니다.

**스팸 및 맬웨어 탐지를 위한 이메일 콘텐츠 검사**

Amazon SES는 이메일과 일치하는 수신 규칙의 *ScanEnabled*(API) 또는*스팸 및 바이러스 검사* 속성 값에 따라 수신된 이메일 콘텐츠에서 맬웨어를 검사합니다. 기본적으로 SES는 수신된 이메일 콘텐츠에서 맬웨어를 검사합니다. 특정 수신 규칙과 일치하는 수신된 이메일에 대한 콘텐츠 검사를 비활성화하려면 [API를 사용](https://docs.aws.amazon.com/ses/latest/APIReference/API_ReceiptRule.html)하는 경우 수신 규칙의 *ScanEnabled* 플래그를 false로 지정하거나 [콘솔을 사용](receiving-email-receipt-rules-console-walkthrough.md#receipt-rules-create-rule-settings)하는 경우 *스팸 및 바이러스 검사* 확인란을 선택 해제해야 합니다. 이메일과 일치하는 수신 규칙에 대한 검사를 활성화한 경우 콘텐츠 검색 결과는 활성 [수신 규칙 세트](receiving-email-action-sns.md)의 규칙을 평가하는 과정에서 SES가 발송하는 Amazon SNS 알림에 제공됩니다. 또한 Amazon S3의 이메일 사본을 수신하도록 선택한 경우 콘텐츠 검사 결과는 SES가 이메일의 헤더 섹션에 추가하는 `X-SES-Spam-Verdict` 및 `X-SES-Virus-Verdict` 헤더에 캡처됩니다.

```
X-SES-Spam-Verdict: PASS
X-SES-Virus-Verdict: FAIL
```

위의 헤더에 사용할 수 있는 값은 다음에 나열되어 있습니다.
+ [스팸](receiving-email-notifications-contents.md#receiving-email-notifications-contents-spamverdict-object)
+ [바이러스](receiving-email-notifications-contents.md#receiving-email-notifications-contents-virusverdict-object)

이제 이메일 수신 개념, 작동 방식 및 사용 사례에 대해 이해했으므로 [이메일 수신 설정하기](receiving-email-setting-up.md)로 이동하여 시작할 수 있습니다.

# Amazon SES 이메일 수신 설정
<a name="receiving-email-setting-up"></a>

이 섹션에서는 메일을 수신하도록 Amazon SES를 구성하기 전에 필요한 사전 요구 사항에 대해 설명합니다. Amazon SES 작동 방식에 대한 개념을 이해하고 이메일을 수신, 필터링 및 처리하는 방법을 고려하기 위하여 [이메일 수신 개념 및 사용 사례](receiving-email-concepts.md)을(를) 읽는 것이 중요합니다.

*규칙 세트*, *수신 규칙* 및 *IP 주소 필터*를 생성하여 이메일 수신을 구성하기 전에 먼저 다음 설정 전제 조건을 완료해야 합니다.
+ DNS 레코드를 게시하여 Amazon SES을 포함하는 도메인을 확인하여 소유하고 있는지 입증합니다.
+ MX 레코드를 게시하여 Amazon SES가 도메인에 대한 이메일을 수신하도록 허용합니다.
+ 수신 규칙 작업을 실행하려면 Amazon SES에 다른 AWS 리소스에 액세스할 수 있는 권한을 부여합니다.

도메인 자격 증명을 만들고 확인하면 확인 프로세스를 완료하기 위해 DNS 설정에 레코드를 게시하지만 이메일 수신을 사용하기에는 충분하지 않습니다. 이메일 수신과 관련하여 사용자 지정 발신 메일 도메인을 지정하기 위해 MX 레코드를 게시해야 합니다. 이 레코드는 도메인의 DNS 설정에서 SES가 도메인에 대한 이메일을 수신하도록 허용하는 데 사용됩니다. Amazon SES에 해당 작업에 필요한 각 AWS 서비스를 사용할 권한이 없으면 수신 규칙에서 선택한 작업이 작동하지 않으므로 권한을 부여해야 합니다.

**Topics**
+ [Amazon SES 이메일 수신을 위한 도메인 확인](receiving-email-verification.md)
+ [Amazon SES 이메일 수신을 위해 MX 레코드 게시하기](receiving-email-mx-record.md)
+ [Amazon SES에 이메일 수신을 위한 권한 부여](receiving-email-permissions.md)

# Amazon SES 이메일 수신을 위한 도메인 확인
<a name="receiving-email-verification"></a>

도메인의 이메일을 전송 또는 수신할 때 Amazon SES를 사용할 경우 먼저 해당 도메인의 소유 사실을 증명해야 합니다. 확인 절차는 SES로 도메인 확인 절차를 시작한 다음, 사용하는 확인 방법에 따라 DNS 레코드(CNAME 또는 TXT)를 DNS 제공자에게 게시하는 것을 포함합니다.

콘솔을 통해 [Easy DKIM](send-email-authentication-dkim-easy.md) 또는 [자체 DKIM 사용(BYODKIM)](send-email-authentication-dkim-bring-your-own.md)으로 도메인을 확인하고, DNS 레코드를 쉽게 복사하여 DNS 공급자에게 게시할 수 있습니다. 이 작업을 수행하는 방법은 [도메인 자격 증명 생성](creating-identities.md#verify-domain-procedure) 섹션을 참조하세요. 필요에 따라 SES [https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainDkim.html) 또는 [https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html) API를 사용할 수 있습니다.

도메인 또는 이메일 주소는 SES 콘솔의 [확인된 ID](view-verified-domains.md) 테이블에서 상태를 확인하거나, SES [https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityVerificationAttributes.html) 또는 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailIdentity.html) API를 사용하여 쉽게 확인할 수 있습니다.

# Amazon SES 이메일 수신을 위해 MX 레코드 게시하기
<a name="receiving-email-mx-record"></a>

*메일 교환기* 레코드(*MX 레코드*)는 어떤 메일 서버가 사용자의 도메인에서 전송된 이메일을 허용할 수 있는지를 지정하는 구성합니다.

Amazon SES가 수신 이메일을 관리하도록 하려면 도메인의 DNS 구성에 MX 레코드를 추가해야 합니다. 생성한 MX 레코드는 Amazon SES를 사용하는 AWS 리전에 대한 이메일을 수신하는 엔드포인트를 나타냅니다. 예를 들어 미국 서부(오레곤) 리전에 대한 엔드포인트는 *inbound-smtp.us-west-2.amazonaws.com*입니다. 전체 엔드포인트 목록은 [SES 리전 및 엔드포인트](regions.md#region-endpoints) 단원을 참조하세요.

**참고**  
Amazon SES에서 이메일을 수신하는 엔드포인트는 IMAP 또는 POP3 이메일 서버가 아닙니다. 이러한 URL은 이메일 클라이언트의 수신되는 메일 서버로 사용할 수 없습니다. 이메일 클라이언트를 사용하여 이메일을 전송하고 수신할 수 있는 해결 방법이 필요한 경우 [Amazon WorkMail](https://aws.amazon.com/workmail) 사용을 고려해 보십시오.

다음 절차에는 MX 레코드를 생성하기 위한 일반적인 단계가 포함되어 있습니다. *MX 레코드를 생성하는 특정 절차는 DNS 또는 호스팅 공급자에 따라 다릅니다.* 도메인에 대한 DNS 구성에 MX 레코드를 추가하는 것에 관한 정보는 공급자의 설명서를 참조하세요.

**참고**  


**도메인의 DNS 구성에 MX 레코드를 추가하려면**

1. (사전 조건) 이러한 절차를 완료하려면 도메인의 DNS 레코드를 수정해야 합니다. DNS 레코드에 액세스할 수 없거나 그렇게 하는 것이 불편한 경우 시스템 관리자에게 연락해 도움을 요청하세요.

1. DNS 공급자의 관리 콘솔에 로그인합니다.

1. 새 MX 레코드를 생성합니다.

1. MX 레코드 **이름**으로 도메인을 입력합니다. 예를 들어, Amazon SES에서 *example.com* 도메인으로 보낸 이메일을 관리하도록 하려면 다음을 입력합니다.

   ```
   example.com.
   ```
**참고**  
DNS 공급자에 따라: 1) 도메인 확장의 끝에 있는 후행 `.` 기호가 필요하지 않을 수 있습니다. 2) **이름** 필드는 **호스트**, **도메인** 또는 **메일 도메인**이라고도 합니다.

1. **Type(유형)**으로 **MX**를 선택합니다.
**참고**  
일부 DNS 공급자는 **Type(유형)** 필드를 **Record Type(레코드 유형)** 또는 유사한 이름으로 지칭합니다.

1. **Value(값)**로 다음을 입력합니다.

   ```
   10 inbound-smtp.region.amazonaws.com
   ```

   앞의 예에서 *region*을 Amazon SES에서 사용하는 AWS 리전에 대한 이메일을 수신하는 엔드포인트의 주소로 바꿉니다. 예를 들어 미국 동부(버지니아 북부) 리전을 사용하는 경우 *리전*을 `us-east-1`로 바꿉니다. 이메일 수신 엔드포인트의 전체 목록은 [SES 리전 및 엔드포인트](regions.md#region-endpoints) 단원을 참조하세요.
**참고**  
일부 DNS 공급자의 관리 콘솔에는 별도의 레코드 **Value(값)** 및 레코드 **Priority(우선 순위)** 필드가 있습니다. 이 경우에 해당하면, DNS 공급자의 경우 **Priority(우선 순위)** 값에 `10`을 입력하고 **Value(값)**에 수신 메일 엔드포인트 URL을 입력합니다.

**중요**  
MX 레코드 생성하는 구체적인 절차는 DNS 또는 호스팅 공급자에 따라 다릅니다. 도메인에 대한 DNS 구성에 MX 레코드를 추가하는 것에 관한 정보는 공급자의 설명서를 참조하거나 공급자에게 문의하세요.

## 다양한 공급자를 위한 MX 레코드 생성 지침
<a name="receiving-email-mx-record-links"></a>

도메인의 MX 레코드를 생성하는 절차는 이용하는 DNS 공급자에 따라 다릅니다. 이 단원에는 몇몇 공통 DNS 공급자의 설명서에 대한 링크가 포함되어 있습니다. 이것이 공급자의 전체 목록은 아닙니다. 공급자가 아래 목록에 없더라도 Amazon SES에서 여전히 이를 사용할 수 있습니다. 이 목록에 포함되어 있다고 해서 어떤 회사의 제품 또는 서비스를 승인 또는 추천하는 것은 아닙니다.


| DNS/호스팅 공급자 이름 | 설명서 링크 | 
| --- | --- | 
|  Amazon Route 53  |  [Amazon Route 53 콘솔을 사용하여 레코드 생성](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)  | 
|  GoDaddy  |  [MX 레코드 추가](https://www.godaddy.com/help/add-an-mx-record-19234)(외부 링크)  | 
|  DreamHost  |  [MX 레코드를 변경하는 방법](https://help.dreamhost.com/hc/en-us/articles/215035328)(외부 링크)  | 
|  Cloudflare  |  [이메일 레코드 설정](https://developers.cloudflare.com/dns/manage-dns-records/how-to/email-records/)(외부 링크)  | 
|  HostGator  |  [MX 레코드 변경 - Windows](https://www.hostgator.com/help/article/changing-mx-records-windows)(외부 링크)  | 
|  Namecheap  |  [메일 서비스에 필요한 MX 레코드를 설정하는 방법](https://www.namecheap.com/support/knowledgebase/article.aspx/322/2237/how-can-i-set-up-mx-records-required-for-mail-service)(외부 링크)  | 
|  Names.co.uk  |  [도메인의 DNS 설정 변경](https://www.names.co.uk/support/domains/1156-changing_your_domains_dns_settings.html)(외부 링크)  | 
|  Wix  |  [Wix 계정에서 MX 레코드 추가 또는 업데이트](https://support.wix.com/en/article/adding-or-updating-mx-records-in-your-wix-account)(외부 링크)  | 

# Amazon SES에 이메일 수신을 위한 권한 부여
<a name="receiving-email-permissions"></a>

Amazon Simple Storage Service(Amazon S3) 버킷으로 이메일을 보내거나 AWS Lambda 함수를 호출하는 등 SES에서 이메일을 수신할 때 수행할 수 있는 일부 작업에는 특별한 권한이 필요합니다. 이 섹션에서는 일반 사용 사례에 대한 정책 예제를 보여줍니다.

**Topics**
+ [S3 버킷으로 전송 작업을 위한 IAM 역할 권한 설정](#receiving-email-permissions-s3-iam-role)
+ [SES에 S3 버킷에 작성할 수 있는 권한 부여](#receiving-email-permissions-s3)
+ [SES에 AWS KMS 키를 사용할 수 있는 권한 부여](#receiving-email-permissions-kms)
+ [SES에 AWS Lambda 함수를 호출할 수 있는 권한 부여](#receiving-email-permissions-lambda)
+ [SES에 다른 AWS 계정에 속한 Amazon SNS 주제에 게시할 수 있는 권한 부여](#receiving-email-permissions-sns)

## S3 버킷으로 전송 작업을 위한 IAM 역할 권한 설정
<a name="receiving-email-permissions-s3-iam-role"></a>

이 IAM 역할에는 다음 사항이 적용됩니다.
+ [S3 버킷으로 전송 작업](receiving-email-action-s3.md)에만 사용할 수 있습니다.
+ SES [이메일 수신](regions.md#region-receive-email)을 사용할 수 없는 리전에 있는 S3 버킷에 쓰려는 경우 이 역할을 사용해야 합니다.

S3 버킷에 쓰려는 경우 [S3 버킷으로 전송 작업](receiving-email-action-s3.md)의 관련 리소스에 액세스할 수 있는 권한을 IAM 역할에 제공할 수 있습니다. 또한 [다음 섹션](#receiving-email-permissions-s3-iam-role-trust)에 설명된 대로 IAM 신뢰 정책을 통해 해당 역할을 맡아 작업을 수행할 수 있는 권한을 SES에 부여해야 합니다.

이 권한 정책은 IAM 역할의 인라인 정책 편집기에 붙여넣어야 합니다. [S3 버킷으로 전송 작업](receiving-email-action-s3.md)의 내용을 참조하고 **IAM 역할** 항목에 제공된 단계를 따르세요. (다음 예에는 SNS 주제 알림 또는 S3 작업에서 고객 관리형 키를 사용하려는 경우의 선택적 권한도 포함되어 있습니다.)

**참고**  
표시된 [SES에 S3 버킷에 작성할 수 있는 권한 부여](#receiving-email-permissions-s3)와 같이 S3 버킷 정책에서 SES 서비스만 허용하여 IAM 역할을 지정하지 않고 S3 작업을 설정할 수 있습니다. 이는 교차 계정 시나리오에서도 작동합니다.
S3 작업에 대한 IAM 역할을 지정하는 경우, SES는 'PutObject' 작업에 대해 해당 역할을 수임하며, 여기에 지정된 IAM 권한은 동일한 계정 사용에 충분합니다. 그러나 교차 계정 사용의 경우 IAM 역할이 버킷에서 'PutObject'가 되도록 허용하는 추가 버킷 정책이 필요합니다. 이는 버킷 소유자가 교차 계정 버킷 권한을 부여하는 것에 설명된 대로 [교차 계정 버킷 권한을 부여하는 버킷 소유자](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)가 지정합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        },
        {
            "Sid": "SNSAccess",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:us-east-1:111122223333:my-topic"
        },
        {
            "Sid": "KMSAccess",
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey*",
            "Resource": "arn:aws:kms:us-east-1::111122223333:key/key-id"
        }
    ]
}
```

------

이전 정책 예제에서 다음과 같이 변경합니다.
+ *amzn-s3-demo-bucket*을 작성하려는 S3 버킷의 이름으로 바꿉니다.
+ *region*을 수신 규칙을 생성한 AWS 리전 로 바꿉니다.
+ *111122223333*을 AWS 계정 ID로 바꿉니다.
+ *my-topic*을 알림을 게시할 SNS 주제의 이름으로 바꿉니다.
+ *key-id*를 KMS 키의 ID로 바꿉니다.

### S3 작업 IAM 역할에 대한 신뢰 정책
<a name="receiving-email-permissions-s3-iam-role-trust"></a>

SES가 해당 역할을 맡을 수 있도록 IAM 역할의 *신뢰 관계*에 다음 신뢰 정책을 추가해야 합니다.

**참고**  
이 신뢰 정책의 수동 추가는 [S3 버킷으로 전송 작업](receiving-email-action-s3.md) 워크플로의 **IAM 역할** 항목에 제공된 단계를 사용하여 SES 콘솔에서 IAM 역할을 생성하지 않은 경우에만 필요합니다. *콘솔에서 IAM 역할을 생성하면 이 신뢰 정책이 자동으로 생성되어 적용되므로 이 단계가 필요하지 않게 됩니다.*

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESAssume",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                  "AWS:SourceAccount":"111122223333",
                  "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
                }
            }
        }
    ]
}
```

------

이전 정책 예제에서 다음과 같이 변경합니다.
+ *region*을 수신 규칙을 생성한 AWS 리전 로 바꿉니다.
+ *111122223333*을 AWS 계정 ID로 바꿉니다.
+ *rule\$1set\$1name*을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙이 포함된 규칙 세트의 이름으로 바꿉니다.
+ *receipt\$1rule\$1name*을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙 이름으로 바꿉니다.

## SES에 S3 버킷에 작성할 수 있는 권한 부여
<a name="receiving-email-permissions-s3"></a>

S3 버킷에 다음 정책을 적용하면 SES [이메일 수신](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)을 사용할 수 있는 리전에 있는 한 해당 버킷에 쓸 수 있는 권한을 SES에 부여합니다. *이메일 수신* 리전 외부의 버킷에 작성하려는 경우에는 [S3 버킷으로 전송 작업을 위한 IAM 역할 권한 설정](#receiving-email-permissions-s3-iam-role)의 내용을 참조하세요. Amazon S3로 수신 이메일을 전송하는 수신 규칙을 만드는 방법에 대한 자세한 내용은 [S3 버킷으로 전송 작업](receiving-email-action-s3.md) 섹션을 참조하세요.

S3의 버킷 정책에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [버킷 정책 및 사용자 정책 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html)을 참조하세요.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowSESPuts",
      "Effect":"Allow",
      "Principal":{
        "Service":"ses.amazonaws.com"
      },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
    }
  ]
}
```

------

이전 정책 예제에서 다음과 같이 변경합니다.
+ *amzn-s3-demo-bucket*을 작성하려는 S3 버킷의 이름으로 바꿉니다.
+ *region*을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.
+ *111122223333*을 AWS 계정 ID로 바꿉니다.
+ *rule\$1set\$1name*을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙이 포함된 규칙 세트의 이름으로 바꿉니다.
+ *receipt\$1rule\$1name*을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙 이름으로 바꿉니다.

## SES에 AWS KMS 키를 사용할 수 있는 권한 부여
<a name="receiving-email-permissions-kms"></a>

SES가 이메일을 암호화하기 위해서는 수신 규칙을 설정할 때 지정한 AWS KMS 키에 대한 사용 권한이 있어야 합니다. 계정의 기본 KMS 키(**aws/ses**)를 사용하거나, 직접 만드는 사용자 지정 괸리형 키를 사용할 수 있습니다. 기본 KMS 키를 사용하는 경우 SES에 사용 권한을 부여하는 추가 절차가 필요하지 않습니다. 사용자 지정 관리형 키를 사용하는 경우 키의 정책에 설명을 추가하여 SES에 사용 권한을 부여해야 합니다.

다음 정책 설명을 키 정책에 사용하여 도메인에서 이메일을 수신할 때 SES가 사용자 지정 관리형 키를 사용할 수 있도록 허용합니다.

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

이전 정책 예제에서 다음과 같이 변경합니다.
+ *region*을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.
+ *111122223333*을 AWS 계정 ID로 바꿉니다.
+ *rule\$1set\$1name*을 이메일 수신과 연결한 수신 규칙이 포함된 규칙 세트의 이름으로 바꿉니다.
+ *receive\$1rule\$1name*을 이메일 수신과 연결한 수신 규칙의 이름으로 바꿉니다.

 AWS KMS 를 사용하여 서버 측 암호화가 활성화된 S3 버킷에 암호화된 메시지를 보내는 경우 정책 작업을 추가해야 합니다`"kms:Decrypt"`. 앞의 예를 다시 사용하여 이 작업을 정책에 추가하면 다음과 같이 표시됩니다.

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"111122223333",
          "AWS:SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name"
        }
      }
}
```

 AWS KMS 키에 정책을 연결하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [에서 키 정책 사용을 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 참조하세요.

## SES에 AWS Lambda 함수를 호출할 수 있는 권한 부여
<a name="receiving-email-permissions-lambda"></a>

SES가 AWS Lambda 함수를 호출하도록 하려면 SES 콘솔에서 수신 규칙을 생성할 때 함수를 선택할 수 있습니다. 이렇게 하면 SES가 자동으로 함수에 필요한 권한을 추가합니다.

또는 AWS Lambda API에서 `AddPermission` 작업을 사용하여 정책을 함수에 연결할 수 있습니다. 다음 `AddPermission` API 호출은 SES에 Lambda 함수 호출 권한을 부여합니다. Lambda 함수에 정책을 연결하는 방법에 대한 자세한 내용은 *AWS Lambda 개발자 가이드*의 [AWS Lambda 권한](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)을 참조하세요.

```
{
  "Action": "lambda:InvokeFunction",
  "Principal": "ses.amazonaws.com",
  "SourceAccount": "111122223333",
  "SourceArn": "arn:aws:ses:region:111122223333:receipt-rule-set/rule_set_name:receipt-rule/receipt_rule_name",
  "StatementId": "GiveSESPermissionToInvokeFunction"
}
```

이전 정책 예제에서 다음과 같이 변경합니다.
+ *region*을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.
+ *111122223333*을 AWS 계정 ID로 바꿉니다.
+ *규칙 세트 이름*을 Lambda 함수를 만든 수신 규칙을 포함하는 규칙 세트 이름으로 바꿉니다.
+ *receipt\$1rule 이름*을 Lambda 함수를 포함하는 수신 규칙 이름으로 바꿉니다.

## SES에 다른 AWS 계정에 속한 Amazon SNS 주제에 게시할 수 있는 권한 부여
<a name="receiving-email-permissions-sns"></a>

별도의 AWS 계정에 있는 주제에 알림을 게시하려면 Amazon SNS 주제에 정책을 연결해야 합니다. SNS 주제는 도메인 및 수신 규칙 세트와 같은 리전에 있어야 합니다.

다음 정책은 SES에 별도의 AWS 계정의 Amazon SNS 주제에 게시할 수 있는 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "SNS:Publish",
            "Resource": "arn:aws:sns:us-east-1:111122223333:topic_name",
            "Condition": {
                "StringEquals": {
                "AWS:SourceAccount": "444455556666",
                "AWS:SourceArn": "arn:aws:ses:us-east-1:777788889999:receipt-rule-set/rule_set_name:receipt-rule/rule_name"
                }
            }
        }
    ]
}
```

------

이전 정책 예제에서 다음과 같이 변경합니다.
+ *topic\$1region*을 Amazon SNS 주제 AWS 리전 가 생성된 로 바꿉니다.
+ *sns\$1topic\$1account\$1id*를 Amazon SNS 주제를 소유한 AWS 계정의 ID로 바꿉니다.
+ *topic\$1name*을 알림을 게시할 Amazon SNS 주제의 이름으로 바꿉니다.
+ *aws\$1account\$1id*를 이메일을 수신하도록 구성된 AWS 계정의 ID로 바꿉니다.
+ *receipt\$1region*을 수신 규칙을 생성한 AWS 리전 로 바꿉니다.
+ *rule\$1set\$1name*을 Amazon SNS 주제 작업에 대한 게시를 만든 수신 규칙을 포함하는 규칙 세트 이름으로 바꿉니다.
+ *receipt\$1rule\$1name*을 Amazon SNS 주제 작업에 대한 게시를 포함하는 수신 규칙 이름으로 바꿉니다.

Amazon SNS 주제가 서버 측 암호화 AWS KMS 에를 사용하는 경우 AWS KMS 키 정책에 권한을 추가해야 합니다. AWS KMS 키 정책에 다음 정책을 연결하여 권한을 추가할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESToUseKMSKey",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Amazon SES 이메일 수신 콘솔 연습
<a name="receiving-email-walkthroughs"></a>

이 단원에서는 이메일 수신을 관리하기 위해 *수신 규칙*및 *IP 주소 필터*를 구성하는 데 사용되는 이메일 수신 콘솔 마법사에 대해 설명합니다. 콘솔 마법사를 사용하기 전에 이메일 수신의 작동 방식에 대한 개념을 이해하기 위해 [이메일 수신 개념 및 사용 사례](receiving-email-concepts.md)을 읽고 설정 사전 요구 사항을 완료하기 위해 [이메일 수신 설정하기](receiving-email-setting-up.md)를 모두 읽어야 합니다.

**Topics**
+ [수신 규칙 만들기 콘솔 연습](receiving-email-receipt-rules-console-walkthrough.md)
+ [IP 주소 필터 생성 콘솔 연습](receiving-email-ip-filtering-console-walkthrough.md)

# 수신 규칙 만들기 콘솔 연습
<a name="receiving-email-receipt-rules-console-walkthrough"></a>

이 섹션에서는 Amazon SES 콘솔을 사용하여 수신 규칙을 만들고 정의하는 방법을 설명합니다. 수신 규칙 작동 방식을 이해하기 위한 핵심 사항은 다음과 같습니다.
+ *규칙 세트*에는 정렬된 수신 규칙 세트가 포함됩니다. *수신 규칙*에는 정렬된 일련의 작업이 포함됩니다.
+ 수신 규칙은 사용자가 지정한 일련의 작업 목록을 실행하여 수신 메일을 처리하는 방법을 Amazon SES에 알려줍니다.
+ 이 정렬된 작업 목록은 수신자 조건과 처음 일치하는 항목에 따라 선택적으로 만들 수 있습니다. 지정하지 않으면 확인된 도메인에 속한 모든 ID에 작업이 적용됩니다.
+ 수신 규칙은 규칙 세트라는 컨테이너에서 만들어지고 정의됩니다. 여러 개의 규칙 세트를 만들 수 있지만 한 번에 하나만 활성화할 수 있습니다.
+ 활성 규칙 세트 내의 수신 규칙은 지정한 순서대로 실행됩니다.
+ 수신 규칙을 만들기 전에 먼저 *규칙 세트*를 만들어 수신 규칙을 포함해야 합니다.

[Amazon Simple Email Service API 참조](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html)에 설명된 대로 `CreateReceiptRuleSet` API를 사용하여 빈 수신 규칙 세트를 선택적으로 만들 수 있습니다. 이후 Amazon SES 콘솔 또는 `CreateReceiptRule` API를 사용해 세트에 수신 규칙을 추가할 수 있습니다.

연습을 진행하기 전에 수신자 기반 이메일 수신을 사용하는 데 필요한 모든 필수 구성 요소를 충족했는지 확인하세요.

## 사전 조건
<a name="receipt-rules-prerequisites"></a>

수신 규칙을 사용하여 수신자 기반 이메일 제어를 설정하려면 다음 사전 요구 사항을 충족해야 합니다.

1. Amazon SES AWS 리전 가 이메일 수신을 지원하는에 엔드포인트가 있는지 확인합니다. 의 [이메일 수신 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints) 테이블에는 SES가 이메일 수신을 지원하는 모든에 대한 이메일 수신 엔드포인트 AWS 리전 가 AWS 일반 참조 나열됩니다.

1. Amazon SES에서 먼저 [도메인 ID를 만들고 확인해야](verify-addresses-and-domains.md) 합니다.

1. 다음으로 도메인의 DNS 설정에 [MX 레코드를 게시하여](receiving-email-mx-record.md) 도메인에 대한 메일을 수락할 수 있는 메일 서버를 지정해야 합니다 (MX 레코드는 Amazon SES를 사용하는 AWS 리전의 메일을 수신하는 Amazon SES 엔드포인트를 참조해야 합니다.)

1. 마지막으로 수신 규칙 작업을 실행하려면 [ Amazon SES에 다른 리소스에 액세스할 수 있는 권한을 부여](receiving-email-permissions.md)해야 합니다. AWS 

## 규칙 세트 및 수신 규칙 만들기
<a name="receipt-rules-create-rule-settings"></a>

이 연습은 먼저 규칙을 포함하는 규칙 세트를 만들고 **규칙 만들기** 마법사를 사용하여 수신 규칙을 만들고 정의하고 정렬합니다. 마법사에는 규칙 설정을 정의하고, 수신자 조건을 추가하고, 작업을 추가하고, 모든 설정을 검토할 수 있는 네 개의 화면이 있습니다.

**콘솔을 사용하여 규칙 세트 및 수신 규칙을 만들려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/) Amazon SES 콘솔을 엽니다.

1. 탐색 창의 **이메일 수신**에서 **Email Receiving(이메일 수신)**을 선택합니다.
**참고**  
계정이 SES에서 이메일 수신을 지원하지 않는 AWS 리전 에 있는 경우 SES 콘솔의 왼쪽 탐색 창에 *이메일 수신*이 표시되지 않습니다. [사전 조건](#receipt-rules-prerequisites)에 나열된 첫 번째 항목을 참조하세요.

1. **Email receiving**(이메일 수신) 창의 **Receipt rule sets**(수신 규칙 세트) 탭에서 **Create rule set**(규칙 세트 만들기)를 선택합니다.

1. 규칙 세트에 고유한 이름을 입력하고 **Create rule set(규칙 세트 만들기)**를 선택합니다.

1. **Create rule(규칙 만들기)**을 선택하면 **규칙 만들기** 마법사가 열립니다.

1. **규칙 설정 정의** 페이지의 **수신 규칙 세부 정보**에서 **Rule name(규칙 이름)**을 입력합니다.

1. 만든 후 Amazon SES에서 이 규칙을 실행하지 않도록 하려면 **상태**에서 **Enabled(활성화됨)** 확인란을 선택 취소합니다. 또는 이 옵션을 선택한 상태로 둡니다.

1. (선택 사항) Amazon SES가 보안 연결을 통하지 않고 전송되는 수신 메시지를 거부할 수 있도록 하려면 **보안 및 보호 옵션**의 **Transport Layer Security(TLS)**에서 **Required(필수)**를 선택합니다.

1. (선택 사항) Amazon SES에서 수신 이메일에 대한 스팸 및 바이러스 검사를 수행하려면 **스팸 및 바이러스 검색**에 대해 **Enabled(활성화)**를 선택합니다.

1. 다음 단계로 진행하려면 **Next(다음)**를 선택합니다.

1. (선택 사항) **수신자 조건 추가** 페이지에서 다음 절차에 따라 하나 이상의 수신자 조건을 지정합니다. 수신 규칙당 최대 100명의 수신자 조건을 지정할 수 있습니다.

   1. **수신자 조건**에서 **Add new recipient condition(새로운 수신자 조건 추가)**를 선택하여 수신 규칙을 적용할 수신 이메일주소나 도메인을 지정합니다. 다음 표는 주소 *user@example.com*을 사용하여 수신자 조건을 지정하는 방식을 나타낸 것입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html)
**중요**  
다수의 Amazon SES 계정이 공통 도메인을 통해 이메일을 수신하는 경우(예: 한 회사의 여러 팀들이 각각 별도의 Amazon SES 계정을 가지고 있는 경우) Amazon SES는 각 계정마다 일치하는 수신 규칙을 모두 동시에 처리합니다. 이때 하나의 계정이 반송 메일을 생성하는 반면 다른 계정이 이메일을 허용하는 상황이 발생할 수도 있습니다.  
따라서 조직 내에서 Amazon SES를 사용하는 다른 팀과 협의하여 각 계정마다 고유한 수신 규칙을 사용하고 이러한 규칙이 서로 겹치지 않도록 하는 것이 바람직합니다. 이러한 상황에서는 그룹 또는 팀에 고유한 이메일 주소나 하위 도메인만 사용하도록 수신 규칙을 구성하는 것이 가장 좋습니다.

   1. 추가할 각 수신자 조건에 대해 이 단계를 반복합니다. 수신자 조건의 추가를 마치면 **Next(다음)**를 선택합니다.

1. **작업 추가** 페이지에서 다음 절차를 따라 수신 규칙에 작업을 하나 이상 추가합니다.

   1. **새 작업 추가** 메뉴를 열고 다음 작업 유형 중 하나를 선택합니다.
      + **[헤더 추가](receiving-email-action-add-header.md)** - 이 작업은 수신 이메일에 사용자 지정 헤더를 추가합니다.
      + **[반송 응답 반환](receiving-email-action-bounce.md)** - 이 작업은 발신자에게 반송 응답을 반환하여 이메일 수신을 거부합니다.
      + **[ Lambda 함수 호출](receiving-email-action-lambda.md)** -이 작업은 AWS Lambda 함수를 통해 코드를 호출합니다.
      + **[S3 버킷으로 전송](receiving-email-action-s3.md)** - 수신한 이메일을 Amazon Simple Storage Service(S3) 버킷에 저장합니다.
      + **[Amazon SNS 주제에 게시하기](receiving-email-action-sns.md)** - 이 작업은 Amazon Simple Notification Service(SNS) 주제로 이메일 전체를 게시합니다.
      + **[규칙 세트 중지](receiving-email-action-stop.md)** - 수신 규칙 세트의 평가가 종료됩니다.
      + **[Amazon WorkMail과 통합](receiving-email-action-workmail.md)** - 이 작업은 Amazon WorkMail과 통합합니다.

      이러한 작업에 대한 자세한 내용은 [작업 옵션](receiving-email-action.md) 섹션을 참조하세요.

   1. 정의할 각 작업에 대해 이 단계를 반복합니다. 여러 작업이 정의되어 있는 경우 작업 컨테이너 내에서 위쪽/아래쪽 화살표를 사용하여 작업을 재정렬할 수 있습니다. **Next(다음)**를 선택하여 **검토** 페이지로 이동합니다.

1. **검토** 페이지에서 규칙의 설정과 작업을 검토합니다. 변경을 해야 하는 경우 창의 왼쪽에 있는 **Edit(편집)** 옵션을 선택하여 편집하려는 내용이 포함된 단계로 바로 이동합니다. **재정렬** 열의 위쪽/아래쪽 화살표를 사용하여 **검토** 페이지의 **작업** 테이블에 나열된 작업 순서를 선택적으로 변경할 수 있습니다. 

1. 계속 진행할 준비가 되었으면 **Create rule(규칙 만들기)**을 선택합니다.

1. 규칙 세트를 즉시 적용하려면 해당 규칙 세트의 확인 페이지에서 **Set as active**(활성으로 설정)를 선택합니다.

### 만든 후 규칙 수정
<a name="receipt-rules-post-modifications"></a>

규칙 세트를 만든 후에는 규칙 세트와 규칙 세트에 포함된 수신 규칙을 모두 편집할 수 있습니다. 편집이 가능할 뿐만 아니라 규칙 세트나 규칙을 복제하여 새 규칙을 신속하게 만들 수 있는 옵션도 있습니다. 다음 목록에는 규칙 세트 및 수신 규칙에 대해 사용 가능한 수정 사항이 나와 있습니다.
+ **규칙 세트**는 이름, 상태 및 만든 날짜와 함께 나열됩니다. 규칙 세트에 대한 수정 옵션은 다음과 같습니다.
  + **Set as active/inactive(활성/비활성으로 설정)** 토글 버튼은 상태 설정 사이를 전환합니다.
  + **Duplicate(복제)** 버튼을 클릭하면 규칙 세트가 복사됩니다. 고유한 이름을 입력하라는 메시지가 표시됩니다.
  + **Delete(삭제)** 버튼을 클릭하면 규칙 세트가 삭제됩니다. 이러한 되돌릴 수 없는 작업을 확인하라는 메시지가 표시됩니다.
+ **수신 규칙**은 이름, 상태, 보안 및 순서와 함께 나열됩니다. 수신 규칙의 수정 옵션은 다음과 같습니다.
  + **위쪽/아래쪽 화살표**를 사용하여 규칙 세트 내에서 규칙 실행 순서를 재정렬할 수 있습니다.
  + **Duplicate(복제)** 버튼을 클릭하면 선택한 규칙의 복사본을 만듭니다. 고유한 이름을 입력하라는 메시지가 표시됩니다.
  + **Edit(편집)** 버튼을 클릭하면 규칙 설정, 수신자 조건 및 작업과 같은 파라미터를 편집할 수 있도록 선택한 규칙이 열립니다.
  + **Delete(삭제)** 버튼을 클릭하면 선택한 규칙이 삭제됩니다. 이러한 되돌릴 수 없는 작업을 확인하라는 메시지가 표시됩니다.
  + **Create rule(규칙 만들기)** 버튼을 클릭하면 새 규칙을 만들고 현재 규칙 세트에 추가할 수 있습니다.

# 작업 옵션
<a name="receiving-email-action"></a>

Amazon SES 이메일 수신을 위한 수신 규칙은 순서를 매긴 작업 목록을 포함합니다. 이 섹션에서는 작업 유형에 따른 구체적인 옵션에 대해 설명합니다.

작업의 유형은 다음과 같습니다.
+ [헤더 추가 작업](receiving-email-action-add-header.md)
+ [반송 메일 응답 반환 작업](receiving-email-action-bounce.md)
+ [Lambda 함수 호출 작업](receiving-email-action-lambda.md)
+ [S3 버킷으로 전송 작업](receiving-email-action-s3.md)
+ [Amazon SNS 주제에 게시하는 작업](receiving-email-action-sns.md)
+ [규칙 세트 중지 작업](receiving-email-action-stop.md)
+ [Amazon WorkMail과 통합 작업](receiving-email-action-workmail.md)

# 헤더 추가 작업
<a name="receiving-email-action-add-header"></a>

[**Add Header**] 작업은 수신 이메일에 사용자 지정 헤더를 추가합니다. 이 작업은 보통 다른 작업과 연계해서 사용합니다. 이 작업의 옵션은 다음과 같습니다.
+ **헤더 이름 - **추가할 헤더의 이름입니다. 영숫자(a\$1z, A\$1Z, 0\$19)와 대시만 사용해 1\$150자 사이로 작성해야 합니다.
+ **헤더 값 - **추가할 헤더의 값입니다. 2048자 미만이어야 하며 줄바꿈 문자(\$1r 또는 \$1n)를 포함하지 않아야 합니다.

# 반송 메일 응답 반환 작업
<a name="receiving-email-action-bounce"></a>

**반송 메일** 작업은 발신자에게 반송 응답을 돌려보내 이메일 수신을 거부하고 설정에 따라 Amazon SNS를 통해 사용자에게 알립니다. 이 작업의 옵션은 다음과 같습니다.
+ **SMTP 응답 코드 - **[RFC 5321](https://tools.ietf.org/html/rfc5321)의 정의에 따르는 SMTP 응답 코드입니다.
+ **SMTP 상태 코드 - **[RFC 3463](https://tools.ietf.org/html/rfc3463)의 정의에 따르는 향상된 SMTP 상태 코드입니다.
+ **메시지 - **사람이 읽을 수 있는 텍스트로 반송 이메일에 포함됩니다.
+ **회신 발신자 - **반송 이메일 발신자의 이메일 주소입니다. 반송 이메일을 발신할 때 사용할 주소입니다. Amazon SES의 확인 절차를 거쳐야 합니다.
**참고**  
반송 메일 메시지는 사용자 지정 MAIL FROM 도메인을 통해 전송되지 않지만, SES에 의해 내부적으로 생성되고 `amazonses.com` DKIM 서명으로만 서명됩니다. 해결 방법으로 **회신 발신자** 옵션을 사용하여 반송 메시지의 이메일 주소를 설정합니다. 자세한 내용은 이 [AWS re:Post 문서](https://repost.aws/questions/QURvN-26L_SJOcY9JoSFgCdg/ses-receiving-return-bounce-response-action-not-sending-bounce)를 참조하세요.
+ **SNS 주제 - **설정에 따라 반송 이메일 전송 사실을 통지할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 작업을 설정할 때 **SNS 주제 만들기**를 선택하여 Amazon SNS 주제를 만들 수도 있습니다. Amazon SNS 주제에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요.
**참고**  
선택하는 Amazon SNS 주제는 이메일 수신 시 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.

이 필드에는 직접 값을 입력할 수도 있고, 반송 이유에 따라 SMTP 응답 코드, SMTP 상태 코드, 메시지를 자동으로 채워 넣는 템플릿을 선택할 수도 있습니다. 다음의 템플릿을 사용할 수 있습니다:
+ **메일박스가 존재하지 않음 - **SMTP 응답 코드 = 550, SMTP 상태 코드 = 5.1.1
+ **메시지가 너무 큼 -** SMTP 응답 코드 = 552, SMTP 상태 코드 = 5.3.4
+ **메일박스가 가득 참 - **SMTP 응답 코드 = 552, SMTP 상태 코드 = 5.2.2
+ **메시지 콘텐츠가 거부됨 -** SMTP 응답 코드 = 500, SMTP 상태 코드 = 5.6.1
+ **알 수 없는 오류 -** SMTP 응답 코드 = 554, SMTP 상태 코드 = 5.0.0
+ **일시적인 오류 - **SMTP 응답 코드 = 450, SMTP 상태 코드 = 4.0.0

필드에 사용자 지정 값을 입력하여 사용할 수 있는 추가 반송 코드는 [RFC 3463](https://tools.ietf.org/html/rfc3463)을 참조하세요.

# Lambda 함수 호출 작업
<a name="receiving-email-action-lambda"></a>

Lambda 작업은 Lambda 함수를 통해 코드를 호출하고, 설정에 따라 Amazon SNS를 통해 알립니다. 이 작업에는 다음 옵션 및 요구 사항이 있습니다.

**옵션**
+ **Lambda 함수 - **Lambda 함수의 ARN입니다. Lambda 함수 ARN의 한 가지 예는 *arn:aws:lambda:us-east-1:account-id:function:MyFunction*입니다.
+ **호출 유형 - **Lambda 함수의 호출 유형입니다. **RequestResponse** 호출 유형은 함수를 실행할 경우 즉각적인 응답이 발생한다는 것을 의미합니다. **Event** 호출 유형은 함수가 비동기식으로 호출된다는 것을 의미합니다. 해당 사용 사례에 반드시 동기식 실행이 필요한 경우가 아니라면 **이벤트(Event)** 호출 유형을 사용할 것을 권장합니다.

  [**RequestResponse**] 호출에는 30초의 요청 제한 시간이 있습니다.

  자세한 내용은 *AWS Lambda 개발자 가이드*의 [Lambda 함수 호출](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html)을 참조하세요.
+ **SNS 주제 - **지정된 Lambda 함수를 트리거한 후 알림을 전송할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 자세한 설명은 *Amazon Simple Notification Service 개발자 안내서*에서 [Amazon SNS 주제 생성](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)을 참조하세요.

**요구 사항**
+ 선택한 Lambda 함수는 이메일 수신에 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 있어야 합니다.
+ 선택한 Amazon SNS 주제는 이메일 수신에 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 있어야 합니다.

## Lambda 함수 작성하기
<a name="receiving-email-action-lambda-function"></a>

이메일을 처리할 때(즉, `Event` 호출 유형을 사용) Lambda 함수를 비동기식으로 호출할 수 있습니다. Lambda 함수에 전달하는 이벤트 객체는 인바운드 이메일 이벤트에 대한 메타데이터를 담고 있습니다. 이 메타데이터를 사용해 Amazon S3 버킷의 메시지 콘텐츠에 액세스할 수도 있습니다.

메일 흐름을 실제로 제어하고 싶다면 Lambda 함수를 동기식으로 호출해야 합니다(즉, `RequestResponse` 호출 유형 사용). 그러면 Lambda 함수가 두 개의 인수가 있는 `callback` 메서드를 호출합니다. 첫 번째 인수는 `null`이고 두 번째 인수는 `STOP_RULE`, `STOP_RULE_SET` 또는 `CONTINUE`로 설정된 `disposition` 속성입니다. 두 번째 인수가 `null`이거나 유효한 `disposition` 속성이 없는 경우, `CONTINUE` 실행 시와 마찬가지로 메일 흐름이 계속되어 작업과 규칙이 순서대로 처리됩니다.

예를 들어 Lambda 함수 코드의 끝에 다음 줄을 추가하면 수신 규칙 세트 처리를 중단시킬 수 있습니다.

```
callback( null, { "disposition" : "STOP_RULE_SET" });
```

 AWS Lambda 코드 샘플은 섹션을 참조하세요[Lambda 함수 예제](receiving-email-action-lambda-example-functions.md). 고급 사용 사례 예시는 다음([사용 사례](receiving-email-action-lambda-example-use-cases.md))을 참조하세요.

### 입력 형식
<a name="receiving-email-action-lambda-input"></a>

Amazon SES는 JSON 형식으로 Lambda 함수에 정보를 전달합니다. 이 최고 레벨 객체는 `Records` 배열을 포함하며, 이 배열에는 `eventSource`, `eventVersion`, `ses` 속성이 들어 있습니다. `ses` 객체에는 `receipt`와 `mail` 객체가 있고, [알림 내용](receiving-email-notifications-contents.md)에서 설명한 Amazon SNS 알림과 형식이 동일합니다.

Amazon SES가 Lambda로 전달하는 데이터에는 메시지에 대한 메타데이터와 여러 이메일 헤더가 포함됩니다. 그러나 메시지의 본문은 포함되어 있지 않습니다.

다음은 Amazon SES가 Lambda 함수에 제공하는 입력 데이터의 구조를 세부적으로 나타낸 것입니다.

```
{
   "Records": [
      {
        "eventSource": "aws:ses",
        "eventVersion": "1.0",
        "ses": {
           "receipt": {
               <same contents as SNS notification>
            },
           "mail": {
               <same contents as SNS notification>
           }
         }
     }
   ]
}
```

### 반환 값
<a name="receiving-email-action-lambda-function-return-values"></a>

Lambda 함수는 다음 값 중 하나를 반환하여 메일 흐름을 제어합니다.
+ `STOP_RULE` - 현재 수신 규칙의 작업 수행은 중단하되 다음 수신 규칙을 처리할 수 있습니다.
+ `STOP_RULE_SET` - 작업 또는 수신 규칙 처리를 완전히 중단합니다.
+ `CONTINUE` 또는 기타 무효 값 - 다음 작업과 수신 규칙을 처리할 수 있습니다.

**Topics**
+ [Lambda 함수 작성하기](#receiving-email-action-lambda-function)
+ [샘플 수신 이메일 이벤트](receiving-email-action-lambda-event.md)
+ [사용 사례](receiving-email-action-lambda-example-use-cases.md)
+ [Lambda 함수 예제](receiving-email-action-lambda-example-functions.md)

# 샘플 수신 이메일 이벤트
<a name="receiving-email-action-lambda-event"></a>

수신 이메일 이벤트를 Lambda 함수로 보내는 두 가지 방법이 있습니다. 첫 번째 방법은 Lambda 작업을 수신 규칙에 사용하여 이벤트 레코드를 함수로 직접 보내는 것입니다. 두 번째 방법은 Amazon SNS 작업을 수신 규칙에 사용하여 이벤트 레코드를 Amazon SNS로 보낸 후 Lambda 함수를 구독 엔드포인트로 Amazon SNS 주제에 추가하는 것입니다.

이 단원에는 Amazon SES에서 Lambda로 보낼 수 있는 이벤트 레코드의 예제가 나와 있습니다. 이 예제를 사용하여 테스트 Lambda 함수를 만들 수 있습니다.

**참고**  
이 단원의 예제에는 줄 바꿈이 있어서 읽기 쉽습니다. 이 단원의 예제를 복사할 때는 추가 줄 바꿈을 제거해야 유효한 JSON 객체가 생깁니다.

## Lambda 작업으로 제공되는 이벤트 레코드
<a name="receiving-email-action-lambda-event-lambdaaction"></a>

Lambda 작업을 수신 규칙에 추가하면 수신 메시지를 받을 때마다 Amazon SES가 Lambda에 이벤트 레코드를 보냅니다. 수신 메시지의 여러 이메일 헤더에 대한 정보와 Amazon SES가 수신 메시지에 대해 수행하는 여러 테스트의 결과가 이 이벤트에 포함됩니다. 하지만 수신 이메일의 본문은 생략됩니다.

다음 예제에서는 이 이벤트 레코드에 일반적으로 포함되는 값을 보여줍니다.

```
{
  "Records": [{
    "eventSource": "aws:ses",
    "eventVersion": "1.0",
    "ses": {
      "mail": {
        "timestamp": "2019-08-05T21:30:02.028Z",
        "source": "prvs=144d0cba7=sender@example.com",
        "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000",
        "destination": ["recipient@example.com"],
        "headersTruncated": false,
        "headers": [{
          "name": "Return-Path",
          "value": "<prvs=144d0cba7=sender@example.com>"
        }, {
          "name": "Received",
          "value": "from smtp.example.com [203.0.113.0]) by inbound-smtp.us-east-1.amazonaws.com 
                    with SMTP id bsvpsoklfhu7u50iur7h0kk9a2ou0r7iexample for recipient@example.com;
                    Mon, 05 Aug 2019 21:30:02 +0000 (UTC)"
        }, {
          "name": "X-SES-Spam-Verdict",
          "value": "PASS"
        }, {
          "name": "X-SES-Virus-Verdict",
          "value": "PASS"
        }, {
          "name": "Received-SPF",
          "value": "pass (spfCheck: domain of example.com designates 203.0.113.0 as permitted sender) 
                    client-ip=203.0.113.0; envelope-from=prvs=144d0cba42=sender@example.com; helo=
                    smtp.example.com;"
        }, {
          "name": "Authentication-Results",
          "value": "amazonses.com; spf=pass (spfCheck: domain of example.com designates 203.0.113.0
                    as permitted sender) client-ip=203.0.113.0; envelope-from=prvs=144d0cba42=
                    sender@example.com; helo=smtp.example.com; dkim=pass header.i=@example.com; 
                    dmarc=none header.from=example.com;"
        }, {
          "name": "X-SES-RECEIPT",
          "value": "AEFBQUFBQUFBQUFHbFo0VU81VzVuYmRDNm51nhTVWpabDh6J4V2l5cG5PSHFtNzlBeUk90example"
        }, {
          "name": "X-SES-DKIM-SIGNATURE",
          "value": "a=rsa-sha256; q=dns/txt; b=Cm1emU30VcD6example=; c=relaxed/simple; s=6gbrjpgwjs
                    5zn6fwqknexample; d=amazonses.com; t=1567719002; v=1; bh=DSofsjAoUvyZj6YsBDP5en
                    pRO1otGb7Nes0Qexample=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:
                    Content-Type:X-SES-RECEIPT;"
        }, {
          "name": "DKIM-Signature",
          "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; i=@example.com; q=dns/txt; 
                    s=example12345; t=1567719001; x=1599255001; h=from:to:subject:date:message-id:
                    references:in-reply-to:mime-version; bh=sjAoUvyZj6YsBDP5enpRO1otGb7s0Qexample=; 
                    b=EQw2D4RLOW2IHE9OgfEA4WXp+AENJtaD2+63wmd5J+d+t/xoaiKUGClOS7WhpyOmlipryOz+iOhxU
                    v350xJIHjLTi9Jsnlw76mRK8o4770TaUz620joCVN21n4cxsrRZpv+1kS0EcAxaF30pmwlni+XT4ems
                    Vxn7zO0I8example=;"
        }, {
          "name": "Received",
          "value": "from mail.example.com (mail.example.com [203.0.113.0]) by email-inbound-relay-
                    1d-9ec21598.us-east-1.example.com (Postfix) with ESMTPS id 57F83A2042 for 
                    <recipient@example.com>; Mon, 5 Aug 2019 21:29:58 +0000 (UTC)"
        }, {
          "name": "From",
          "value": "\"Doe, John\" <sender@example.com>"
        }, {
          "name": "To",
          "value": "\"recipient@example.com\" <recipient@example.com>"
        }, {
          "name": "Subject",
          "value": "This is a test"
        }, {
          "name": "Thread-Topic",
          "value": "This is a test"
        }, {
          "name": "Thread-Index",
          "value": "AQHVZDAaQ58yKI8q7kaAjkhC5stGexample"
        }, {
          "name": "Date",
          "value": "Mon, 5 Aug 2019 21:29:57 +0000"
        }, {
          "name": "Message-ID",
          "value": "<F8098FDD-49A3-442D-9935-F6112example@example.com>"
        }, {
          "name": "References",
          "value": "<1FCED16B-F6B0-4506-A6F0-594DFexample@example.com>"
        }, {
          "name": "In-Reply-To",
          "value": "<1FCED16B-F6B0-4506-A6F0-594DFexample@example.com>"
        }, {
          "name": "Accept-Language",
          "value": "en-US"
        }, {
          "name": "Content-Language",
          "value": "en-US"
        }, {
          "name": "X-MS-Has-Attach",
          "value": ""
        }, {
          "name": "X-MS-TNEF-Correlator",
          "value": ""
        }, {
          "name": "x-ms-exchange-messagesentrepresentingtype",
          "value": "1"
        }, {
          "name": "x-ms-exchange-transport-fromentityheader",
          "value": "Hosted"
        }, {
          "name": "x-originating-ip",
          "value": "[203.0.113.0]"
        }, {
          "name": "Content-Type",
          "value": "multipart/alternative; boundary=\"_000_F8098FDD49A344F6112B195BDAexamplecom_\""
        }, {
          "name": "MIME-Version",
          "value": "1.0"
        }, {
          "name": "Precedence",
          "value": "Bulk"
        }],
        "commonHeaders": {
          "returnPath": "prvs=144d0cba7=sender@example.com",
          "from": ["\"Doe, John\" <sender@example.com>"],
          "date": "Mon, 5 Aug 2019 21:29:57 +0000",
          "to": ["\"recipient@example.com\" <recipient@example.com>"],
          "messageId": "<F8098FDD-49A3-442D-9935-F6112B195BDA@example.com>",
          "subject": "This is a test"
        }
      },
      "receipt": {
        "timestamp": "2019-08-05T21:30:02.028Z",
        "processingTimeMillis": 1205,
        "recipients": ["recipient@example.com"],
        "spamVerdict": {
          "status": "PASS"
        },
        "virusVerdict": {
          "status": "PASS"
        },
        "spfVerdict": {
          "status": "PASS"
        },
        "dkimVerdict": {
          "status": "PASS"
        },
        "dmarcVerdict": {
          "status": "GRAY"
        },
        "action": {
          "type": "Lambda",
          "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:IncomingEmail",
          "invocationType": "Event"
        }
      }
    }
  }]
}
```

## Amazon SNS 작업으로 제공되는 이벤트 레코드
<a name="receiving-email-action-lambda-event-snsaction"></a>

Amazon SNS 작업을 수신 규칙에 추가하면 이메일의 전체 내용이 알림에 포함됩니다. Lambda 함수가 이메일 본문을 처리하게 하려면 Amazon SNS 작업을 대신 수신 규칙에 추가해야 합니다. 그런 다음 Amazon SNS에서 Lambda 함수를 Amazon SNS 함수에 구독합니다. 이렇게 구성하면 Amazon SNS 주제에서 알림을 받을 때 Lambda 함수가 활성화됩니다.

```
{
    'Records': [
        {
            'EventSource': 'aws:sns',
            'EventVersion': '1.0',
            'EventSubscriptionArn': 'arn:aws:sns:us-east-1:123456789012:IncomingEmail:12345678',
            'Sns': {
                'Type': 'Notification',
                'MessageId': 'EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000',
                'TopicArn': 'arn:aws:sns:us-east-1:123456789012:IncomingEmail',
                'Subject': 'Amazon SES Email Receipt Notification',
                'Message': <message content—see below>,
                'Timestamp': '2019-09-06T18:52:16.076Z',
                'SignatureVersion': '1',
                'Signature': '012345678901example==',
                'SigningCertUrl': 'https://sns.us-east-1.amazonaws.com/SimpleNotificationService
                                   -01234567890123456789012345678901.pem',
                'UnsubscribeUrl': 'https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&
                                   SubscriptionArn=arn:aws:sns:us-east-1:0123456789012:IncomingEmail:
                                   0b863538-3f32-462e-9c89-8d8e0example',
                'MessageAttributes': {}
            }
        }
    ]
}
```

`Message` 속성에는 JSON으로 인코딩된 문자열이 포함됩니다. 이 문자열에는 메시지의 헤더 및 콘텐츠가 포함되어 있습니다. 메시지 본문 자체는 base64로 인코딩됩니다. Lambda 함수에 메시지 본문을 사용하려면 먼저 `Message` 속성을 디코딩한 다음 `Content` 객체를 디코딩해야 합니다.

다음 예제에서는 `Message` 속성에 포함된 값을 보여줍니다.

```
{
  "notificationType": "Received",
  "mail": {
    "timestamp": "2019-09-06T18:52:14.965Z",
    "source": "0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com",
    "messageId": "12345678901example",
    "destination": ["recipient@example.com"],
    "headersTruncated": false,
    "headers": [{
      "name": "Return-Path",
      "value": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com>"
    }, {
      "name": "Received",
      "value": "from a1-23.smtp-out.amazonses.com (a1-23.smtp-out.amazonses.com [203.0.113.0]) by
                inbound-smtp.us-east-1.amazonaws.com with SMTP id
                12345678901example for recipient@example.com; Fri, 06 Sep 2019
                18:52:14 +0000 (UTC)"
    }, {
      "name": "X-SES-Spam-Verdict",
      "value": "PASS"
    }, {
      "name": "X-SES-Virus-Verdict",
      "value": "PASS"
    }, {
      "name": "Received-SPF",
      "value": "pass (spfCheck: domain of amazonses.com designates 203.0.113.0 as permitted sender)
                client-ip=203.0.113.0; envelope-from=0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example
                -000000@amazonses.com; helo=a1-23.smtp-out.amazonses.com;"
    }, {
      "name": "Authentication-Results",
      "value": "amazonses.com; spf=pass (spfCheck: domain of amazonses.com designates 203.0.113.0
                as permitted sender) client-ip=203.0.113.0; envelope-from=0100016d07eb7477-8e1938ce
                -475e-4e4b-89cb-example-000000@amazonses.com; helo=a1-23.smtp-out.amazonses.com;
                dkim=pass header.i=@amazonses.com; dmarc=none header.from=example.com;"
    }, {
      "name": "X-SES-RECEIPT",
      "value": "AEFBQUFBQUFBQUFFQkx0QUJZZENEXAMPLE="
    }, {
      "name": "X-SES-DKIM-SIGNATURE",
      "value": "a=rsa-sha256; q=dns/txt; b=d5azwgA2iBqAjA4NBm1ARzjJ95raRmy4G84iVdd3x2JzSHeUnQuTuLmJ
                AqRrYY3WpMIVRFy01hITaguCVjUPWBR0xF6fCEXH85cf3RNeFQyLfWZqoXKfBdjFRV+13troDterH2MxBUL
                8rjzcvdHetl0ImwlaK2PGmePTexample=; c=relaxed/simple; s=EXAMPLE7c191be45-e9aedb9a-02
                f9-4d12-a87d-dd0099a07f8a-000000; d=amazonses.com; t=1567795935; v=1; bh=CZ1SghsYaA
                6SSCbitzsLISeFoNlpdtH1Pyiexample=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-
                Version:Content-Type:X-SES-RECEIPT;"
    }, {
      "name": "DKIM-Signature",
      "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=EXAMPLE7c191be45-e9aedb9a-02f9-
                4d12-a87d-dd0099a07f8a-000000; d=amazonses.com; t=1567795934; h=From:To:Subject:
                MIME-Version:Content-Type:Message-ID:Date:Feedback-ID; bh=CZ1SghsYaA6SSCbitzsLISeFo
                NlpdtH1Pyiexample=; b=L6VXqR1PSN/FYqJI/VAfPRKFgtakcHCYJvuJqVYbuJT8I3FOhqOvkbcgHxOgs
                woxPfvGrL6S53H8Er5Do/CPvOM4Tx3ilE+a0GTYVLjKmwltNeN09YWlJAoqG5KMQPZUxRYaNvYPInLzUdGi
                rdjkbSIgZEnrvq5MzaMWexample="
    }, {
      "name": "From",
      "value": "sender@example.com"
    }, {
      "name": "To",
      "value": "recipient@example.com"
    }, {
      "name": "Subject",
      "value": "Amazon SES Test"
    }, {
      "name": "MIME-Version",
      "value": "1.0"
    }, {
      "name": "Content-Type",
      "value": "multipart/alternative;  boundary=\"----=_Part_869787_396523212.15677example\""
    }, {
      "name": "Message-ID",
      "value": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@email.amazonses.com>"
    }, {
      "name": "Date",
      "value": "Fri, 6 Sep 2019 18:52:14 +0000"
    }, {
      "name": "X-SES-Outgoing",
      "value": "2019.09.06-203.0.113.0"
    }, {
      "name": "Feedback-ID",
      "value": "1.us-east-1.ZitRoTk0xziun8WEJevt+cSJ17QNuCwulg2D2v3nrT0=:AmazonSES"
    }],
    "commonHeaders": {
      "returnPath": "0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@amazonses.com",
      "from": ["sender@example.com"],
      "date": "Fri, 6 Sep 2019 18:52:14 +0000",
      "to": ["recipient@example.com"],
      "messageId": "<0100016d07eb7477-8e1938ce-475e-4e4b-89cb-example-000000@email.amazonses.com>",
      "subject": "Amazon SES Test"
    }
  },
  "receipt": {
    "timestamp": "2019-09-06T18:52:14.965Z",
    "processingTimeMillis": 1098,
    "recipients": ["recipient@example.com"],
    "spamVerdict": {
      "status": "PASS"
    },
    "virusVerdict": {
      "status": "PASS"
    },
    "spfVerdict": {
      "status": "PASS"
    },
    "dkimVerdict": {
      "status": "GRAY"
    },
    "dmarcVerdict": {
      "status": "GRAY"
    },
    "action": {
      "type": "SNS",
      "topicArn": "arn:aws:sns:us-east-1:123456789012:IncomingEmail",
      "encoding": "BASE64"
    }
  },
  "content": "UmV0dXJuLVBhdGg6IDwwMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLTQ3NWUtNGU0Yi04OWNiLWV4YW1wbGUtM
              DAwMDAwQGFtYXpvbnNlcy5jb20+ClJlY2VpdmVkOiBmcm9tIGExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb2
              0gKGExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb20gWzIwMy4wLjExMy4wXSkKIGJ5IGluYm91bmQtc210cC5
              1cy1lYXN0LTEuYW1hem9uYXdzLmNvbSB3aXRoIFNNVFAgaWQgZW5xMTBpYW1lMXFjdTMxamg1ZGEyZ244OWlt
              dm90Mms2ZXhhbXBsZQogZm9yIHJlY2lwaWVudEBleGFtcGxlLmNvbTsKIEZyaSwgMDYgU2VwIDIwMTkgMTg6N
              TI6MTQgKzAwMDAgKFVUQykKWC1TRVMtU3BhbS1WZXJkaWN0OiBQQVNTClgtU0VTLVZpcnVzLVZlcmRpY3Q6IF
              BBU1MKUmVjZWl2ZWQtU1BGOiBwYXNzIChzcGZDaGVjazogZG9tYWluIG9mIGFtYXpvbnNlcy5jb20gZGVzaWd
              uYXRlcyAyMDMuMC4xMTMuMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKSBjbGllbnQtaXA9MjAzLjAuMTEzLjA7IGVu
              dmVsb3BlLWZyb209MDEwMDAxNmQwN2ViNzQ3Ny04ZTE5MzhjZS00NzVlLTRlNGItODljYi1leGFtcGxlLTAwM
              DAwMEBhbWF6b25zZXMuY29tOyBoZWxvPWExLTIzLnNtdHAtb3V0LmFtYXpvbnNlcy5jb207CkF1dGhlbnRpY2
              F0aW9uLVJlc3VsdHM6IGFtYXpvbnNlcy5jb207CiBzcGY9cGFzcyAoc3BmQ2hlY2s6IGRvbWFpbiBvZiBhbWF
              6b25zZXMuY29tIGRlc2lnbmF0ZXMgMjAzLjAuMTEzLjAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlw
              PTIwMy4wLjExMy4wOyBlbnZlbG9wZS1mcm9tPTAxMDAwMTZkMDdlYjc0NzctOGUxOTM4Y2UtNDc1ZS00ZTRiL
              Tg5Y2ItZXhhbXBsZS0wMDAwMDBAYW1hem9uc2VzLmNvbTsgaGVsbz1hMS0yMy5zbXRwLW91dC5hbWF6b25zZX
              MuY29tOwogZGtpbT1wYXNzIGhlYWRlci5pPUBhbWF6b25zZXMuY29tOwogZG1hcmM9bm9uZSBoZWFkZXIuZnJ
              vbT1leGFtcGxlLmNvbTsKWC1TRVMtUkVDRUlQVDogQUVGQlFVRkJRVUZCUVVGRlFreDBRVUpaWkVORVhBTVBM
              RT0KWC1TRVMtREtJTS1TSUdOQVRVUkU6IGE9cnNhLXNoYTI1NjsgcT1kbnMvdHh0OyBiPWQ1YXp3Z0EyaUJxQ
              WpBNE5CbTFBUnpqSjk1cmFSbXk0Rzg0aVZkZDN4Mkp6U0hlVW5RdVR1TG1KQXFScllZM1dwTUlWUkZ5MDFoSV
              RhZ3VDVmpVUFdCUjB4RjZmQ0VYSDg1Y2YzUk5lRlF5TGZXWnFvWEtmQmRqRlJWKzEzdHJvRHRlckgyTXhCVUw
              4cmp6Y3ZkSGV0bDBJbXdsYUsyUEdtZVBUZXhhbXBsZT07IGM9cmVsYXhlZC9zaW1wbGU7IHM9RVhBTVBMRTdj
              MTkxYmU0NS1lOWFlZGI5YS0wMmY5LTRkMTItYTg3ZC1kZDAwOTlhMDdmOGEtMDAwMDAwOyBkPWFtYXpvbnNlc
              y5jb207IHQ9MTU2Nzc5NTkzNTsgdj0xOyBiaD1DWjFTZ2hzWWFBNlNTQ2JpdHpzTElTZUZvTmxwZHRIMVB5aW
              V4YW1wbGU9OyBoPUZyb206VG86Q2M6QmNjOlN1YmplY3Q6RGF0ZTpNZXNzYWdlLUlEOk1JTUUtVmVyc2lvbjp
              Db250ZW50LVR5cGU6WC1TRVMtUkVDRUlQVDsKREtJTS1TaWduYXR1cmU6IHY9MTsgYT1yc2Etc2hhMjU2OyBx
              PWRucy90eHQ7IGM9cmVsYXhlZC9zaW1wbGU7CglzPUVYQU1QTEU3YzE5MWJlNDUtZTlhZWRiOWEtMDJmOS00Z
              DEyLWE4N2QtZGQwMDk5YTA3ZjhhLTAwMDAwMDsgZD1hbWF6b25zZXMuY29tOyB0PTE1Njc3OTU5MzQ7CgloPU
              Zyb206VG86U3ViamVjdDpNSU1FLVZlcnNpb246Q29udGVudC1UeXBlOk1lc3NhZ2UtSUQ6RGF0ZTpGZWVkYmF
              jay1JRDsKCWJoPUNaMVNnaHNZYUE2U1NDYml0enNMSVNlRm9ObHBkdEgxUHlpTWV4YW1wbGU9OwoJYj1leGFt
              cGxlPQpGcm9tOiBzZW5kZXJAZXhhbXBsZS5jb20KVG86IHJlY2lwaWVudEBleGFtcGxlLmNvbQpTdWJqZWN0O
              iBBbWF6b24gU0VTIFRlc3QKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZX
              JuYXRpdmU7IAoJYm91bmRhcnk9Ii0tLS09X1BhcnRfODY5Nzg3XzM5NjUyMzIxMi4xNTY3N2V4YW1wbGUiCk1
              lc3NhZ2UtSUQ6IDwwMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLTQ3NWUtNGU0Yi04OWNiLWV4YW1wbGUtMDAw
              MDAwQGVtYWlsLmFtYXpvbnNlcy5jb20+CkRhdGU6IEZyaSwgNiBTZXAgMjAxOSAxODo1MjoxNCArMDAwMApYL
              VNFUy1PdXRnb2luZzogMjAxOS4wOS4wNi0yMDMuMC4xMTMuMApGZWVkYmFjay1JRDogMS51cy1lYXN0LTEuWm
              l0Um9UazB4eml1bjhXRUpldnQrZXhhbXBsZT06QW1hem9uU0VTCgotLS0tLS09X1BhcnRfODY5Nzg3XzM5NjU
              yMzIxMi4xNTY3N2V4YW1wbGUKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl
              bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKCkFtYXpvbiBTRVMgVGVzdApUaGlzIGVtYWlsIHdhcyBzZW50I
              HdpdGggQW1hem9uIFNFUy4KLS0tLS0tPV9QYXJ0Xzg2OTc4N18zOTY1MjMyMTIuMTU2NzdleGFtcGxlCkNvbn
              RlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDd
              iaXQKCjxodG1sPgo8aGVhZD48L2hlYWQ+Cjxib2R5PgogIDxoMT5BbWF6b24gU0VTIFRlc3Q8L2gxPgogIDxw
              PlRoaXMgZW1haWwgd2FzIHNlbnQgd2l0aCBBbWF6b24gU0VTLjwvcD4KPGltZyBhbHQ9IiIgc3JjPSJodHRwO
              i8vZXhhbXBsZS5yLnVzLWVhc3QtMS5hd3N0cmFjay5tZS9JMC8wMTAwMDE2ZDA3ZWI3NDc3LThlMTkzOGNlLT
              Q3NWUtNGU0Yi04OWNiLWV4YW1wbGUtMDAwMDAwL3UtWUphaHRkTTJTclhZQ2QiIHN0eWxlPSJkaXNwbGF5OiB
              ub25lOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsiPgo8L2JvZHk+CjwvaHRtbD4KICAgICAgICAgICAgCi0t
              LS0tLT1fUGFydF84Njk3ODdfMzk2NTIzMjEyLjE1Njc3ZXhhbXBsZS0tCg=="
}
```

# 사용 사례
<a name="receiving-email-action-lambda-example-use-cases"></a>

다음은 Lambda 함수의 처리 결과로 메일 흐름을 제어하기 위해 설정할 수 있는 규칙의 예시입니다. 설명을 위해서 이 예시에서는 대부분 S3 작업을 처리 결과로 사용합니다.

## 사용 사례 1: 모든 도메인의 스팸 거부하기
<a name="receiving-email-action-lambda-example-use-cases-1"></a>

이 예시는 사용자의 모든 도메인에서 스팸을 거부하는 전역 규칙입니다. 규칙 2와 규칙 3은 모든 도메인에서 스팸을 거부한 후 도메인별 규칙을 적용할 수 있음을 보여 주기 위해 포함했습니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-1-rule-1"></a>

*수신자 목록: *Empty. 따라서 이 규칙은 확인 절차를 마친 모든 도메인의 모든 수신자에게 적용됩니다.

 *작업* 

1. 이메일이 스팸인 경우 `STOP_RULE_SET`를 반환하는 Lambda 작업(동기식). 그렇지 않은 경우에는 `CONTINUE`를 반환합니다. [Lambda 함수 예제](receiving-email-action-lambda-example-functions.md)에서 스팸 거부에 대해서는 Lambda 함수 예제를 참조하십시오.

### 규칙 2
<a name="receiving-email-action-lambda-example-use-cases-1-rule-2"></a>

*수신자 목록: *example1.com

 *작업* 

1. 아무 작업이나.

### 규칙 3
<a name="receiving-email-action-lambda-example-use-cases-1-rule-3"></a>

*수신자 목록: *example2.com

 *작업* 

1. 아무 작업이나.

## 사용 사례 2: 모든 도메인의 스팸 반송하기
<a name="receiving-email-action-lambda-example-use-cases-2"></a>

이 예시는 모든 도메인에서 스팸을 반송하는 전역 규칙을 보여 줍니다. 규칙 2와 규칙 3은 모든 도메인에서 스팸을 반송한 후 도메인별 규칙을 적용할 수 있음을 보여 주기 위해 포함했습니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-2-rule-1"></a>

*수신자 목록: *Empty. 따라서 이 규칙은 확인 절차를 마친 모든 도메인의 모든 수신자에게 적용됩니다.

 *작업* 

1. 이메일이 스팸인 경우 `CONTINUE`를 반환하는 Lambda 작업(동기식). 그렇지 않은 경우에는 `STOP_RULE`를 반환합니다.

1. 반송 작업("500 5.6.1. 메시지 콘텐츠 거부됨").

1. 중지 작업.

### 규칙 2
<a name="receiving-email-action-lambda-example-use-cases-2-rule-2"></a>

*수신자 목록: *example1.com

 *작업* 

1. 아무 작업이나.

### 규칙 3
<a name="receiving-email-action-lambda-example-use-cases-2-rule-3"></a>

*수신자 목록: *example2.com

 *작업* 

1. 아무 작업이나.

## 사용 사례 3: 가장 구체적인 규칙 적용하기
<a name="receiving-email-action-lambda-example-use-cases-3"></a>

이 예시에서는 중지 작업을 사용해 이메일이 다수의 규칙으로 처리되는 것을 방지합니다. 이 예시에서는 특정 주소에 대한 규칙이 하나 있고, 도메인 내의 모든 이메일 주소에 대한 규칙도 하나 있습니다. 중지 작업을 사용하면 메시지가 특정 이메일 주소에 대한 규칙과 일치할 경우 도메인 전체에 대한 전반적인 규칙으로는 처리하지 않습니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-3-rule-1"></a>

*수신자 목록: *user@example.com

 *작업* 

1. Lambda 작업(비동기식).

1. 중지 작업.

### 규칙 2
<a name="receiving-email-action-lambda-example-use-cases-3-rule-2"></a>

*수신자 목록: *example.com

 *작업* 

1. 아무 작업이나.

## 사용 사례 4: CloudWatch에 메일 이벤트 기록
<a name="receiving-email-action-lambda-example-use-cases-4"></a>

이 예시에서는 이메일 수신 시 메일을 Amazon SES에 저장하기에 앞서, 시스템을 통과하는 모든 메일에 대해 감사 로그를 작성하는 방법을 보여 줍니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-4-rule-1"></a>

*수신자 목록: *example.com

 *작업* 

1. 이벤트 객체를 CloudWatch 로그에 기록하는 Lambda 작업(비동기식). [Lambda 함수 예제](receiving-email-action-lambda-example-functions.md)의 예제 Lambda 함수는 CloudWatch에 기록합니다.

1. S3 작업.

## 사용 사례 5: DKIM 인증을 통과하지 못한 메일 거부하기
<a name="receiving-email-action-lambda-example-use-cases-5"></a>

이 예시는 수신 이메일을 모두 Amazon S3 버킷에 저장하되, 특정 이메일 주소로 가며 DKIM 인증을 통과하는 메일만 사용자의 자동화 이메일 애플리케이션으로 전송하는 방법을 보여 줍니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-5-rule-1"></a>

*수신자 목록: *example.com

 *작업* 

1. S3 작업.

1. 메시지가 DKIM 인증을 통과하지 못한 경우 `STOP_RULE_SET`를 반환하는 Lambda 작업(동기식). 그렇지 않은 경우에는 `CONTINUE`를 반환합니다.

### 규칙 2
<a name="receiving-email-action-lambda-example-use-cases-5-rule-2"></a>

*수신자 목록: *support@example.com

 *작업* 

1. 자동화 애플리케이션을 트리거하는 Lambda 작업(비동기식).

## 사용 사례 6: 제목에 따라 메일 필터링하기
<a name="receiving-email-action-lambda-example-use-cases-6"></a>

이 예시에서는 도메인의 수신 메일 중 제목에 '할인'이 들어간 메일을 모두 거부한 다음, 자동화 시스템으로 가야 할 메일을 따로 처리하고, 도메인의 나머지 수신자에게 가야 할 메일을 처리합니다.

### 규칙 1
<a name="receiving-email-action-lambda-example-use-cases-6-rule-1"></a>

*수신자 목록: *example.com

 *작업* 

1. 제목에 '할인'이라는 단어가 들어간 경우 `STOP_RULE_SET`를 반환하는 Lambda 작업(동기식). 그렇지 않은 경우에는 `CONTINUE`를 반환합니다.

### 규칙 2
<a name="receiving-email-action-lambda-example-use-cases-6-rule-2"></a>

*수신자 목록: *support@example.com

 *작업* 

1. 버킷 1에 대한 S3 작업.

1. 자동화 애플리케이션을 트리거하는 Lambda 작업(비동기식).

1. 중지 작업.

### 규칙 3
<a name="receiving-email-action-lambda-example-use-cases-6-rule-3"></a>

*수신자 목록: *example.com

 *작업* 

1. 버킷 2에 대한 S3 작업.

1. 도메인의 나머지 수신자에게 보낼 이메일을 처리하는 Lambda 작업(비동기식).

# Lambda 함수 예제
<a name="receiving-email-action-lambda-example-functions"></a>

이 주제는 메일 흐름을 제어하는 Lambda 함수의 예시를 소개합니다.

## 예제 1: 스팸 거부
<a name="receiving-email-action-lambda-example-functions-1"></a>

이 예제는 스팸 지표를 하나 이상 가진 메시지에 대한 처리를 중단합니다.

```
export const handler = async (event, context, callback) => {
    console.log('Spam filter');
    
    const sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    
    // Check if any spam check failed
    if (sesNotification.receipt.spfVerdict.status === 'FAIL'
            || sesNotification.receipt.dkimVerdict.status === 'FAIL'
            || sesNotification.receipt.spamVerdict.status === 'FAIL'
            || sesNotification.receipt.virusVerdict.status === 'FAIL') {
                
        console.log('Dropping spam');

        // Stop processing rule set, dropping message
        callback(null, {'disposition':'STOP_RULE_SET'});
    } else {
        callback(null, {'disposition':'CONTINUE'});   
    }
};
```

## 예제 2: 특정 헤더가 발견되면 계속
<a name="receiving-email-action-lambda-example-functions-2"></a>

이 예제는 이메일이 특정 헤더 값을 포함하는 경우에만 현재 규칙을 계속 처리합니다.

```
export const handler = async (event, context, callback) => {
    console.log('Header matcher');
 
    const sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    
    // Iterate over the headers
    for (let index in sesNotification.mail.headers) {
        const header = sesNotification.mail.headers[index];
        
        // Examine the header values
        if (header.name === 'X-Header' && header.value === 'X-Value') {
            console.log('Found header with value.');
            callback(null, {'disposition':'CONTINUE'});
            return;
        }
    }
    
    // Stop processing the rule if the header value wasn't found
    callback(null, {'disposition':'STOP_RULE'});
};
```

## 예제 3: Amazon S3에서 이메일 검색
<a name="receiving-email-action-lambda-example-functions-3"></a>

이 예제는 Amazon S3에서 이메일 원본을 가져와서 처리합니다.

**참고**  
그러려면 우선 S3 작업을 사용하는 Amazon S3에 이메일을 써야 합니다.
Lambda 함수에 S3 버킷에서 객체를 가져올 수 있는 IAM 권한이 있는지 확인합니다. 자세한 내용은 이 [AWS re:Post 문서](https://repost.aws/knowledge-center/lambda-execution-role-s3-bucket)를 참조하세요.
기본 Lambda 실행 제한 시간이 워크플로에 너무 짧을 수 있습니다. 시간을 늘리는 것이 좋습니다.

```
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; 
const bucketName = '<Your Bucket Name>';

export const handler = async (event, context, callback) => {
    const client = new S3Client();
    console.log('Process email');
  
    var sesNotification = event.Records[0].ses;
    console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
    console.log("MessageId: " + sesNotification.mail.messageId)
  
    const getObjectCommand = new GetObjectCommand({
        Bucket: bucketName,
        Key: sesNotification.mail.messageId
    });
  
    try {
        const response = await client.send(getObjectCommand);
        const receivedMail = await response.Body.transformToString();
        console.log(receivedMail);
        callback(null, {'disposition':'CONTINUE'})
    } catch (e) {
        // Perform error handling here
        console.log("Encountered S3 client error: "+ e, e.stack);
        callback(null, {'disposition':'STOP_RULE_SET'})
    }
};
```

## 예제 4: DMARC 인증에 실패한 반송 메일 메시지
<a name="receiving-email-action-lambda-example-functions-4"></a>

이 예제에서는 수신 이메일이 DMARC 인증에 실패한 경우 반송 메일 메시지를 보냅니다.

**참고**  
이 예제를 사용하는 경우 `emailDomain` 환경 변수의 값을 이메일 수신 도메인으로 설정합니다.
Lambda 함수에 반송 메시지를 보내는 SES ID에 대한 `ses:SendBounce` 권한이 있는지 확인합니다.

```
import { SESClient, SendBounceCommand } from "@aws-sdk/client-ses";
const sesClient = new SESClient();
// Assign the emailDomain environment variable to a constant.
const emailDomain = process.env.emailDomain;

export const handler = async (event, context, callback) => {
    console.log('Spam filter starting');

    const sesNotification = event.Records[0].ses;
    const messageId = sesNotification.mail.messageId;
    const receipt = sesNotification.receipt;

    console.log('Processing message:', messageId);

    // If DMARC verdict is FAIL and the sending domain's policy is REJECT
    // (p=reject), bounce the email.
    if (receipt.dmarcVerdict.status === 'FAIL' 
        && receipt.dmarcPolicy.status === 'REJECT') {
        // The values that make up the body of the bounce message.
        const sendBounceParams = {
            BounceSender: `mailer-daemon@${emailDomain}`,
            OriginalMessageId: messageId,
            MessageDsn: {
                ReportingMta: `dns; ${emailDomain}`,
                ArrivalDate: new Date(),
                ExtensionFields: [],
            },
            // Include custom text explaining why the email was bounced.
            Explanation: "Unauthenticated email is not accepted due to the sending domain's DMARC policy.",
            BouncedRecipientInfoList: receipt.recipients.map((recipient) => ({
                Recipient: recipient,
                // Bounce with 550 5.6.1 Message content rejected
                BounceType: 'ContentRejected',
            })),
        };

        console.log('Bouncing message with parameters:');
        console.log(JSON.stringify(sendBounceParams, null, 2));
        
        const sendBounceCommand = new SendBounceCommand(sendBounceParams);
        
        // Try to send the bounce. 
        try {
          const response = await sesClient.send(sendBounceCommand);
          console.log(response);
          console.log(`Bounce for message ${messageId} sent, bounce message ID: ${response.MessageId}`);
          // Stop processing additional receipt rules in the rule set.
          callback(null, {disposition: 'STOP_RULE_SET'});
        } catch (e) {
          // If something goes wrong, log the issue.
          console.log(`An error occurred while sending bounce for message: ${messageId}`, e);
          // Perform any additional error handling here
          callback(e)
        }
        
    // If the DMARC verdict is anything else (PASS, QUARANTINE or GRAY), accept
    // the message and process remaining receipt rules in the rule set.
    } else {
        console.log('Accepting message:', messageId);
        callback(null, {disposition: 'CONTINUE'});
    }
};
```

# S3 버킷으로 전송 작업
<a name="receiving-email-action-s3"></a>

**S3 버킷에 전송** 작업은 S3 버킷으로 메일을 전송하며, 선택적으로 SNS 등을 통해 알림을 보낼 수 있습니다. 이 작업의 옵션은 다음과 같습니다.
+ **S3 버킷** - 수신 이메일을 저장할 S3 버킷의 이름입니다. **S3 버킷 생성**을 선택하여 작업을 설정할 때 새 S3 버킷을 생성할 수도 있습니다. Amazon SES는 수정되지 않은 원시 이메일을 제공하며, 이는 주로 다목적 인터넷 전자 우편(MIME) 형식입니다. MIME 형식에 대한 자세한 내용은 [RFC 2045](https://tools.ietf.org/html/rfc2045)를 참조하세요.
**중요**  
Amazon S3 버킷은 SES [이메일 수신](regions.md#region-receive-email)을 사용할 수 있는 리전에 있어야 합니다. 그렇지 않으면 아래 설명된 IAM 역할 옵션을 사용해야 합니다.
S3 버킷에 이메일을 저장할 때 이메일(헤더 포함)의 최대 기본 용량은 40MB입니다.
SES는 기본 보존 기간으로 구성된 객체 잠금을 사용하여 사용 설정된 S3 버킷에 업로드하는 수신 규칙을 지원하지 않습니다.
자체 KMS 키를 지정하여 S3 버킷에 암호화를 적용하는 경우 KMS 키 별칭이 아닌 정규화된 KMS 키 ARN을 사용해야 합니다. 별칭을 사용하면 버킷 관리자가 아닌 요청자에 속한 KMS로 데이터가 암호화될 수 있습니다. [교차 계정 작업에 암호화 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html#bucket-encryption-update-bucket-policy)을 참조하세요.
+ **객체 키 접두사** - S3 버킷에서 사용할 선택적 키 이름 접두사입니다. 키 이름 접두사를 사용하여 S3 버킷을 폴더 구조로 구성할 수 있습니다. 예를 들어 *이메일*을 **객체 키 접두사**로 사용하면 S3 버킷의 *이메일*이라는 폴더에 이메일이 표시됩니다.
+ **메시지 암호화** - S3 버킷에 전송하기 전에 수신 이메일 메시지를 암호화하는 옵션입니다.
+ **KMS 암호화 키** – (*메시지 암호화*를 선택한 경우 사용할 수 있습니다.) SES가 S3 버킷에 이메일을 저장하기에 앞서 암호화할 때 사용할 AWS KMS 키입니다. 기본 KMS 키를 사용하거나 KMS에 생성한 고객 관리형 키를 사용할 수 있습니다.
**참고**  
선택하는 KMS 키는 이메일 수신 시 사용하는 SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.
  + 기본 KMS 키를 사용하려면 SES 콘솔에서 수신 규칙을 설정할 때 **aws/ses**를 선택합니다. SES API를 사용할 경우, ARN을 `arn:aws:kms:REGION:AWSACCOUNTID:alias/aws/ses`의 형태로 입력하면 기본 KMS 키를 지정할 수 있습니다. 예를 들어, AWS 계정 ID가 123456789012이고 us-east-1 리전에서 기본 마스터 키를 사용하고자 한다면 기본 KMS 키의 ARN은 `arn:aws:kms:us-east-1:123456789012:alias/aws/ses`입니다. 기본 KMS 키를 사용하는 경우, SES에 키 사용 권한을 부여하는 절차가 필요하지 않습니다.
  + KMS에 생성한 고객 관리형 키를 사용하려면, KMS 키의 ARN을 입력하고 키의 정책에 설명을 추가하여 SES에 사용 권한을 부여해야 합니다. 권한 설정에 대한 자세한 내용은 다음([Amazon SES에 이메일 수신을 위한 권한 부여](receiving-email-permissions.md))을 참조하세요.

  SES를 포함한 KMS 사용에 대한 자세한 내용은 [AWS Key Management Service 개발자 가이드](https://docs.aws.amazon.com/kms/latest/developerguide/services-ses.html)를 참조하세요. 콘솔 또는 API에서 KMS 키를 지정하지 않으면 SES가 이메일을 암호화하지 않습니다.
**중요**  
저장을 위해 메일이 S3에 제출되기 전에 S3 암호화 클라이언트를 사용하여 SES에서 메일을 암호화합니다. 메일을 암호화할 때 S3 서버 측 암호화를 사용하지 않습니다. 따라서, S3에서 이메일을 가져온 후에는 S3 암호화 클라이언트를 사용해 이메일을 해독해야 합니다. 서비스에 해독할 때 KMS 키를 사용할 권한이 없기 때문입니다. 이 암호화 클라이언트는 [AWS SDK for Java](https://aws.amazon.com/sdk-for-java/) 및 [AWS SDK for Ruby](https://aws.amazon.com/sdk-for-ruby/)에서 사용할 수 있습니다. 자세한 내용은 [Amazon Simple Storage Service 사용 설명서](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)를 참조하세요.
+ **IAM 역할** - SES가 *S3에 전송* 작업(Amazon S3 버킷, SNS 주제 및 KMS 키)의 리소스에 액세스하는 데 사용하는 IAM 역할입니다. 제공되지 않은 경우 각 리소스에 개별적으로 액세스할 수 있는 권한을 SES에 명시적으로 부여해야 합니다. [Amazon SES에 이메일 수신을 위한 권한 부여](receiving-email-permissions.md)의 내용을 참조하세요.

  *SES 이메일 수신*을 사용할 수 없는 리전에 속해 있는 S3 버킷에 쓰려면 S3에 대한 쓰기 권한 정책이 있는 IAM 역할을 역할의 인라인 정책으로 사용해야 합니다. 콘솔에서 직접 이 작업에 대한 권한 정책을 적용할 수 있습니다.

  1. **IAM 역할** 필드에서 **새 역할 생성**을 선택하고 이름을 입력한 다음 **역할 생성**을 선택합니다. (이 역할에 대한 IAM 신뢰 정책은 백그라운드에서 자동으로 생성됩니다.)

  1. IAM 신뢰 정책이 자동으로 생성되었으므로 역할에 작업의 권한 정책만 추가하면 됩니다. **IAM 역할** 필드에서 **역할 보기**를 선택하여 IAM 콘솔을 엽니다.

  1. **권한** 탭에서 **권한 추가**를 선택하고 **인라인 정책 만들기**를 선택합니다.

  1. **권한 지정** 페이지의 **정책 편집기**에서 **JSON**을 선택합니다.

  1. [S3 작업을 위한 IAM 역할 권한](receiving-email-permissions.md#receiving-email-permissions-s3-iam-role)에서 권한 정책을 복사하여 **정책 편집기**에 붙여넣고 빨간색 텍스트의 데이터를 자체 데이터로 바꿉니다. (편집기에서 예제 코드를 모두 삭제해야 합니다.)

  1. **다음**을 선택합니다.

  1. **정책 생성**을 선택하여 IAM 역할에 대한 권한 정책을 검토하고 생성합니다.

  1. SES **규칙 생성** - **작업 추가** 페이지가 열려 있는 브라우저의 탭을 선택하고 규칙 생성을 위한 나머지 단계를 계속 진행합니다.
+ **SNS 주제** - 이메일을 S3 버킷에 저장한 후 알림을 전송할 Amazon SNS 주제의 이름 또는 ARN입니다. SNS 주제 ARN은 *arn:aws:sns:us-east-1:123456789012:MyTopic*과 같은 형식일 수 있습니다. 작업을 설정할 때 **SNS 주제 생성**을 선택하여 SNS 주제를 생성할 수도 있습니다. SNS 주제에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요.
**참고**  
선택하는 SNS 주제는 이메일 수신 시 사용하는 SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.
SES가 SNS에 게시할 수 있도록 KMS 키 정책을 편집해야 하므로 SES 수신 규칙과 연관된 SNS 주제에서만 *고객 관리형* KMS 키 암호화를 사용합니다. 이는 계획적으로 편집할 수 없는 *AWS 관리형* KMS 키 정책과 대조됩니다.

# Amazon SNS 주제에 게시하는 작업
<a name="receiving-email-action-sns"></a>

**SNS** 작업은 Amazon SNS 알림을 사용해 메일을 게시합니다. 이때 알림은 이메일 콘텐츠 전체를 포함합니다. 이 작업의 옵션은 다음과 같습니다.
+ **SNS 주제 - **이메일을 게시할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 알림은 보통 MIME(Multipurpose Internet Mail Extensions) 형식으로 작성된 이메일의 사본을 그대로 포함합니다. MIME 형식에 대한 자세한 내용은 [RFC 2045](https://tools.ietf.org/html/rfc2045)를 참조하세요.
**중요**  
Amazon SNS 알림을 통해 이메일을 수신하고자 하는 경우 이메일(헤더 포함)의 최대 용량은 150KB입니다. 용량이 더 큰 이메일은 반송됩니다. 이보다 용량이 큰 이메일을 수신할 것으로 예상한다면, 이메일을 Amazon S3 버킷에 저장하세요.

  Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 작업을 설정할 때 **SNS 주제 만들기**를 선택하여 Amazon SNS 주제를 만들 수도 있습니다. Amazon SNS 주제에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요.
**참고**  
선택하는 Amazon SNS 주제는 이메일 수신 시 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.
SES가 SNS에 게시할 수 있도록 KMS 키 정책을 편집해야 하므로 SES 수신 규칙과 연관된 SNS 주제에서만 *고객 관리형* KMS 키 암호화를 사용합니다. 이는 계획적으로 편집할 수 없는 *AWS 관리형* KMS 키 정책과 대조됩니다.
+ **인코딩 - **Amazon SNS 알림 내에서 이메일에 사용할 인코딩. UTF-8은 사용하기 쉽지만 메시지가 여러 가지 인코딩 형식으로 인코딩된 경우 일부 특수 문자를 보존하지 못할 수 있습니다. Base64는 모든 특수 문자를 보존합니다. UTF-8 및 Base64에 관한 정보는 각각 [RFC 3629](https://tools.ietf.org/html/rfc3629) 및 [RFC 4648](https://tools.ietf.org/html/rfc4648)을 참조하세요.

이메일을 받으면 Amazon SES가 활성 수신 규칙 세트의 규칙을 실행합니다. Amazon SNS을 사용하여 알림을 전송하도록 수신 규칙을 구성할 수 있습니다. 수신 규칙에서는 다음과 같은 두 가지 유형의 알림을 보낼 수 있습니다.
+ **SNS 작업에서 전송된 알림** – [SNS](#receiving-email-action-sns) 작업을 수신 규칙에 추가하면 이메일 및 이메일 콘텐츠에 대한 정보를 전송합니다. 메시지가 150KB 이하인 경우 이 알림 유형에는 이메일의 전체 MIME 본문도 포함됩니다.
+ **다른 작업 유형에서 전송된 알림** – 다른 작업 유형(예: [반송 메일](receiving-email-action-bounce.md), [Lambda](receiving-email-action-lambda.md), [규칙 세트 중지](receiving-email-action-stop.md) 또는 [WorkMail](receiving-email-action-workmail.md) 작업)을 수신 규칙에 추가하는 경우 필요에 따라 Amazon SNS 주제를 지정할 수 있습니다. 이 경우 이러한 작업이 수행되면 알림을 받게 됩니다. 이러한 알림에는 이메일에 대한 정보가 포함되지만 이메일의 내용은 포함되지 않습니다.

**Topics**
+ [Amazon SES 이메일 수신에 대한 알림 내용](receiving-email-notifications-contents.md)
+ [Amazon SES 이메일 수신에 대한 알림의 예](receiving-email-notifications-examples.md)

# Amazon SES 이메일 수신에 대한 알림 내용
<a name="receiving-email-notifications-contents"></a>

이메일 수신에 대한 모든 알림은 Amazon Simple Notification Service(Amazon SNS) 주제에 JavaScript Object Notation(JSON) 형식으로 게시됩니다.

알림 예는 [알림 예제](receiving-email-notifications-examples.md) 단원을 참조하세요.

**Contents**
+ [최상위 JSON 객체](#receiving-email-notifications-contents-top-level-json-object)
+ [수신 객체](#receiving-email-notifications-contents-receipt-object)
  + [작업 객체](#receiving-email-notifications-contents-action-object)
  + [dkimVerdict 객체](#receiving-email-notifications-contents-dkimverdict-object)
  + [dmarcVerdict 객체](#receiving-email-notifications-contents-dmarcverdict-object)
  + [spamVerdict 객체](#receiving-email-notifications-contents-spamverdict-object)
  + [spfVerdict 객체](#receiving-email-notifications-contents-spfverdict-object)
  + [virusVerdict 객체](#receiving-email-notifications-contents-virusverdict-object)
+ [Mail 객체](#receiving-email-notifications-contents-mail-object)
  + [commonHeaders 객체](#receiving-email-notifications-contents-mail-object-commonHeaders)

## 최상위 JSON 객체
<a name="receiving-email-notifications-contents-top-level-json-object"></a>

최상위 JSON 객체는 다음 필드로 구성됩니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  notificationType  |  알림 유형입니다. 이 유형의 알림의 경우 값은 항상 `Received`입니다.  | 
|  [`receipt`](#receiving-email-notifications-contents-receipt-object)  |  이메일 전송 관련 정보가 포함된 객체   | 
|  [`mail`](#receiving-email-notifications-contents-mail-object)  |  알림과 연결된 이메일 관련 정보를 포함하는 객체입니다.  | 
|  content  |  일반적으로 다목적 인터넷 전자 우편(MIME) 형식으로 작성된 수정되지 않은 원본 이메일이 포함된 문자열입니다. MIME 형식에 대한 자세한 내용은 [RFC 2045](https://tools.ietf.org/html/rfc2045)를 참조하세요.  이 필드는 SNS 작업에 의해 알림이 트리거된 경우에만 표시됩니다. 다른 모든 작업에 의해 트리거된 알림에는 이 필드가 포함되지 않습니다.   | 

## 수신 객체
<a name="receiving-email-notifications-contents-receipt-object"></a>

`receipt` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  [`action`](#receiving-email-notifications-contents-action-object)  |  실행된 작업에 대한 정보를 캡슐화하는 객체입니다. 가능한 값 목록은 [작업 객체](#receiving-email-notifications-contents-action-object) 단원을 참조하세요.  | 
|  [`dkimVerdict`](#receiving-email-notifications-contents-dkimverdict-object)  |  DomainKeys Identified Mail(DKIM) 검사를 통과했는지 여부를 나타내는 객체입니다. 가능한 값 목록은 [dkimVerdict 객체](#receiving-email-notifications-contents-dkimverdict-object) 단원을 참조하세요.  | 
| dmarcPolicy | 발신 도메인에 대한 Domain-based Message Authentication, Reporting & Conformance(DMARC) 설정을 나타냅니다. 이 필드는 메시지가 DMARC 인증에 실패한 경우에만 나타납니다. 이 필드에 가능한 값은 다음과 같습니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html) | 
| [`dmarcVerdict`](#receiving-email-notifications-contents-dmarcverdict-object) | Domain-based Message Authentication, Reporting & Conformance(DMARC) 검사를 통과했는지 여부를 나타내는 객체입니다. 가능한 값 목록은 [dmarcVerdict 객체](#receiving-email-notifications-contents-dmarcverdict-object) 단원을 참조하세요. | 
|  processingTimeMillis  |  Amazon SES가 메시지를 수신한 시간부터 작업을 트리거한 시간까지의 기간(밀리초)을 지정하는 문자열입니다.  | 
|  recipients  |  활성 [수신 규칙](receiving-email-receipt-rules-console-walkthrough.md)과 일치하는 수신자(특히 엔벌로프 RCPT TO 주소)입니다. 여기에 나열된 주소는 [Mail 객체](#receiving-email-notifications-contents-mail-object)의 `destination` 필드에 나열된 주소와 다를 수 있습니다.  | 
|  [`spamVerdict`](#receiving-email-notifications-contents-spamverdict-object)  |  메시지가 스팸인지 여부를 나타내는 객체입니다. 가능한 값 목록은 [spamVerdict 객체](#receiving-email-notifications-contents-spamverdict-object) 단원을 참조하세요.  | 
|  [`spfVerdict`](#receiving-email-notifications-contents-spfverdict-object)  |  Sender Policy Framework(SPF) 검사를 통과했는지 여부를 나타내는 객체입니다. 가능한 값 목록은 [spfVerdict 객체](#receiving-email-notifications-contents-spfverdict-object) 단원을 참조하세요.  | 
|  timestamp  |  작업이 트리거된 날짜와 시간을 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 형식으로 지정하는 문자열입니다.  | 
|  [virusVerdict](#receiving-email-notifications-contents-virusverdict-object)  |  메시지에 바이러스가 포함되어 있는지 여부를 나타내는 객체입니다. 가능한 값 목록은 [virusVerdict 객체](#receiving-email-notifications-contents-virusverdict-object) 단원을 참조하세요.  | 

### 작업 객체
<a name="receiving-email-notifications-contents-action-object"></a>

`action` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  type  |  실행된 작업의 유형을 나타내는 문자열입니다. 가능한 값은 `S3`, `SNS`, `Bounce`, `Lambda`, `Stop`, `WorkMail`입니다.  | 
|  topicArn  |  알림이 게시된 Amazon SNS 주제의 Amazon 리소스 이름(ARN)이 포함된 문자열입니다.  | 
|  bucketName  |  메시지가 게시된 Amazon S3 버킷의 이름이 포함된 문자열입니다. S3 작업 유형에 대해서만 표시됩니다.  | 
|  objectKey  |  Amazon S3 버킷의 이메일을 고유하게 식별하는 이름을 포함하는 문자열로, [Mail 객체](#receiving-email-notifications-contents-mail-object)의 `messageId`와(과) 동일합니다. S3 작업 유형에 대해서만 표시됩니다.  | 
|  smtpReplyCode  |  [RFC 5321](https://tools.ietf.org/html/rfc5321)의 정의에 따르는 SMTP 응답 코드를 포함하는 문자열입니다. 반송 작업 유형에 대해서만 표시됩니다.  | 
|  statusCode  |  [RFC 3463](https://tools.ietf.org/html/rfc3463)의 정의에 따르는 향상된 SMTP 상태 코드를 포함하는 문자열입니다. 반송 작업 유형에 대해서만 표시됩니다.  | 
|  message  |  반송 메시지에 포함할 사람이 읽을 수 있는 텍스트가 포함된 문자열입니다. 반송 작업 유형에 대해서만 표시됩니다.  | 
|  sender  |  반송된 이메일 발신자의 이메일 주소가 포함된 문자열입니다. 반송 메시지를 보낼 때 사용한 주소입니다. 반송 작업 유형에 대해서만 표시됩니다.  | 
|  functionArn  |  트리거된 Lambda 함수의 ARN을 포함하는 문자열입니다. Lambda 작업 유형에 대해서만 표시됩니다.  | 
|  invocationType  |  Lambda 함수의 호출 유형을 포함하는 문자열입니다. 가능한 값은 `RequestResponse` 및 `Event`입니다. Lambda 작업 유형에 대해서만 표시됩니다.  | 
|  organizationArn  |  Amazon WorkMail 조직의 ARN을 포함하는 문자열입니다. WorkMail 작업 유형에 대해서만 표시됩니다.  | 

### dkimVerdict 객체
<a name="receiving-email-notifications-contents-dkimverdict-object"></a>

`dkimVerdict` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  status  |  DKIM 판정이 포함된 문자열입니다. 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### dmarcVerdict 객체
<a name="receiving-email-notifications-contents-dmarcverdict-object"></a>

`dmarcVerdict` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  status  |  DMARC 판정이 포함된 문자열입니다. 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### spamVerdict 객체
<a name="receiving-email-notifications-contents-spamverdict-object"></a>

`spamVerdict` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  status  |  스팸 검사 결과가 포함된 문자열입니다. 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### spfVerdict 객체
<a name="receiving-email-notifications-contents-spfverdict-object"></a>

`spfVerdict` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  status  |  SPF 판정이 포함된 문자열입니다. 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html)  | 

### virusVerdict 객체
<a name="receiving-email-notifications-contents-virusverdict-object"></a>

`virusVerdict` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|  status  |  바이러스 검사 결과가 포함된 문자열입니다. 가능한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-notifications-contents.html)  | 

## Mail 객체
<a name="receiving-email-notifications-contents-mail-object"></a>

`mail` 객체에는 다음 필드가 있습니다.


| 필드 이름 | 설명 | 
| --- | --- | 
|   destination  |  수신 이메일의 MIME 헤더의 모든 수신자 주소(To: 및 CC: 수신자 포함)의 전체 목록입니다.  | 
|  messageId  |  Amazon SES에서 이메일에 할당한 고유 ID가 포함된 문자열입니다. 이메일이 Amazon S3로 전송된 경우 메시지 ID는 Amazon S3 버킷에 메시지를 쓰는 데 사용된 Amazon S3 객체 키이기도 합니다.  | 
|  source  |  이메일을 보낸 주소(특히 엔벌로프 MAIL FROM 주소)가 포함된 문자열입니다.  | 
|  timestamp  |  ISO8601 포멧으로 이메일 수신 시간이 포함된 문자열입니다.  | 
|  headers  |  Amazon SES 헤더 및 사용자 지정 헤더입니다. 각 헤더에는 `name` 및 `value` 필드가 있습니다.  | 
|  [`commonHeaders`](#receiving-email-notifications-contents-mail-object-commonHeaders)  |  모든 이메일에 공통적인 헤더입니다. 각 헤더에는 `name` 및 `value` 필드가 있습니다.  | 
|  headersTruncated  |  알림에서 헤더가 잘렸는지 여부를 나타내며 헤더의 용량이 10KB를 초과할 경우 헤더가 잘립니다. 가능한 값은 `true` 및 `false`입니다.  | 

### commonHeaders 객체
<a name="receiving-email-notifications-contents-mail-object-commonHeaders"></a>

`commonHeaders` 객체는 다음 표에 있는 필드를 가질 수 있습니다. 이 객체에 있는 필드는 수신 이메일에 있는 필드에 따라 다릅니다.


| 필드 이름 | 설명 | 
| --- | --- | 
| messageId | 원본 메시지의 ID입니다. | 
| date | Amazon SES가 메시지를 수신한 날짜와 시간입니다. | 
| to | 이메일의 To 헤더입니다. | 
| cc | 이메일의 CC 헤더입니다. | 
| bcc | 이메일의 BCC 헤더입니다. | 
| from | 이메일의 From 헤더입니다. | 
| sender | 이메일의 Sender 헤더입니다. | 
| returnPath | 이메일의 Return-Path 헤더입니다. | 
| replyTo | 이메일의 Reply-To 헤더입니다. | 
| subject | 이메일의 Subject 헤더입니다. | 

# Amazon SES 이메일 수신에 대한 알림의 예
<a name="receiving-email-notifications-examples"></a>

이 단원에는 다음 유형의 알림에 대한 예제가 나와 있습니다.
+ [SNS 작업의 결과로 전송된 알림입니다.](#receiving-email-notifications-examples-sns-action)
+ [다른 유형의 작업의 결과로 전송된 알림](#receiving-email-notifications-examples-alert)(*경고 알림*).

## SNS 작업 알림
<a name="receiving-email-notifications-examples-sns-action"></a>

이 단원에서 SNS 작업 알림의 예가 나와 있습니다. 이전에 표시된 경고 알림과 달리 `content` 단원에는 일반적으로 다목적 인터넷 전자 우편(MIME) 형식으로 작성된 이메일이 포함되어 있습니다.

```
{
  "notificationType":"Received",
  "receipt":{
    "timestamp":"2015-09-11T20:32:33.936Z",
    "processingTimeMillis":222,
    "recipients":[
      "recipient@example.com"
    ],
    "spamVerdict":{
      "status":"PASS"
    },
    "virusVerdict":{
      "status":"PASS"
    },
    "spfVerdict":{
      "status":"PASS"
    },
    "dkimVerdict":{
      "status":"PASS"
    },
    "action":{
      "type":"SNS",
      "topicArn":"arn:aws:sns:us-east-1:012345678912:example-topic"
    }
  },
  "mail":{
    "timestamp":"2015-09-11T20:32:33.936Z",
    "source":"61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com",
    "messageId":"d6iitobk75ur44p8kdnnp7g2n800",
    "destination":[
      "recipient@example.com"
    ],
    "headersTruncated":false,
    "headers":[
      {
        "name":"Return-Path",
        "value":"<0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com>"
      },
      {
        "name":"Received",
        "value":"from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800 for recipient@example.com; Fri, 11 Sep 2015 20:32:33 +0000 (UTC)"
      },
      {
        "name":"DKIM-Signature",
        "value":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552; h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID; bh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=; b=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF hlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX 4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g="
      },
      {
        "name":"From",
        "value":"sender@example.com"
      },
      {
        "name":"To",
        "value":"recipient@example.com"
      },
      {
        "name":"Subject",
        "value":"Example subject"
      },
      {
        "name":"MIME-Version",
        "value":"1.0"
      },
      {
        "name":"Content-Type",
        "value":"text/plain; charset=UTF-8"
      },
      {
        "name":"Content-Transfer-Encoding",
        "value":"7bit"
      },
      {
        "name":"Date",
        "value":"Fri, 11 Sep 2015 20:32:32 +0000"
      },
      {
        "name":"Message-ID",
        "value":"<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>"
      },
      {
        "name":"X-SES-Outgoing",
        "value":"2015.09.11-54.240.9.183"
      },
      {
        "name":"Feedback-ID",
        "value":"1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES"
      }
    ],
    "commonHeaders":{
      "returnPath":"0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
      "from":[
        "sender@example.com"
      ],
      "date":"Fri, 11 Sep 2015 20:32:32 +0000",
      "to":[
        "recipient@example.com"
      ],
      "messageId":"<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>",
      "subject":"Example subject"
    }
  },
  "content":"Return-Path: <61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>\r\nReceived: from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183])\r\n by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800\r\n for recipient@example.com;\r\n Fri, 11 Sep 2015 20:32:33 +0000 (UTC)\r\nDKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;\r\n\ts=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552;\r\n\th=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID;\r\n\tbh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=;\r\n\tb=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF\r\n\thlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX\r\n\t4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g=\r\nFrom: sender@example.com\r\nTo: recipient@example.com\r\nSubject: Example subject\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\nDate: Fri, 11 Sep 2015 20:32:32 +0000\r\nMessage-ID: <61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>\r\nX-SES-Outgoing: 2015.09.11-54.240.9.183\r\nFeedback-ID: 1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES\r\n\r\nExample content\r\n"
}
```

## 경고 알림
<a name="receiving-email-notifications-examples-alert"></a>

이 단원에는 S3 작업에 의해 트리거될 수 있는 Amazon SNS 알림의 예가 포함되어 있습니다. Lambda 작업, 반송 작업, 중지 작업 및 WorkMail 작업에 의해 트리거되는 알림은 비슷합니다. 이러한 알림에는 이메일에 대한 정보가 포함되지만 이메일의 내용은 포함되지 않습니다.

```
{
     "notificationType": "Received",
	   "receipt": {
	     "timestamp": "2015-09-11T20:32:33.936Z",
	     "processingTimeMillis": 406,
	     "recipients": [
	       "recipient@example.com"
	     ],
	     "spamVerdict": {
	       "status": "PASS"
	     },
	     "virusVerdict": {
	       "status": "PASS"
	     },
	     "spfVerdict": {
	       "status": "PASS"
	     },
	     "dkimVerdict": {
	       "status": "PASS"
	     },
	     "action": {
	       "type": "S3",
	       "topicArn": "arn:aws:sns:us-east-1:012345678912:example-topic",
	       "bucketName": "my-S3-bucket",
	       "objectKey": "\email"
	     }
	   },
	   "mail": {
	     "timestamp": "2015-09-11T20:32:33.936Z",
	     "source": "0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
	     "messageId": "d6iitobk75ur44p8kdnnp7g2n800",
	     "destination": [
	       "recipient@example.com"
	     ],
	     "headersTruncated": false,
	     "headers": [
	       {
	         "name": "Return-Path",
	         "value": "<0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com>"
	       },
	       {
	         "name": "Received",
	         "value": "from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800 for recipient@example.com; Fri, 11 Sep 2015 20:32:33 +0000 (UTC)"
	       },
	       {
	         "name": "DKIM-Signature",
	         "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552; h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID; bh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=; b=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF hlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX 4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g="
	       },
	       {
	         "name": "From",
	         "value": "sender@example.com"
	       },
	       {
	         "name": "To",
	         "value": "recipient@example.com"
	       },
	       {
	         "name": "Subject",
	         "value": "Example subject"
	       },
	       {
	         "name": "MIME-Version",
	         "value": "1.0"
	       },
	       {
	         "name": "Content-Type",
	         "value": "text/plain; charset=UTF-8"
	       },
	       {
	         "name": "Content-Transfer-Encoding",
	         "value": "7bit"
	       },
	       {
	         "name": "Date",
	         "value": "Fri, 11 Sep 2015 20:32:32 +0000"
	       },
	       {
	         "name": "Message-ID",
	         "value": "<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>"
	       },
	       {
	         "name": "X-SES-Outgoing",
	         "value": "2015.09.11-54.240.9.183"
	       },
	       {
	         "name": "Feedback-ID",
	         "value": "1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES"
	       }
	     ],
	     "commonHeaders": {
	       "returnPath": "0000014fbe1c09cf-7cb9f704-7531-4e53-89a1-5fa9744f5eb6-000000@amazonses.com",
	       "from": [
	         "sender@example.com"
	       ],
	       "date": "Fri, 11 Sep 2015 20:32:32 +0000",
	       "to": [
	         "recipient@example.com"
	       ],
	       "messageId": "<61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com>",
	       "subject": "Example subject"
	     }
	   }
	 }
```

# 규칙 세트 중지 작업
<a name="receiving-email-action-stop"></a>

**중지** 작업은 해당 수신 규칙 세트의 평가를 중단하고, 설정에 따라 Amazon SNS를 통해 사용자에게 알림을 전송합니다. 이 작업의 옵션은 다음과 같습니다.
+ **SNS 주제 -** 중지 작업을 수행한 후 알림을 전송할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 작업을 설정할 때 **SNS 주제 만들기**를 선택하여 Amazon SNS 주제를 만들 수도 있습니다. Amazon SNS 주제에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요.
**참고**  
선택하는 Amazon SNS 주제는 이메일 수신 시 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.

# Amazon WorkMail과 통합 작업
<a name="receiving-email-action-workmail"></a>

**WorkMail** 작업은 Amazon WorkMail과 통합됩니다. Amazon WorkMail이 모든 이메일 처리를 수행하는 경우 Amazon WorkMail에서 설정이 자동으로 처리되므로 일반적으로 이 작업을 직접 사용할 필요는 없습니다. 이 작업의 옵션은 다음과 같습니다.
+ **조직 ARN - **Amazon WorkMail 조직의 ARN입니다. Amazon WorkMail 조직의 ARN 형식은 `arn:aws:workmail:region:account_ID:organization/organization_ID`와(과) 같습니다. 여기서,
  + `region`은(는) Amazon SES 및 Amazon WorkMail을 사용 중인 리전입니다. (동일한 리전의 항목을 사용해야 합니다.) 예: us-east-1.
  + `account_ID`는 AWS 계정 ID입니다. AWS 관리 콘솔의 [계정 페이지](https://console.aws.amazon.com/billing/home?#/account)에서 AWS 계정 ID를 확인할 수 있습니다.
  + `organization_ID`은(는) 사용자가 조직을 생성할 때 Amazon WorkMail이 생성하는 고유한 식별자입니다. 조직 ID는 Amazon WorkMail 콘솔에서 소속 조직의 Organization Settings 페이지를 보면 확인할 수 있습니다.

  전체 Amazon WorkMail 조직 ARN의 예제는 *arn:aws:workmail:us-east-1:123456789012:organization/m-68755160c4cb4e29a2b2f8fb58f359d7*입니다. Amazon WorkMail 조직에 대한 자세한 내용은 [Amazon WorkMail 관리자 안내서](https://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html)를 참조하세요.
+ **SNS 주제 - **Amazon WorkMail 작업을 수행한 후 알림을 전송할 Amazon SNS 주제의 이름 또는 ARN입니다. Amazon SNS 주제 ARN의 한 가지 예시는 *arn:aws:sns:us-east-1:123456789012:MyTopic*입니다. 작업을 설정할 때 **SNS 주제 만들기**를 선택하여 Amazon SNS 주제를 만들 수도 있습니다. Amazon SNS 주제에 대한 자세한 내용은 [Amazon Simple Notification Service 개발자 가이드](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요.
**참고**  
선택하는 Amazon SNS 주제는 이메일 수신 시 사용하는 Amazon SES 엔드포인트와 동일한 AWS 리전에 속해야 합니다.

**참고**  
Amazon SES는 WorkMail을 사용할 수 있는 리전에서만 WorkMail 작업을 지원합니다. AWS 일반 참조의 [Amazon WorkMail 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/workmail.html)을 참조하세요.

# IP 주소 필터 생성 콘솔 연습
<a name="receiving-email-ip-filtering-console-walkthrough"></a>

이 섹션에서는 Amazon SES 콘솔을 사용하여 IP 주소 필터를 설정하는 방법을 안내합니다. IP 주소 필터링을 사용하면 광범위한 제어 수준을 제공할 수 있습니다. 이러한 IP 필터를 사용하면 특정 IP 주소 또는 IP 주소 범위의 모든 메시지를 명시적으로 차단하거나 허용할 수 있습니다.

[Amazon Simple Email Service API 참조](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html)에 설명된 대로 `CreateReceiptFilter` API를 사용하여 IP 주소 필터를 선택적으로 생성할 수 있습니다.

**참고**  
정해진 일부 IP 주소에서만 메일을 받고 싶다면 차단 목록에는 `0.0.0.0/0`를 입력하고, 허용 목록에는 신뢰하는 IP 주소를 입력하세요. 이 구성은 기본적으로 모든 IP 주소를 차단하고, 명시적으로 지정하는 IP 주소에서 발신하는 메일만 허용합니다.

## 사전 조건
<a name="ip-filtering-prerequisites"></a>

IP 주소 필터를 사용하여 수신자 기반 이메일 제어를 설정하기 전에 다음 필수 구성 요소를 충족해야 합니다.

1. Amazon SES에서 먼저 [도메인 자격 증명을 생성하고 확인해야](verify-addresses-and-domains.md) 합니다.

1. 다음으로 도메인의 DNS 설정에 [MX 레코드를 게시하여](receiving-email-mx-record.md) 도메인에 대한 메일을 수락할 수 있는 메일 서버를 지정해야 합니다 (MX 레코드는 Amazon SES를 사용하는 AWS 리전의 메일을 수신하는 Amazon SES 엔드포인트를 참조해야 합니다.)

## IP 주소 필터 생성
<a name="receipt-rules-create-ip-filters"></a>

**콘솔을 사용하여 IP 주소 필터를 생성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/) Amazon SES 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **Email receiving(이메일 수신)**을 선택합니다.

1. **IP address filters(IP 주소 필터)** 탭을 선택합니다.

1. **Create Filter(필터 생성)**를 선택합니다.

1. 필터의 고유 이름을 입력합니다. 필드의 범례는 구문 요구 사항을 나타냅니다. (이름은 64자 미만의 영숫자, 하이픈(-), 밑줄(\$1), 마침표(.) 문자를 포함해야 합니다. 이름은 문자 또는 숫자로 끝나야 합니다.)

1. IP 주소 또는 IP 주소 범위를 입력합니다. 필드의 범례는 Classless Inter-Domain Routing(CIDR) 구문에 지정된 예제를 제공합니다. (단일 IP 주소의 예는 10.0.0.1입니다. IP 주소 범위의 예는 10.0.0.1/24입니다. CIDR 표기법에 대한 자세한 정보는 [RFC 2317](https://tools.ietf.org/html/rfc2317)를 참조하십시오.)

1. **Block(블록)** 또는 **Allow(허용)** 라디오 버튼 중 하나를 선택하여 **Policy type(정책 유형)**을 선택합니다.

1. **Create filter(필터 생성)**를 선택합니다.

1. 다른 IP 필터를 추가하려는 경우 **Create filter(필터 생성)**를 클릭하고 추가하려는 각 추가 필터에 대해 이전 단계를 반복합니다.

1. IP 주소 필터를 제거하려면 해당 필터를 선택하고**Delete(삭제)** 버튼을 선택합니다.

# Amazon SES 이메일 수신의 지표 보기
<a name="receiving-email-metrics"></a>

Amazon SES에서 이메일 수신을 활성화하고 이메일에 대한 수신 규칙을 만든 경우 Amazon CloudWatch를 사용하여 해당 수신 규칙 세트 및 규칙에 대한 지표를 볼 수 있습니다.

CloudWatch 콘솔에서 **지표** > **모든 지표** > **SES** > **수신 규칙 세트 지표** 및 **수신 규칙 지표**에서 지표를 찾을 수 있습니다.

**참고**  
아직 확인하지 않은 경우 **수신 규칙 세트 지표** 및 **수신 규칙 지표**는 **SES**에 표시되지 않습니다.  
[이메일 수신 활성화](receiving-email-setting-up.md)
[만들어진 모든 수신 규칙](receiving-email-receipt-rules-console-walkthrough.md)
귀하의 규칙과 일치하는 메일을 모두 수신했습니다.

다음과 같은 메시지 지표를 사용할 수 있습니다.
+ **메시지 수신**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-metrics.html)
+ **메시지 게시**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/receiving-email-metrics.html)

**참고**  
위 표에서 *적용*이라는 용어는 발신자가 IP 필터 또는 SES의 내부 차단 목록으로 차단되지 않았으며, 규칙에 일치하는 수신자 조건과 일치하는 TLS 정책이 있음을 의미합니다.
예를 들어 수신 규칙 중 하나의 작업이 사용하도록 구성된 Amazon S3 버킷, Amazon SNS 주제 또는 Lambda 함수에 대한 권한을 삭제하거나 취소한 경우 게시 실패 오류가 발생할 수 있습니다.
한 번에 하나의 규칙 세트만 활성화할 수 있으므로 SES는 CloudWatch에서 선택한 시간 범위 동안 활성화된 모든 규칙 세트에 대해 *RuleSetName:[Active]* 로 표시된 집계 지표를 게시합니다. 이렇게 하면 알람 설정을 변경하지 않고도 규칙 세트를 자유롭게 변경할 수 있다는 장점이 있습니다.

**중요**  
수신 규칙 세트를 수정하기 위해 변경한 사항은 업데이트 후 Amazon SES가 수신하는 이메일에만 적용됩니다. 이메일은 항상 이메일을 수신할 당시의 수신 규칙 세트를 기준으로 평가됩니다.

CloudWatch 콘솔에 표시된 SES *수신 규칙 세트*에 대한 지표입니다.

![\[CloudWatch의 수신 규칙 세트 지표입니다.\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/inbound_cloudwatch_rule_set_metrics.png)


CloudWatch 콘솔에 표시된 SES *수신 규칙*의 지표입니다.

![\[CloudWatch의 수신 규칙 지표\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/inbound_cloudwatch_rule_metrics.png)
