Bei der täglichen Arbeit kommt es immer wieder vor, dass man Mails generieren, gestalten und verschicken muss. Man will natürlich wissen, ob alles richtig aussieht und funktioniert. Nun habe ich mir vor einiger Zeit ein Mailrelay konfiguriert, um wirklich richtige Mails von meiner lokalen Entwicklungsumgebung verschicken zu können. Geht natürlich – nur hin und wieder kommen natürlich doch Mails dazwischen, welche an den Kunden gehen. Oder noch schlimmer: An den Kunden des Kunden.
Da will man sich natürlich nicht immer entschuldigen und rechtfertigen, warum das gerade eigentlich passiert ist. Abhilfe schafft hier eigentlich nur eine Lösung: Kein SMTP mehr verwenden. Das heißt, gar keine richtigen Mails mehr verschicken. Also braucht man ein Stück Software, welches das Ganze emuliert und alle Mails auflistet.
Mailcatcher
Genau hier setzt das Programm Mailcatcher an. Dieser lässt sich ganz einfach über gem (den Ruby Paket-Manager) installieren.
gem install mailcatcher
Danach wird mailcatcher einmal als daemon gestartet:
mailcatcher
Starting MailCatcher ==> smtp://127.0.0.1:1025 ==> http://127.0.0.1:1080 *** MailCatcher runs as a daemon by default. Go to the web interface to quit.
In der php.ini muss man noch den entsprechenden Pfad nachpflegen:
sendmail_path = /usr/bin/env catchmail --smtp-ip 127.0.0.1 --smtp-port 1025 -f dev@mkleine.de
Wenn man nun eine Mail versendet, taucht diese direkt im Web-Frontend auf. Dieses ist unter der Adresse http://localhost:1080/ erreichbar. Funktionierte bei mir auf Anhieb. Zu beachten ist, dass auf der offiziellen Seite der falsche Port angegeben ist. Nicht vertun!
Funktioniert jedenfalls super. Ich mag diese Lösung. Besonders cool ist auch, dass man direkt den Source sehen kann. Dafür ist unter Apple Mail eine Tastenkombination notwendig, welche ich ständig vergesse.
Beenden kann man Mailcatcher über die Weboberfläche – dazu klickt man einfach oben rechts auf Quit. Oder man killt den Prozess. Der Nachteil ist, dass man immer eine Exception bekommt wenn der Dienst gerade nicht läuft. Eventuell muss man sich noch ein Shellscript ausdenken, welches Mailcatcher nutzt, wenn der Dienst läuft und ansonsten ganz normal Mails über das Relay verschickt.
FakeSMTP
Eine ähnliche Lösung bietet die Java-Anwendung FakeSMTP (GitHub). Einfach unter Download direkt das jar-File laden. Alternativ kann man sich den Stand mit Maven auch selbst bauen.
Dazu einfach das git repo klonen:
git clone git@github.com:Nilhcem/FakeSMTP.git
Wenn man Maven noch nicht installiert hat, sollte man das nachholen:
brew install maven
Dann einfach bauen mit
mvn package -Dmaven.test.skip
Der Build sollte in etwa so quittiert werden:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 43.329 s [INFO] Finished at: 2014-11-05T20:31:15+01:00 [INFO] Final Memory: 17M/81M [INFO] ------------------------------------------------------------------------
Im target-Verzeichnis liegt dann das jar, welches man wie folgt startet:
java -jar fakeSMTP-1.12-SNAPSHOT.jar
In der php.ini wird dazu ganz einfach wieder sendmail konfiguriert:
sendmail_path = "/usr/sbin/sendmail -t -i -F 'Matthias Kleine' -f 'Matthias Kleine <dev@mkleine.de>'"
Eigentlich hatte mir vorgenommen, an dieser Stelle eine Postfix-Konfiguration zu zeigen. Leider hat sich dieser Dienst aber bei mir total verabschiedet und startet nicht mehr. Ich hoffe, dass ich das bald in den Griff bekomme. Zwei Stunden Suche haben leider nichts ergeben.
MockSMTP
Eine kostenpflichtige Lösung bietet MockSMTP. Funktioniert ähnlich wie FakeSMTP, bietet aber eine native Mac OS UI. Die Frage ist dann, ob man die 9 Euro ausgeben muss – die anderen Lösungen funktionieren eben auch wunderbar. Ich habe die Software nicht getestet und kann daher nichts über die Qualität sagen. Nur der Vollständigkeit halber genannt.
Mailtrap
Möchte man nichts installieren, kann man auch einfach Mailtrap nutzen. Dieser Dienst ist für einen Benutzer mit einer Mailbox kostenlos. Maximal 100 Mails können gespeichert werden. Klingt auch sehr interessant, aber für mich eher unnötig, da es lokal etliche andere Lösungen gibt, welche genau die gleiche Aufgabe verrichten.
Windows
Windows-Nutzer sollten sich einmal Papercut oder smtp4dev ansehen – über die Qualität der Software kann ich allerdings nichts sagen.
Fazit
Ich werde mein Glück erstmal mit Mailcatcher versuchen. Kein Stress mit Konfiguration, super schnell eingerichtet und eben kostenlos. Ich bin gespannt, wie gut sich die Software in Sachen HTML-Mails schlägt.