Como posso bloquear e-mails de domínios ou endereços de e-mail específicos no Amazon SES?

6 minuto de leitura
0

Não quero que minha identidade do Amazon Simple Email Service (Amazon SES) receba e-mails de um determinado domínio ou endereço de e-mail.

Breve descrição

Para evitar que determinados domínios ou endereços de e-mail enviem e-mails para sua identidade do Amazon SES, siga estas etapas:

  1. Crie uma função do AWS Lambda. Configure a função para processar e-mails recebidos, avaliar o remetente e descartar a mensagem se o remetente corresponder a um domínio ou endereço de e-mail específico.
  2. Crie uma regra de recebimento do Amazon SES que encaminhe todos os e-mails recebidos para a função do Lambda.
  3. Verifique os logs do Amazon CloudWatch Logs da função para verificar se os e-mails estão sendo bloqueados.

Observação: você incorre em cobranças do Amazon SES e do Lambda ao adicionar a ação do Lambda à regra de recebimento do Amazon SES.

Resolução

Crie uma função do Lambda

1.    Abra o console do AWS Lambda. Selecione a região da AWS que você usa para o Amazon SES. A função do Lambda deve estar na mesma região da AWS usada para o Amazon SES. Para obter mais informações, consulte Ação para invocar uma função do Lambda.

2.    Selecione Criar função.

3.    Selecione Criar do zero.

4.    Em Nome da função, insira um nome para sua função. Por exemplo, insira “SESReceiptRule”.

5.    Em Runtime, selecione uma linguagem para a sua função. Node.js 14.x está selecionado neste exemplo.

6.    Em Arquitetura, selecione uma arquitetura para o código da função.

7.    Em Permissões, expanda Alterar a função de execução padrão.

8.    Em Função de execução, selecione Criar uma nova função com permissões básicas do Lambda.

9.    Selecione Criar função.

10.    Na seção Fonte do código, na guia index.js, insira o seguinte código:

// 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.    Em Variáveis de ambiente, em Chave, insira “blockingList”.
Observação: não há limite para o número de variáveis de ambiente que você pode criar. O tamanho total do conjunto não pode exceder 4 KB. Para obter mais informações, consulte Como usar variáveis de ambiente do AWS Lambda.

12.    Para o Valor de “blockingList”, insira uma lista separada por vírgula dos endereços de e-mail e domínios que você deseja bloquear. Por exemplo, digite “exemplo.com, JohnDoe@exemplo.com”.
Observação: você não precisa alterar o código da função do Lambda para editar a lista de endereços de e-mail e domínios.

13.    Selecione Arquivo e, em seguida, selecione Salvar.

Crie uma regra de recebimento do Amazon SES

  1. Abra o console do Amazon SES.
  2. No painel de navegação, selecione Recebimento de e-mail.
  3. Se você quiser adicionar a regra a um conjunto de regras ativo e existente, vá para a etapa 4. Para criar um novo conjunto de regras, selecione Criar um conjunto de regras, insira o nome do conjunto de regras e selecione Criar conjunto de regras.
    Observação: se você criar um novo conjunto de regras, certifique-se de selecionar o conjunto de regras e, em seguida, selecionar Definir como conjunto de regras ativo.
  4. Selecione Exibir conjunto de regras ativo.
  5. Escolha Criar regra.
    Observação: você também pode optar por atualizar uma regra existente com os mesmos valores descritos nas etapas a seguir.
  6. Em Definir configurações de regra, insira as seguintes informações:
    Em Nome da regra, insira um nome para a regra.
    Em Status, marque a caixa Ativado para criar a regra como uma regra ativa. Em seguida, escolha Avançar.
  7. Em Condições de destinatários, escolha Adicionar nova condição de destinatário.
  8. Em Condição de destinatário, insira os endereços de e-mail ou domínios associados à sua identidade do Amazon SES. Em seguida, escolha Avançar.
    Importante: insira o endereço de e-mail ou domínio que você deseja impedir de receber e-mails de remetentes específicos. Não insira o endereço de e-mail ou domínio do qual você deseja bloquear e-mails. Por exemplo, se sua identidade do Amazon SES usa o endereço de e-mail “JaneRoe@exemplo.net” e você deseja bloquear e-mails de “example.com”, digite “JaneRoe@exemplo.net”.
  9. Na tela Adicionar ações, em Adicionar nova ação, selecione Invocar função do AWS Lambda. Insira as seguintes informações:
    Em Função do Lambda, selecione a função que você criou.
    Em Tipo de invocação, selecione Invocação RequestResponse.
    (Opcional) Configure o tópico do SNS conforme exigido pelo seu caso de uso. Ou você pode deixar esse campo em branco. Para obter mais informações sobre esse campo, consulte Ação para invocar uma função do Lambda. Em seguida, escolha Avançar.
  10. Escolha Criar regra.
    Observação: você pode receber uma caixa de diálogo Permissões ausentes com a mensagem “O SES não conseguiu acessar o recurso [sua função do Lambda].” Esse erro significa que o Amazon SES precisa de permissões para a função. Selecione Adicionar permissões para configurar as permissões necessárias.

Verifique os logs do CloudWatch Logs da função

Depois de configurar a função do Lambda e a regra do Amazon SES, siga estas etapas para verificar se os e-mails estão bloqueados:

1.    Abra o console do CloudWatch.

2.    No painel de navegação, em Logs, escolha Grupos de logs.

3.    Na lista de grupos de logs, escolha o grupo de logs da sua função do Lambda. Por exemplo, escolha /aws/lambda/nome_da_sua_funcao.

4.    Em Fluxo de logs, selecione o fluxo de logs que você deseja verificar. O fluxo de logs exibe as mensagens de e-mail e os domínios que a função do Lambda está processando. A saída é semelhante ao exemplo a seguir:

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

Informações relacionadas

Conceitos básicos do Lambda

Controle baseado em destinatário usando regras de recebimento

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses