Comment bloquer les e-mails provenant de certains domaines et certaines adresses e-mail dans Amazon SES ?

Date de la dernière mise à jour : 04/09/2019

Je souhaite que mon identité Amazon Simple Email Service (Amazon SES) ne reçoive pas d'e-mails en provenance d'un certain domaine ou d'une certaine adresse e-mail. Comment puis-je bloquer ces e-mails ?

Brève description

Pour empêcher certains domaines ou certaines adresses e-mail d'envoyer des e-mails à votre identité Amazon SES, effectuez les étapes suivantes :

1.    Créez une fonction AWS Lambda 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.    Vérifiez les journaux Amazon CloudWatch de la fonction pour vérifier les e-mails 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 AWS Lambda

1.    Ouvrez la console AWS Lambda.

2.    Dans le sélecteur de région de la barre de navigation, sélectionnez la région AWS que vous utilisez pour Amazon SES. La fonction Lambda doit se trouver dans la même Région que celle que vous utilisez avec Amazon SES. Pour plus d'informations, consultez la section Action d'appel d'une fonction Lambda.

3.    Choisissez Create function (Créer une fonction).

4.    Sélectionnez Author from scratch (Créer à partir de zéro).

5.    Pour Function Name (Nom de la fonction), saisissez un nom pour votre fonction. Par exemple, vous pouvez entrer « SESReceiptRule ».

6.    Pour Runtime (Environnement d'exécution), sélectionnez Node.js 10.x.

7.    Sous Permissions (Autorisations), développez Choose or create an execution role (Choisir ou créer un rôle d'exécution).

8.    Pour Execution Role (Rôle d'exécution), sélectionnez Create a new role with basic Lambda permissions (Créer un rôle avec des autorisations Lambda de base).

9.    Choisissez Create function (Créer une fonction).

10.    Sous Function code (Code de fonction), entrez 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 Environment variables (Variables d'environnement), pour Key (Clé), saisissez « blockingList ».

Remarque : il n'existe pas de limite au nombre de variables d'environnement que vous pouvez créer tant que la taille totale de l'ensemble ne dépasse pas 4 Ko. Pour plus d'informations, consultez Utilisation des variables d'environnement AWS Lambda.

12.    Pour la Value (valeur) de « blockingList », saisissez la liste des adresses e-mail et des domaines, séparés par des virgules, que vous souhaitez bloquer. Par exemple, entrez « example.com, JohnDoe@example.com ».

Remarque : vous pouvez modifier la liste des adresses e-mail et des domaines sans modifier le code de la fonction Lambda.

13.    Choisissez Save (Enregistrer).

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

1.    Ouvrez la console Amazon SES.

2.    Dans le volet de navigation, sous Email Receiving (Réception d'e-mails), choisissez Rule Sets (Ensembles de règles).

3.    Si vous souhaitez ajouter la règle à un ensemble de règles existant, passez à l'étape 4. Pour créer un nouvel ensemble de règles, choisissez Create a Rule Set (Créer un ensemble de règles), entrez un nom d'ensemble de règles, puis choisissez Create a Rule Set (Créer un ensemble de règles).

Remarque : Si vous créez un nouvel ensemble de règles, assurez-vous de sélectionner l'ensemble de règles, puis de choisir Set as Active Rule Set (Définir comme ensemble de règles actif).

4.    Choisissez View Active Rule Set (Afficher l'ensemble de règles actif).

5.    Choisissez Create Rule (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 étape suivantes.

6.    Pour Recipients (Destinataires), entrez les adresses e-mail ou les domaines associés à votre identité Amazon SES.

Important : Entrez l'adresse e-mail ou le domaine pour lequel vous souhaitez empêcher la réception d'e-mails de la part d'expéditeurs spécifiques. N'entrez pas l'adresse e-mail ou le domaine dont vous voulez 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 ».

7.    Choisissez Next step (Étape suivante).

8.    Sous Actions, pour Add action (Ajouter une action), sélectionnez Lambda. Ensuite, renseignez les champs suivants :
Pour Lambda function (Fonction Lambda), sélectionnez la fonction que vous avez créée.
Pour Invocation type (Type d'innovation), sélectionnez RequestResponse.
(Facultatif) Configurez la rubrique SNS en fonction de votre cas d'utilisation. Vous pouvez également laisser le champ vide. Pour plus d'informations sur ce champ, consultez Action Lambda.

9.    Choisissez Next step (Étape suivante).

10.    Sous Rule Details (Informations de règle), renseignez les champs suivants :
Pour Rule name (Nom de règle), entrez un nom pour votre règle.
Pour Enabled (Activé), vérifiez que cette case est cochée de sorte que la règle soit créée en tant que règle active.
(Facultatif) Sélectionnez Require TLS (Demander l'authentification TLS) ou Enable spam and virus scanning (Activer la recherche de virus et le filtrage du courrier indésirable) selon vos besoins.
Pour Rule set (Ensemble de règles), vérifiez que votre ensemble de règles actif est sélectionné. Un ensemble de règles actif comprend (Active) dans son nom.
Pour Insert after rule (Insérer après la règle), sélectionnez la position que vous souhaitez attribuer à votre règle dans l'ensemble de règles.

11.    Choisissez Next step (Étape suivante).

12.    Choisissez Create rule (Créer une règle).

Remarque : si une boîte de dialogue Missing Permissions (Autorisations manquantes) s'affiche avec le message « SES was unable to access the resource [your Lambda function] », (SES n'a pas pu accéder à la ressource [votre fonction Lambda]), cela implique qu'Amazon SES a besoin d'autorisations pour la fonction. Vous pouvez choisir Add permissions (Ajouter des autorisations) pour configurer les autorisations requises.

Vérifier les journaux Amazon CloudWatch de la fonction

Après avoir défini la fonction Lambda et la règle Amazon SES, effectuez les étapes suivantes pour vérifier les e-mails bloqués :

1.    Ouvrez la console CloudWatch.

2.    Dans le volet de navigation, choisissez Logs (Journaux).

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

4.    Choisissez le flux de journaux que vous souhaitez vérifier. Le flux de journaux affiche les e-mails et les domaines traités par la fonction Lambda, comme suit :

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?