

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

# 작업 옵션
<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)을 참조하세요.