Jak ustawić Amazon SES jako domyślną metodę wysyłania poczty z mojego serwera?

14

Chciałbym zacząć używać Amazon SES do wszystkich e-maili z naszego serwera. Mamy kilku niezależnych projektantów z hostingiem PHP, niektóre aplikacje internetowe Django / Python, a także narzędzia systemowe, które wysyłają e-maile.

Dlatego chciałbym mieć funkcję poczty PHP, komendę wiersza poleceń i nasze aplikacje Pythona, aby mogły z niej korzystać, najlepiej bez konieczności konfigurowania ich na swój własny sposób.

Myślę, że potrzebuję mieć coś takiego jak Postfix działający na localhost i używający SES do jego dostarczania, ale nie wiem jak to zrobić.

Dokumentacja Amazon stwierdza, że ​​muszę skonfigurować mojego agenta przesyłania poczty (MTA), aby wywoływał skrypt ses-send-email.pl. Mam skrypt, ale nie jestem pewien, jak to osiągnąć.

Czy jestem na dobrej drodze? Jeśli tak, to w jaki sposób mogę skonfigurować Postfix do używania tego skryptu?

Jake
źródło

Odpowiedzi:

14

Oto niektóre elementy skopiowane z przewodnika programisty SES :

Aby zintegrować ses-send-email.pl z Postfix:

  1. Otwórz plik master.cf. W wielu systemach plik ten znajduje się w /etc/postfixkatalogu.
  2. Skonfiguruj nowy transport poczty, dodając do master.cfpliku następujące dwa wiersze , a następnie zapisując plik.

    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}
    

Zwróć uwagę na następujące przykłady:

  • Linia flag zaczyna się od co najmniej jednego znaku białych znaków.
  • Parametr użytkownika musi określać użytkownika innego niż root (tj. Użytkownika niebędącego administratorem). Użytkownik mailusersłuży wyłącznie do celów ilustracyjnych.
  • ses-send-email.plSkrypt i zamieszkują plik poświadczeń w katalogu / opt / trzeciej / Amazon.
  • Punktem końcowym komunikacji z Amazon SES jest https://email.us-east-1.amazonaws.com

Powinieneś odpowiednio zmodyfikować te parametry.

  1. Otwórz plik main.cf w tym samym katalogu, co master.cf i zmodyfikuj go w następujący sposób:

    1. Poszukaj linii default_transport:

      • Jeśli istnieje, zmień go tak, aby wyglądał następująco:

        default_transport = aws-email
        
      • Jeśli nie istnieje, dodaj nowy wiersz z poprzednią treścią.

    2. Po zakończeniu zapisz plik main.cf.
  2. Uruchom ponownie serwer Postfix.

    /etc/init.d/postfix restart
    

Pamiętaj, że to polecenie może nie być dokładnie takie samo na danym serwerze. Od tego momentu wychodząca wiadomość e-mail jest wysyłana za pośrednictwem Amazon SES. Możesz to przetestować, wysyłając wiadomość e-mail za pośrednictwem serwera Postfix, a następnie sprawdzając, czy dotarła do miejsca docelowego. Jeśli wiadomość nie zostanie dostarczona, sprawdź dziennik systemu w poszukiwaniu błędów. W wielu systemach jest to/var/log/mail.log

- Stworzyłem prosty blog, w którym zebrałem wszystkie rzeczy, których ostatnio próbowałem w Amazon Cloud i SES. Oto link: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

Netwiser
źródło
Wielkie dzieki. Zakładam, że oznacza to, że skonfigurowanie postfiksa jest właściwym sposobem rozwiązania mojego problemu. Spróbuję to i wkrótce zaakceptuję twoją odpowiedź.
Jake
1

Ponieważ hostujesz aplikacje Python / Django na swoim serwerze, może się okazać, że lepiej podłączyć Postfix do odpowiednika skryptów AWS Perl w Pythonie. Ten przewodnik zawiera szczegółowe informacje:

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

Alternatywnie, jeśli chcesz użyć skryptów Perla, ale odkryłeś (podobnie jak ja), że twoje moduły CPAN są strasznie nieaktualne, łatwiejszą drogą może być instalacja zależności za pomocą menedżera pakietów systemu operacyjnego. Na przykład w Ubuntu możesz to zrobić za pomocą:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
Tobias McNulty
źródło