Comment puis-je faire d'Amazon SES la méthode par défaut d'envoi de courrier depuis mon serveur?

14

Je voudrais commencer à utiliser Amazon SES pour tous les e-mails de notre serveur. Nous avons quelques concepteurs indépendants avec hébergement PHP, certaines applications Web Django / Python et également quelques utilitaires système qui envoient des courriels.

J'aimerais donc que la fonction de messagerie de PHP, la commande de messagerie en ligne de commande et nos applications python puissent toutes l'utiliser, de préférence sans avoir à les configurer toutes à leur manière.

Je pense que ce dont j'ai besoin est d'avoir quelque chose comme Postfix fonctionnant sur localhost et utilisant SES pour sa livraison mais je ne sais pas comment faire.

Les documents d'Amazon indiquent que j'ai besoin de configurer mon agent de transfert de messagerie (MTA) pour qu'il appelle le script ses-send-email.pl. J'ai le script mais je ne sais pas comment y parvenir.

Suis-je sur la bonne voie? Si oui, comment puis-je configurer Postfix pour utiliser ce script?

Jake
la source

Réponses:

14

Voici quelques éléments copiés du guide du développeur SES :

Pour intégrer ses-send-email.pl avec Postfix:

  1. Ouvrez le fichier master.cf. Sur de nombreux systèmes, ce fichier réside dans le /etc/postfixrépertoire.
  2. Configurez un nouveau transport de courrier en ajoutant les deux lignes suivantes au master.cffichier, puis en enregistrant le fichier.

    aws-email  unix  -       n       n       -       -       pipe
      flags=R user=mailuser argv=/opt/third-party/amazon/ses-send-email.pl -r -k /opt/third-party/amazon/aws-credentials -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

Notez les points suivants concernant cet exemple:

  • La ligne des drapeaux commence par au moins un caractère d'espacement.
  • Le paramètre utilisateur doit spécifier un utilisateur non root (c'est-à-dire un utilisateur non administratif). L'utilisateur mailuserest uniquement à titre illustratif.
  • Le ses-send-email.plscript et le fichier d'informations d'identification résident dans le répertoire / opt / third-party / amazon.
  • Le point de terminaison pour communiquer avec Amazon SES est https://email.us-east-1.amazonaws.com

Vous devez modifier ces paramètres si nécessaire.

  1. Ouvrez le fichier main.cf dans le même répertoire que master.cf et modifiez-le comme suit:

    1. Recherchez la ligne default_transport:

      • S'il existe, changez-le pour qu'il ressemble à ceci:

        default_transport = aws-email
        
      • S'il n'existe pas, ajoutez une nouvelle ligne avec le contenu précédent.

    2. Enregistrez le fichier main.cf lorsque vous avez terminé.
  2. Redémarrez votre serveur Postfix.

    /etc/init.d/postfix restart
    

Notez que cette commande peut ne pas être exactement la même sur votre serveur particulier. À partir de ce moment, votre e-mail sortant est envoyé via Amazon SES.Vous pouvez le tester en envoyant un e-mail via votre serveur Postfix, puis en vérifiant qu'il arrive à destination. Si le message n'est pas remis, consultez le journal de messagerie de votre système pour les erreurs. Sur de nombreux systèmes, c'est le/var/log/mail.log

- J'ai créé un blog simple rassemblant toutes les choses que j'ai récemment essayées dans Amazon Cloud et SES. Voici le lien: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

Netwiser
la source
Génial merci. Je suppose que cela signifie que la configuration de postfix est la bonne façon de résoudre mon problème. Je vais essayer ceci et accepter votre réponse bientôt.
Jake
1

Puisque vous hébergez des applications Python / Django sur votre serveur, il peut être préférable de connecter Postfix à l'équivalent Python des scripts AWS Perl. Ce guide contient les détails:

http://aws.amazon.com/articles/2405502737055650

Alternativement, si vous souhaitez utiliser les scripts Perl mais avez trouvé (comme moi) que vos modules CPAN sont horriblement obsolètes, un itinéraire plus simple peut être d'installer les dépendances via le gestionnaire de packages de votre système d'exploitation. Par exemple, sur ubuntu, vous pouvez le faire avec:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
Tobias McNulty
la source