msmtp für E-Mailversand (auch für PHP)

Wenn man keinen eigenen Mailserver laufen hat und trotzdem E-Mails vom Server aus verschicken möchte, kann man einfach einen vorhandenen SMTP-Server nutzen und den E-Mail-Versand darüber abwickeln. Dafür eignet sich das Paket MSMTP hervorragend. Es ist einfach zu konfigurieren und sehr flexibel.

Bis vor kurzem habe ich SSMTP benutzt, doch dieses Paket wird laut ArchWiki seit 2009 nicht mehr weiterentwickelt. Außerdem ist MSMTP wesentlich flexibler, da man viele unterschiedliche Accounts nutzen kann.

Installation und Einstellungen

Die Installation geht wie immer ganz einfach über deinen Paketmanager:

sudo aptitude install msmtp

Wenn du zentrale Accounts nutzen willst, von denen aus jeder auf deinem Server E-Mails verschicken kann, dann erstelle die Datei /etc/msmtprc mit folgendem Inhalt:

defaults
tls on
tls_starttls off
tls_trust_file /etc/ssl/certs/smtprelaypool.cer

account default
host smtprelaypool.ispgateway.de
port 465
user foo@example.com
password geheim
auth plain
from foo@example.com
logfile /var/log/msmtp.log

Das sind die Einstellungen, die du brauchst, wenn du E-Mails über einen Provider verschickst, der den ispgateway.de nutzt. Bei GMail musst du darauf achten, den Port auf 587 zu setzen. Bei einigen Servern solltest du auch statt »auth plain« »auth on« benutzen. Ansonsten ist die Datei selbsterklärend. Bei dem Zertifikat lohnt es sich erst zu schauen, ob es nicht schon hier vorhanden ist: /etc/ssl/certs/ca-certificates.crt. Ansonsten gibt es das aktuelle Zertifikat bei deinem Provider.

Das tolle an MSMTP ist, dass du mehrere Accounts anlegen kannst: Erstelle einfach einen neuen Abschnitt in der gleichen Datei, der mit account ACCOUNTNAMEanfängt, den Rest kannst du von oben abschauen. Außerdem kann jeder Nutzer eine unter ~/.msmtprc seine eigenen Accounts anlegen.

Testen

Um zu testen, ob der Versand funktioniert kannst du einfach folgenden Befehl nutzen:

echo -e "Subject: Test Mail\r\n\r\nDas ist eine Test-Mail" |msmtp --debug --from=foo@example.com -t bar@example.com

Bei –from trägst du bitte die E-Mail die in der Konfiguration bei from steht ein. und -t ist die Empfängeradresse. Wenn es nicht klappt, dann musst du schauen, was du in der Konfigurationsdatei falsch gemacht hast. Du kannst relativ einfach aus den Log-Meldungen ablesen, was den Fehler verursacht hat.

PHP Konfigurieren

Damit PHP die E-Mails über diesen Account E-Mails verschickt, musst du nur eine Zeile in der PHP.ini ändern (/etc/php5/apache2/php.ini):

sendmail_path = /usr/bin/msmtp -t

Danach noch schnell den Apache neu starten und fertig.

Mit diesem PHP-Skript kannst du ganz einfach testen, ob alles geklappt hat:

if ( mail ( 'foo@example.com', 'Test mail', 'Es funktioniert.' ) );
echo 'Mail wurde gesendet';
else
echo 'Fehler';

Quellen

http://www.absolutelytech.com/2010/07/17/howto-configure-msmtp-to-work-with-gmail-on-linux/

2 Gedanken zu „msmtp für E-Mailversand (auch für PHP)

  1. cercatore

    hi. thanks for the tutorial on msmtp.

    have you an idea of a port of msmtp to android ?

    nionio!

    1. AZ Artikelautor

      What do you want to do on android with msmtp? You can compile it yourself, but this is quite tricky.

Kommentare sind geschlossen.