Amazon SES und sendmail konfigurieren

Amazon SES und sendmail konfigurieren

Im letzten Beitrag zu den Amazon Web Services (AWS) habe ich beschrieben, wie man das Simple Email Service (SES) aufsetzt.

Wenn man die Möglichkeit des kostenlosen Mail-Versandes über SES nutzen will, so muss man seine Mails aus einer Amazon EC2 Instanz heraus verschicken. Mails über das SES Dashboard (Amazon nennt es SES Console) zu verschicken ist nicht kostenlos.

Am Beispiel des eXperinox Chat habe ich das Aufsetzen einer EC2 Instanz in einem anderen Blog-Artikel bereits näher beschrieben. Das „Rüstzeug“ haben  wir damit also schon, nun wollen wir aus dieser EC2 Instanz heraus über sendmail kostenlos Mails verschicken.

Vorbedingungen

In der Amazon EC2 Instanz muss natürlich sendmail installiert sein. Am einfachsten kann man das prüfen, indem man folgendes Kommando absetzt (für jene, die mit Linux sonst wenig bis gar nichts zu tun haben):

rpm -qa | grep sendmail

Neben sendmail selbst benötigen wir noch sendmail-cf und m4. sendmail-cf können wir anhand des obigen Befehls schon prüfen, für m4 müssen wir statt „sendmail“ logischerweise „grep m4“ absetzen.

Sollte eines dieser Packages nicht installiert sein, so muss man das nun nachholen:

sudo yum install m4 -y
sudo yum install sendmail* -y

Neben diesen Packages muss man auch bereits die entsprechenden Mail-Adressen verifiziert haben. Wie das funktioniert findest du im letzten Blog-Artikel zu den Amazon Simples Email Services.

SMTP Zugangsdaten erstellen

Damit man über SES Mails versenden kann, muss man zuerst einen entsprechenden SMTP Benutzer anlegen.

Das macht man, indem man in der SES Management Console (Amazon Web Services, Services – SES auswählen) unter „SMTP Settings“ den Button „Create My SMTP credentials“ anklickt.

Im nachfolgenden Dialog kann man den vorgeschlagenen Benutzernamen der Einfachheit halber unverändert übernehmen und durch „Create“ einen Benutzer mit den notwendigen Rechten zum Senden von Emails erstellen lassen. Man wird darauf hingewiesen, dass man sich die erzeugten Zugangsdaten des nun erstellten Benutzers herunterladen sollte. Darin findet man neben dem angelegten IAM User auch den Benutzernamen und das Passwort für den SMTP User.

Im IAM (Identity and Access Management) Service kann man diesen neu angelegten Benutzer dann ebenfalls finden.

Konfiguration von sendmail

Nun sind wir so weit, um sendmail konfigurieren zu können.

Authentifizierungsinformationen

Zuerst muss man in authinfo die gerade vorhin erstellten Zugangsdaten entsprechend eingeben.

sudo nano /etc/mail/authinfo

Der Servername muss entsprechend der eigenen Region angepasst werden. In meinem Fall ist das eu-west1  (nachlesen kann man den Servernamen unter „SES SMTP Settings„). U:root belassen und als Username und Passwort jene aus dem zuvor heruntergeladenen Credentials.csv – File verwenden.

AuthInfo:email-smtp.eu-west-1.amazonaws.com "U:root" "I:USERNAME" "P:PASSWORD" "M:LOGIN"

Nachdem man dieses File erstellt hat, muss man authinfo.db anhand folgendem Befehl erzeugen:

sudo makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo

Damit sind die Authentifizierungsinformationen fertig erstellt.

Weiterleitung an SES Service

Um sendmail beizubringen, dass es über Amazon SES Service senden soll, muss man entsprechende Weiterleitungsinformationen zur Verfügung stellen.

sudo nano /etc/mail/access

Folgende Zeile ergänzen (wieder korrekten Server je nach Region eingeben).

Connect:email-smtp.eu-west-1.amazonaws.com RELAY

Und wie schon bei authinfo auch für access das entsprechende db File erstellen:

sudo makemap hash /etc/mail/access.db < /etc/mail/access

Damit ist nun auch die Weiterleitung über SES fertig konfiguriert.

sendmail.mc bzw. sendmail.cf anpassen

Als letzten Schritt der Konfiguration muss man die sendmail Konfiguration entsprechend anpassen.

Folgende Zeilen in sendmail.mc ändern:

define(`SMART_HOST', `email-smtp.eu-west-1.amazonaws.com')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl

MASQUERADE_AS(`YOUR_DOMAIN')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

Am besten immer zuerst nach dem entsprechenden Eintrag suchen. Wird einer gefunden, dann zuerst das dnl vor der entsprechenden Zeile entfernen und dann den Inhalt entsprechend korrigieren. dnl heißt „delete through newline“, was bedeutet, dass der Interpeter des mc Files diese Zeile bis zum Ende ignoriert.

Fehlt die entsprechende Zeile, dann einfach einfügen. „YOUR_DOMAIN“ selbstredend durch die eigene Domain ersetzen.

Nun müssen wir aus dem sendmail.mc File das sendmail.cf erzeugen.

sendmail.cf schreibbar machen:

sudo chmod 666 /etc/mail/sendmail.cf

sendmail.cf erzeugen:

sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Danach die Schreibrechte wieder zurücksetzen und das sendmail Service neu starten.

sudo chmod 644 /etc/mail/sendmail.cf
sudo /etc/init.d/sendmail restart

Der Test

Fertig zum Testen – jawohl! 🙂

sendmail -f slayer@experinox.com horst@experinox.com

Testtext eintippen und Ctrl-D – und siehe da – das Mail kommt an!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.