Amazon SES에서 특정 도메인 또는 이메일 주소로부터의 이메일을 차단하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Simple Email Service (Amazon SES) ID가 특정 도메인이나 이메일 주소로부터의 이메일을 수신하고 싶지 않습니다.

간략한 설명

특정 도메인이나 이메일 주소로부터 사용중의 Amazon SES ID로 이메일을 전송하는 것을 방지하려면 다음 단계를 완료합니다.

  1. AWS Lambda 함수를 생성합니다. 수신 이메일을 처리하고, 발신자를 평가하고, 발신자가 특정 도메인 또는 이메일 주소와 일치하면 메시지를 삭제하도록 함수를 구성합니다.
  2. 모든 수신 이메일을 Lambda 함수로 라우팅하는 Amazon SES 수신 규칙을 생성합니다.
  3. 함수의 Amazon CloudWatch 로그를 확인하여 이메일이 차단되었는지 확인합니다.

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

해결 방법

Lambda 함수 생성

1.    AWS Lambda 콘솔을 엽니다. Amazon SES에 사용할 AWS 리전을 선택합니다. Lambda 함수는 Amazon SES에서 사용하는 것과 동일한 AWS 리전에 있어야 합니다. 자세한 내용은 AWS Lambda 함수 호출 작업을 참조하세요.

2.    함수 생성을 선택합니다.

3.    처음 작성자를 선택합니다.

4.    함수 이름에 함수 이름을 입력합니다. 예를 들어, “SESReceiptRule”을 입력합니다.

5.    런타임에서 함수에 사용할 언어를 선택합니다. 이 예에서는Node.js 14.x가 선택되었습니다.

6.    아키텍처에서는 함수 코드의 아키텍처를 선택합니다.

7.    권한기본 실행 역할 변경을 확장합니다.

8.    실행 역할에서 기본 Lambda 권한으로 새 역할 생성를 선택합니다.

9.    함수 생성을 선택합니다.

10.    코드 소스 섹션의 **index.js ** 탭에서 다음 코드를 입력합니다.

// 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.    파일을 선택한 다음 저장을 선택합니다.

아마존 SES 수신 규칙 생성

  1. Amazon SES 콘솔을 엽니다.
  2. 탐색 창에서 이메일 수신을 선택합니다.
  3. 기존 활성 규칙 세트에 규칙을 추가하려면 4단계로 건너뜁니다. 새 규칙 세트를 만들려면 규칙 세트 생성을 선택하고 규칙 세트 이름을 입력한 다음 규칙 세트 생성을 선택합니다.
    **참고:**새 규칙 세트를 만들려면 해당 규칙 세트를 선택한 다음 활성 규칙 세트로 설정을 선택합니다.
  4. 활성 규칙 세트 보기를 선택합니다.
  5. 규칙 생성을 선택합니다.
    **참고:**다음 단계에서 설명하는 것과 동일한 값으로 기존 규칙을 업데이트하도록 선택할 수도 있습니다.
  6. 규칙 설정 정의에 다음 정보를 입력합니다.
    규칙 이름에 사용자의 규칙 이름을 입력합니다.
    상태에서 활성화됨 확인란을 선택하여 규칙을 활성 규칙으로 생성합니다. 그런 다음 다음을 선택합니다.
  7. 수신자 조건에서 새 수신자 조건 추가를 선택합니다.
  8. 수신자 조건에 Amazon SES ID와 연결된 이메일 주소 또는 도메인을 입력합니다. 그런 다음 다음을 선택합니다.
    **중요:**특정 발신자로부터 이메일을 받지 못하게 하려는 이메일 주소 또는 도메인을 입력합니다. 이메일을 차단하려는 이메일 주소 또는 도메인은 입력하지 마세요. 예를 들어, Amazon SES ID가 이메일 주소 "JaneRoe@example.net“을 사용하는데 “example.com”에서 오는 이메일을 차단하려면 "JaneRoe@example.net“을 입력하십시오.
  9. 작업 추가 화면의 새 작업 추가에서 AWS Lambda 함수 호출을 선택합니다. 다음 정보를 입력합니다.
    Lambda 함수의 경우 생성한 함수를 선택합니다.
    호출 유형에 ** RequestResponse 간접 호출을 선택합니다.
    (선택 사항) 사용 사례에 따라 ** SNS 주제
    를 구성합니다. 또는 이 필드를 비워둘 수 있습니다. 이 필드에 대한 자세한 내용은 Lambda 함수 호출 작업을 참조하세요. 그런 다음 다음을 선택합니다.
  10. 규칙 생성을 선택합니다.
    참고:“SES가[사용자 Lambda 함수] 리소스에 액세스할 수 없습니다.” 라는 메시지와 함께 권한 누락 대화 상자가 표시될 수 있습니다. 이 오류는 Amazon SES에 해당 함수에 대한 권한이 필요다는 것을 의미합니다. 권한 추가를 선택하여 필요한 권한을 구성합니다.

**함수의 CloudWatch 로그 확인 **

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: $LATEST14: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 공식업데이트됨 8달 전