Comment puis-je bloquer les e-mails provenant de domaines ou d'adresses e-mail spécifiques dans Amazon SES ?

Lecture de 6 minute(s)
0

Je ne veux pas que mon identité Amazon Simple Email Service (Amazon SES) reçoive des e-mails provenant d'un certain domaine ou d'une certaine adresse e-mail.

Brève description

Pour empêcher certains domaines ou adresses e-mail d'envoyer des e-mails à votre identité Amazon SES, procédez comme suit :

  1. Créez une fonction AWS Lambda. Configurez la fonction pour traiter les e-mails entrants, évaluer l'expéditeur et supprimer le message si l'expéditeur correspond à un domaine ou à une adresse e-mail spécifique.
  2. Créez une règle de réception Amazon SES qui achemine tous les e-mails entrants vers la fonction Lambda.
  3. Consultez les journaux Amazon CloudWatch Logs de la fonction pour vérifier que les e-mails sont bloqués.

Remarque : des frais Amazon SES et Lambda vous sont facturés lorsque vous ajoutez l'action Lambda à la règle de réception Amazon SES.

Résolution

Créer une fonction Lambda

1.    Ouvrez la console AWS Lambda. Sélectionnez la région AWS que vous utilisez pour Amazon SES. La fonction Lambda doit se trouver dans la même région AWS que celle que vous utilisez avec Amazon SES. Pour plus d'informations, consultez la page Invoquer l'action de fonction Lambda.

2.    Sélectionnez Créer une fonction.

3.    Sélectionnez Créer à partir de zéro.

4.    Dans le champ Nom de la fonction, saisissez le nom de votre fonction. Par exemple, saisissez « SESReceiptRule ».

5.    Dans le champ Exécution, sélectionnez une langue pour votre fonction. Dans cet exemple, Node.js 14.x est sélectionné.

6.    Dans le champ Architecture, choisissez une architecture pour votre code de fonction.

7.    Dans le champ Autorisations, développez Modifier le rôle d'exécution par défaut.

8.    Dans le champ Rôle d'exécution, choisissez Créer un nouveau rôle avec des autorisations Lambda de base.

9.    Sélectionnez Créer une fonction.

10.    Sous l'onglet Source du code, sous l'onglet index.js, saisissez le code suivant :

// 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.    Sous Variables d'environnement, dans le champ Clé, saisissez « blockingList ».
**Remarque :**le nombre de variables d'environnement que vous pouvez créer est illimité. La taille totale de l'ensemble ne peut pas dépasser 4 Ko. Pour plus d'informations, consultez la page Utilisation des variables d'environnement AWS Lambda.

12.    Dans le champ valeur de « blockingList », saisissez une liste des adresses e-mail et des domaines, séparés par une virgule, que vous souhaitez bloquer. Par exemple, saisissez « exemple.com, JohnDoe@example.com ».
**Remarque :**il n'est pas nécessaire de modifier le code de fonction Lambda pour modifier la liste des adresses e-mail et des domaines.

13.    Choisissez Fichier, puis Enregistrer.

Créer une règle de réception Amazon SES

  1. Ouvrez la console Amazon SES.
  2. Dans le volet de navigation, choisissez Réception d'e-mails.
  3. Si vous souhaitez ajouter la règle à un ensemble existant de règles actives, passez à l'étape 4. Pour créer un nouvel ensemble de règles, choisissez Créer un ensemble de règles, saisissez un nom d'ensemble de règles, puis choisissez Créer un ensemble de règles.
    Remarque : si vous créez un nouvel ensemble de règles, sélectionnez-le, puis choisissez Définir en tant que jeu de règles actif.
  4. Choisissez Afficher l'ensemble de règles actif.
  5. Choisissez Créer une règle.
    Remarque : vous pouvez également choisir de mettre à jour une règle existante avec les mêmes valeurs que celles décrites dans les étapes suivantes.
  6. Pour Définir les paramètres de règles, saisissez les informations suivantes :
    Dans le champ Nom de la règle, saisissez le nom de la règle.
    Dans le champ Statut, cochez la case Activé pour créer la règle en tant que règle active. Ensuite, choisissez Suivant.
  7. Dans le champ Conditions de destinataire, sélectionnez Ajouter une nouvelle condition de destinataire.
  8. Dans le champ Conditions de destinataire, saisissez les adresses e-mail ou les domaines associés à votre identité Amazon SES. Ensuite, choisissez Suivant.
    **Important :**saisissez l'adresse e-mail ou le domaine pour lesquels vous souhaitez empêcher la réception d'e-mails de la part d'expéditeurs spécifiques. Ne saisissez pas l'adresse e-mail ou le domaine dont vous souhaitez bloquer les e-mails. Par exemple, si votre identité Amazon SES utilise l'adresse e-mail « JaneRoe@exemple.net » et que vous souhaitez bloquer les e-mails provenant de « exemple.com », saisissez « JaneRoe@exemple.net ».
  9. Sur l'écran Ajouter des actions, sous Ajouter une nouvelle action, sélectionnez Invoquer la fonction AWS Lambda. Ensuite, saisissez les informations suivantes :
    Dans le champ Fonction Lambda, sélectionnez la fonction que vous avez créée.
    Dans le champ Type d'appel, sélectionnez Invocation RequestResponse.
    (Facultatif) Configurez la rubrique SNS selon votre cas d'utilisation. Vous pouvez également laisser ce champ vide. Pour plus d'informations sur ce champ, consultez la section Invoquer l'action de fonction Lambda. Ensuite, choisissez Suivant.
  10. Choisissez Créer une règle.
    Remarque : une boîte de dialogue Autorisations manquantes peut s'afficher avec le message « SES n'a pas pu accéder à la ressource [votre fonction Lambda]. » Cette erreur signifie qu'Amazon SES a besoin d'autorisations pour accéder à cette fonction. Choisissez Ajouter des autorisations pour configurer les autorisations requises.

Vérifier les journaux CloudWatch de la fonction

Après avoir configuré la fonction Lambda et la règle Amazon SES, procédez comme suit pour vérifier que les e-mails sont bloqués :

1.    Ouvrez la console CloudWatch.

2.    Dans le volet de navigation, sous Journaux, sélectionnez Groupes de journaux.

3.    Dans la liste des groupes de journaux, choisissez le groupe de journaux de votre fonction Lambda. Par exemple, choisissez /aws/lambda/name_of_your_function.

4.    Sous Flux de journaux, sélectionnez le flux de journal que vous souhaitez vérifier. Le flux du journal affiche les messages électroniques et les domaines traités par la fonction Lambda. Vous obtiendrez une sortie de ce type :

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

Informations connexes

Premiers pas avec Lambda

Contrôle basé sur le destinataire à l'aide de règles de réception

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois