Fallstudien
Wie UserVoice das Problem mit eingehenden E-Mails gelöst hat
Vor etwa zwei Jahren betrieben wir das Ticketing-System von UserVoice auf unseren eigenen Postfix-Servern. Seitdem sind wir sowohl für eingehende als auch für ausgehende E-Mails zu Mailgun gewechselt und sind sehr zufrieden damit. Hier sind unsere Geschichte und die Probleme, mit denen wir uns in Bezug auf eingehende E-Mails befasst haben.
Eingehende E-Mails vor Mailgun
Unser anfängliches Ticketing-System nutzte Postfix, um eingehende (und ausgehende) E-Mails zu verarbeiten. Postfix ist wirklich eine solide Software, aber sie ist etwas veraltet, und ehrlich gesagt ist die Dokumentation dazu etwas schwer verständlich. Dies wird durch die Tatsache erschwert, dass wir Postfix nicht auf eine „normale“ Weise eingerichtet haben. Die meisten Tutorials und Beispiele zeigen Ihnen, wie Sie einzelne Nutzer und Postfächer innerhalb von Postfix konfigurieren, aber wir wollten all das innerhalb unserer Rails-App verwalten.
Nach vielem Herumprobieren haben wir es endlich zum Laufen gebracht. Wir ließen für jede eingehende E-Mail ein Shell-Skript ausführen, das die E-Mail über einen Resque-Job zu Redis hinzufügte.
Innerhalb des Resque-Jobs haben wir die E-Mail dann mit TMail geparst. Ein Problem, auf das wir stießen, betraf die Kodierungen. Unsere Rails-App ist für die Arbeit mit UTF-8 und dem Encoding-Support von Ruby 1.9.3 ausgelegt, aber TMail verfügt über einen Legacy-Encoding-Support. Wir haben das neue Mail-Gem ausprobiert, aber es scheiterte daran, eine E-Mail zu parsen, wenn diese etwas „Komisches“ an sich hatte. E-Mails sind wie der Wilde Westen: Alles ist möglich. Ihr Parser sollte extrem robust sein, und das Mail-Gem (vor ca. 2 Jahren) war das nicht.
Nachdem wir die E-Mail geparst haben, müssen wir den Textkörper parsen, um die neuen Teile der E-Mail vom zitierten Verlauf/Thread der E-Mail zu trennen. Unsere erste Version war relativ naiv und trennte im Grunde einfach bei „Am xx.xx.xxxx antwortete Jemand:“. Wir betrachteten dann den oberen Teil davon als den neuen Teil der Nachricht. Unser System konnte mit „Inline“-Antworten nicht sehr gut umgehen.
Wenn es jemals ein Problem gab und wir Diagnosedaten finden mussten, mussten wir uns per SSH in unsere Postfix-Box einloggen und mit grep unsere Logs durchsuchen. Das war in Ordnung, aber unsere weniger technischen Support-Mitarbeiter konnten Probleme nicht eigenständig lösen.
In Bezug auf Redundanz oder Skalierung hatten wir genau eine Box. Zum Glück ist sie nie ausgefallen, und zum Glück mussten wir nicht skalieren.
Nach Mailgun
Mailgun löst all diese Probleme.
Erstens müssen wir uns nicht mehr mit Postfix herumschlagen. Durch die Konfiguration einer einfachen „catch_all“-Regel in Mailgun werden alle an *@*.uservoice.com adressierten E-Mails über HTTP an unsere Server gesendet.
Diese E-Mails kommen bereits vorgeparst an. Alles, was an unsere Server gesendet wird, kommt in UTF-8 an. Das allein ist schon Gold wert.
Darüber hinaus trennt Mailgun automatisch die neuen Teile der Nachricht vom Thread. Sie sind als Parameter namens „stripped-text“ im Webhook enthalten, was genau das ist, was wir brauchen, wenn wir eine Nachricht in UserVoice anzeigen. Wir müssen keine unübersichtliche Sammlung regulärer Ausdrücke mehr pflegen. Zusätzlich werden Inline-Antworten automatisch verarbeitet.
Unser Support-Team verfügt über vollständig durchsuchbare Logs aller eingehenden und ausgehenden Nachrichten. Kein Durchsuchen von Nachrichten mit grep mehr, und die von Mailgun bereitgestellte Oberfläche ist für unser Support-Team vollständig zugänglich.
Schließlich müssen wir uns keine Gedanken mehr über die Skalierung unserer Server, Failover und ähnliche Dinge machen. Mailgun übernimmt all das für uns.
Das Beste an Mailgun
Das technische Team von Mailgun und deren Support sind erstklassig. Sie sind immer responsiv und hilfsbereit. Sie haben sich bewährt und wichtige Funktionen implementiert, wenn wir sie brauchten, um bestimmte Kunden zu gewinnen. Sie weisen uns proaktiv auf Probleme (wie spammende Kunden) und mögliche Konfigurationsfehler hin. Sie helfen uns auch dabei, Probleme aufzuspüren, wenn unsere Kunden Schwierigkeiten haben, E-Mails weiterzuleiten. Als ein Unternehmen, das sich voll und ganz darauf konzentriert, den Kundensupport zu verbessern, gefällt uns das!
„Durch den Einsatz von Mailgun können wir einen besseren Service für unsere Marketer gewährleisten. Sie zählen auf uns, und wir zählen auf Mailgun: und diese Beziehung hilft uns, die Glaubwürdigkeit bei unseren Kunden zu erhalten.“