Wie kann ich Amazon SES als Standardmethode zum Senden von E-Mails von meinem Server festlegen?

14

Ich möchte Amazon SES für alle E-Mails von unserem Server verwenden. Wir haben ein paar freiberufliche Designer mit PHP-Hosting, einigen Django / Python-Web-Apps und einigen Systemdienstprogrammen, die E-Mails senden.

Ich möchte daher, dass die Mail-Funktion von PHP, der Befehl mail und unsere Python-Apps sie alle verwenden können, vorzugsweise ohne sie alle auf ihre eigene Weise einrichten zu müssen.

Ich denke, ich brauche etwas wie Postfix, das auf localhost läuft und SES für die Zustellung verwendet, aber ich weiß nicht, wie das geht.

In den Dokumenten von Amazon heißt es, dass ich meinen Mail Transfer Agent (MTA) so einrichten muss, dass er das Skript ses-send-email.pl aufruft. Ich habe das Skript, bin mir aber nicht sicher, wie ich das erreichen soll.

Bin ich auf dem richtigen Weg? Wenn ja, wie kann ich Postfix für die Verwendung dieses Skripts konfigurieren?

Jake
quelle

Antworten:

14

Hier sind einige aus dem SES-Entwicklerhandbuch kopierte Elemente :

So integrieren Sie ses-send-email.pl in Postfix:

  1. Öffnen Sie die Datei master.cf. Auf vielen Systemen befindet sich diese Datei im /etc/postfixVerzeichnis.
  2. Konfigurieren Sie einen neuen Mail-Transport, indem Sie der master.cfDatei die folgenden zwei Zeilen hinzufügen und die Datei dann speichern.

    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}
    

Beachten Sie zu diesem Beispiel Folgendes:

  • Die Flags-Zeile beginnt mit mindestens einem Leerzeichen.
  • Der Parameter user muss einen Benutzer ohne Rootberechtigung (dh einen Benutzer ohne Administratorberechtigung) angeben. Der Benutzer mailuserdient nur zu Illustrationszwecken.
  • Das ses-send-email.plSkript und die Anmeldeinformationsdatei befinden sich im Verzeichnis / opt / third-party / amazon.
  • Der Endpunkt für die Kommunikation mit Amazon SES ist https://email.us-east-1.amazonaws.com

Sie sollten diese Parameter entsprechend ändern.

  1. Öffnen Sie die Datei main.cf im selben Verzeichnis wie master.cf und ändern Sie sie wie folgt:

    1. Suchen Sie nach der Zeile default_transport:

      • Wenn es existiert, ändern Sie es so, dass es so aussieht:

        default_transport = aws-email
        
      • Ist dies nicht der Fall, fügen Sie eine neue Zeile mit dem vorhergehenden Inhalt hinzu.

    2. Speichern Sie die Datei main.cf, wenn Sie fertig sind.
  2. Starten Sie Ihren Postfix-Server neu.

    /etc/init.d/postfix restart
    

Beachten Sie, dass dieser Befehl auf Ihrem bestimmten Server möglicherweise nicht exakt identisch ist. Ab diesem Zeitpunkt wird Ihre ausgehende E-Mail über Amazon SES gesendet. Sie können dies testen, indem Sie eine E-Mail-Nachricht über Ihren Postfix-Server senden und dann überprüfen, ob sie an ihrem Ziel eintrifft. Wenn die Nachricht nicht zugestellt wird, überprüfen Sie das Mail-Protokoll Ihres Systems auf Fehler. Auf vielen Systemen ist dies die/var/log/mail.log

- Ich habe ein einfaches Blog erstellt, in dem alle Dinge zusammengefasst sind, die ich kürzlich in Amazon Cloud und SES ausprobiert habe. Hier ist der Link: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

Netwiser
quelle
Super, danke. Ich gehe davon aus, dass die Konfiguration von Postfix der richtige Weg ist, um mein Problem zu lösen. Ich werde es versuchen und deine Antwort bald annehmen.
Jake
1

Da Sie Python / Django-Apps auf Ihrem Server hosten, empfiehlt es sich möglicherweise, Postfix an das Python-Äquivalent der AWS Perl-Skripte anzuschließen. Dieser Leitfaden enthält die Details:

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

Wenn Sie alternativ die Perl-Skripte verwenden möchten, aber (wie ich) feststellen, dass Ihre CPAN-Module fürchterlich veraltet sind, ist es möglicherweise einfacher, die Abhängigkeiten über den Paketmanager Ihres Betriebssystems zu installieren. Auf Ubuntu können Sie dies zum Beispiel tun mit:

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