Amazon SES에서 특정 도메인 또는 이메일 주소에서 오는 이메일을 차단하려면 어떻게 해야 하나요?

5분 분량
0

Amazon Simple Email Service(Amazon SES) 자격 증명을 통해 특정 도메인이나 이메일 주소의 이메일을 받고 싶지 않습니다. 이러한 이메일을 차단하려면 어떻게 해야 하나요?

간략한 설명

특정 도메인이나 이메일 주소에서 Amazon SES 자격 증명으로 이메일을 전송하지 못하게 하려면 다음 단계를 따르세요.

1.    AWS Lambda 함수를 생성하여 수신 이메일을 처리하고 발신자를 평가한 다음 발신자가 특정 도메인 또는 이메일 주소와 일치하는 경우 메시지를 삭제합니다.

2.    모든 수신 이메일을 Lambda 함수로 라우팅하는 Amazon SES 수신 규칙을 만듭니다.

3.    함수의 Amazon CloudWatch logs를 확인하여 이메일이 차단되는지 확인합니다.

참고: Amazon SES 수신 규칙에 Lambda 작업을 추가하면 Amazon SES 및 Lambda 요금이 발생합니다.

해결 방법

AWS Lambda 함수 생성

1.    AWS Lambda 콘솔을 엽니다.

2.    탐색 모음의 [Region selector]에서 Amazon SES에 사용 중인 AWS 지역을 선택합니다. Lambda 함수는 Amazon SES에서 사용하는 지역과 동일한 지역에 있어야 합니다. 자세한 내용은 Lambda 함수 작업 호출을 참조하세요.

3.    [<t1>함수 생성</t1>]을 선택합니다.

4.    [Author from scratch]를 선택합니다.

5.    [Function Name]에 함수 이름을 입력합니다. 예를 들어 "SESReceiptRule"을 입력할 수 있습니다.

6.    [Runtime]에서 [Node.js 10.x]를 선택합니다.

7.    [Permissions]에서 [Choose or create an execution role]을 확장합니다.

8.    [Execution Role]에서 [Create a new role with basic Lambda permissions]를 선택합니다.

9.    [Create function]을 선택합니다.

10.    [Function code]에 다음 코드를 입력합니다.

// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0

'use strict';

const AWS = require('aws-sdk');

exports.handler = (event, context, callback) => {
    console.log('Blocking email filter starting');

    const sesNotification = event.Records[0].ses;
    const messageId = sesNotification.mail.messageId;
    const receipt = sesNotification.receipt;
    const mail = sesNotification.mail;  
 
    // Convert the environment variable into array. Clean spaces from it.
    var blockingListString = process.env.blockingList;
    blockingListString = blockingListString.replace(/\s/g,'');  
    var blockingListArray = blockingListString.split(",");

    // Check if the mail source matches with any of the email addresses or domains defined in the environment variable
    function isListed() {
        var length = blockingListArray.length;
        for(var i = 0; i < length; i++) {
            if (mail.source.endsWith(blockingListArray[i]))
                return true;
        }
        return false;
    }

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

        // Processing the message
    if (isListed()) {
            callback(null, {'disposition':'STOP_RULE_SET'});
            console.log('Rejecting messageId: ', messageId, ' - Source: ', mail.source, ' - Recipients: ',receipt.recipients,' - Subject: ', mail.commonHeaders['subject']);
    }
    else {
        console.log('Accepting messageId:', messageId, ' - Source: ', mail.source, ' - Recipients: ',receipt.recipients,' - Subject: ', mail.commonHeaders['subject']);
        callback();
    }
};

11.    환경 변수 아래의 에 "blockingList"를 입력합니다.

참고: 집합의 총 크기가 4KB를 초과하지 않는 한 생성할 수 있는 환경 변수의 수에는 제한이 없습니다. 자세한 내용은 AWS Lambda 환경 변수 사용을 참조하세요.

12.    "blockingList"의 으로, 차단할 이메일 주소 및 도메인 목록을 쉼표로 구분하여 입력합니다. 예를 들어 "example.com, JohnDoe@example.com"을 입력합니다.

참고: Lambda 함수 코드를 변경하지 않고 이메일 주소 및 도메인 목록을 편집할 수 있습니다.

13.    **저장(Save)**을 선택합니다.

Amazon SES 수신 규칙 생성

1.    Amazon SES 콘솔을 엽니다.

2.    탐색 창의 이메일 수신 아래에서 규칙 세트를 선택합니다.

3.    이 규칙을 기존의 활성 규칙 세트에 추가하려면 4단계로 건너뛰십시오. 새 규칙 세트를 생성하려면 규칙 세트 생성을 선택하고 규칙 세트의 이름을 입력한 다음 규칙 세트 생성을 선택합니다.

참고: 규칙 세트를 새로 생성하는 경우, 해당 규칙 세트를 선택한 다음 **Set as Active Rule Set(활성 규칙 세트로 설정)**를 선택해야 합니다.

4.    **활성 규칙 세트 보기(View Active Rule Set)**를 선택합니다.

5.    **규칙 생성(Create Rule)**을 선택합니다.

참고: 다음 단계에서 설명하는 것과 동일한 값으로 기존의 규칙을 업데이트하도록 선택할 수도 있습니다.

6.    [Recipients]에 Amazon SES 자격 증명과 연결된 이메일 주소 또는 도메인을 입력합니다.

중요: 특정 발신자의 이메일을 수신하지 않을 이메일 주소 또는 도메인을 입력합니다. 이메일을 차단할 이메일 주소 또는 도메인을 입력하지 마십시오. 예를 들어 Amazon SES 자격 증명이 이메일 주소 "JaneRoe@example.net"을 사용하고 "example.com"에서 보내는 이메일을 차단하려면 "JaneRoe@example.net"을 입력합니다.

7.    [Next Step]을 선택하십시오.

8.    [Actions]의 [Add action]에서 [Lambda]를 선택합니다. 그리고 다음 필드를 작성합니다.
[Lambda function]에서 생성한 함수를 선택합니다.
[Invocation type]에서 [RequestResponse]를 선택합니다.
(선택 사항) 사용 사례에 따라 SNS 주제를 구성합니다. 또는 이 필드를 비워 둘 수 있습니다. 이 필드에 대한 자세한 내용은 [Lambda Action]을 참조하십시오.

9.    [Next Step]을 선택하십시오.

10.    [Rule Details]에서 다음 필드를 작성합니다.
규칙 이름에 규칙 이름을 입력합니다.
Enabled(사용) 확인란을 선택하여 해당 규칙이 활성 규칙으로 생성되도록 해야 합니다.
(선택 사항) 사용 사례에 필요한 경우 Require TLS(TLS 요청) 또는 **Enable spam and virus scanning(스팸 및 바이러스 스캔 사용)**을 선택합니다.
규칙 세트에서 활성 규칙 세트가 선택되었는지 확인합니다. 활성 규칙 세트는 이름에 **(Active)**가 있습니다.
**Insert after rule(규칙 뒤에 삽입)**에서는 규칙 세트에 해당 규칙을 넣을 위치를 선택합니다.

11.    [Next Step]을 선택하십시오.

12.    **규칙 생성(Create Rule)**을 선택합니다.

참고: [Missing Permissions] 대화상자에 “SES was unable to access the resource [your Lambda function]”이라는 메시지가 표시되면 Amazon SES는 함수에 대한 권한이 필요합니다. [Add permissions]를 선택하여 필요한 권한을 구성할 수 있습니다.

함수의 Amazon CloudWatch logs 확인

Lambda 함수 및 Amazon SES 규칙을 설정한 후 다음 단계에 따라 이메일이 차단되는지 확인합니다.

1.    CloudWatch 콘솔을 엽니다.

2.    탐색 창에서 로그를 선택합니다.

3.    로그 그룹 목록에서 Lambda 함수의 로그 그룹을 선택합니다. 예를 들어 /aws/lambda/name_of_your_function을 선택합니다.

4.    확인할 로그 스트림을 선택합니다. Lambda 함수에서 처리 중인 이메일 메시지 및 도메인이 다음과 같이 로그 스트림에 표시됩니다.

14:08:25 START RequestId: aa939984-1b9b-11e7-83d2-efc6877bdc9b Version: $LATEST
14:08:25 2017-04-07T14:08:25.957Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Blocking email filter starting
14:08:25 2017-04-07T14:08:25.958Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Processing message: jc0iurgrtkrsrs7f5pk0rsmf4r3q0poikdjfdi01
14:08:25 2017-04-07T14:08:25.959Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Rejecting messageId: jc0iurgrtkrsrs7f5pk0rsmf4r3q0poikdjfdi01 - Source:
user@example.com - Recipients: [ 'user@domain.com' ] - Subject: This is an unwanted message
14:08:25 END RequestId: aa939984-1b9b-11e7-83d2-efc6877bdc9b

관련 정보

Lambda 시작하기

수신 규칙을 사용한 수신자 기반 제어

AWS 공식
AWS 공식업데이트됨 4년 전