Product

Wir haben soeben flanker, unsere Python-Bibliothek zum Parsen von E-Mail-Adressen und MIME, als Open Source veröffentlicht

Mailgun hat seine in Python geschriebene Bibliothek zum Parsen von Adressen und MIME als Open Source veröffentlicht. Lesen Sie weiter, um mehr über Flanker zu erfahren und wie es Ihren Versand optimiert –
Bild für Wir haben soeben flanker, unsere Python-Bibliothek zum Parsen von E-Mail-Adressen und MIME, als Open Source veröffentlicht

Im Juni haben wir unseren Adressvalidierungsdienst Guardpost. Seitdem nutzen viele Mailgun-Kunden Guardpost, um ihre E-Mail-Adressen zu validieren und sowohl fehlerhafte Anmeldungen als auch Bounce-Raten zu reduzieren. Im Juni haben wir versprochen, unsere in Python geschriebene Bibliothek zum Parsen von Adressen und MIME als Open Source zu veröffentlichen, und genau das tun wir heute. Lesen Sie weiter, um mehr zu erfahren, oder wenn Sie direkt loslegen möchten: hier ist das Repo auf Github, mit einem Schnellstart-AnleitungNutzerhandbuch  genannt, und API-Leitfaden. Flanker lässt sich auch über pip installieren.

Wir stellen vor: Flanker

Flanker besteht aus zwei Teilen:

  1. mime: Das ist unsere Bibliothek zum Parsen von MIME. Warum ist das so spannend? Unsere MIME-Parsing-Bibliothek ist je nach Datensatz bis zu 20-mal schneller.
  2. addresslib: Diese Bibliothek zum Parsen von Adressen ist das Herzstück von Guardpost Service. Nutzen Sie sie, um Adressen oder Adresslisten streng nach RFC-Grammatik zu parsen, oder validieren Sie Adressen und Listen mithilfe zusätzlicher Prüfungen. Zu diesen zusätzlichen Prüfungen gehören DNS-Abfragen, die Prüfung auf MX-Einträge, spezifische Grammatik für E-Mail-Service-Provider (ESP) und Rechtschreibkorrekturen.

Mehr über MIME

Mailgun parst eine große Menge an MIME und benötigt daher ein schnelles und effizientes Paket zur MIME-Verarbeitung. In den Anfängen von Mailgun haben wir die Standard-Parsing-Bibliothek von Python verwendet, stellten jedoch schnell fest, dass wir eine verlässlichere Lösung brauchten. Da die Standardbibliothek bei kleinen Nachrichten recht schnell, bei größeren Nachrichten jedoch deutlich langsamer war, haben wir Flanker entwickelt. Flanker glänzt besonders beim Parsen von Kopfzeilen. Flanker parst nicht die gesamte Nachricht, wenn Sie sich nur für die Kopfzeilen interessieren. Das ermöglicht einen schnellen Zugriff auf die Kopfzeilen, unabhängig davon, ob Ihre MIME-Nachricht 1 KB oder 10 MB groß ist. Je nach verarbeiteter MIME-Nachricht ist flanker.mime bis zu 20-mal schneller als das Standard-Python-Paket zum MIME-Parsen, verbraucht ~50 % weniger Speicherplatz und benötigt bis zu 730-mal weniger Funktionsaufrufe. Sehen Sie sich alle von uns durchgeführten Benchmarks an hier.

Was unterscheidet flanker.mime noch von email.parser? 

Screen_Shot_2019-08-27_at_11

Mehr über addresslib

Das Parsen in addresslib ist eine äußerst leistungsstarke Funktion. In der Dokumentation finden Sie alle Möglichkeiten im Detail. Eine weitere herausragende Funktion von addresslib ist die Validierungsfunktion. Sie ist ein wichtiger Bestandteil unseres E-Mail-Verifizierungsdienstes.

Die Validierung umfasst die in der Dokumentation beschriebenen Parsing-Schritte sowie Folgendes:

DNS-Abfrage

Sobald eine Adresse geparst wurde, führt der Validator eine DNS-Abfrage für die Domain durch. Zunächst werden die MX-Einträge geprüft. Sind diese nicht vorhanden, greift der Validator auf A-Einträge zurück. Existieren weder MX- noch A-Einträge, gilt die Adresse als ungültig. Standardmäßig nutzt flanker die Bibliothek dnsq (ebenfalls von Mailgun entwickelt) für DNS-Abfragen. Die Verwendung von dnsq ist jedoch nicht zwingend erforderlich. Es lässt sich jede Bibliothek für DNS-Abfragen verwenden, solange sie dieselbe Schnittstelle wie ein Python-Dictionary aufweist. Siehe flanker/addresslib/drivers/dns_lookup.py als Beispiel.

Prüfung auf MX-Einträge

Wenn die DNS-Abfrage im vorherigen Schritt einen gültigen MX- oder A-Eintrag geliefert hat, wird für diese Adresse geprüft, ob ein Mail Exchanger auf Port 25 antwortet. Antwortet kein Mail Exchanger, gilt die Domain als ungültig. DNS-Abfragen und die Prüfung auf MX-Einträge sind ressourcenintensiv. Das Ergebnis dieser beiden Schritte lässt sich zur Leistungssteigerung zwischenspeichern. Flanker nutzt standardmäßig Redis für diesen Cache. Die Verwendung von Redis ist jedoch nicht zwingend erforderlich. Ähnlich wie bei der Bibliothek für DNS-Abfragen lässt sich auch hier jeder beliebige Cache verwenden, solange die Schnittstelle der eines Python-Dictionarys entspricht. Siehe flanker/addresslib/drivers/redis_cache.py als Beispiel.

Benutzerdefinierte Grammatik

Große ESPs unterstützen selten bis nie die vollständige, vom RFC zugelassene Grammatik für E-Mail-Adressen. Die meisten verwenden stattdessen eine ziemlich restriktive Grammatik. Zum Beispiel muss eine Yahoo!- E-Mail-Adresse 4 bis 32 Zeichen lang sein und darf nur alphanumerische Zeichen, Punkte (.) und Unterstriche (_) enthalten. Stimmt der Mail Exchanger aus dem vorherigen Schritt mit dem eines ESPs mit bekannter Grammatik überein, führt der Validator diese zusätzliche Prüfung für den lokalen Teil der Adresse durch. Benutzerdefinierte Grammatik lässt sich hinzufügen, indem ein Plugin für den jeweiligen ESP im Verzeichnis flanker/addresslib/plugins abgelegt wird. Siehe Nutzerhandbuch für weitere Informationen.

Alternative Vorschläge

Ein separater, aber verwandter Schritt ist die Rechtschreibkorrektur im Domain-Teil einer E-Mail-Adresse. Damit lassen sich häufige Tippfehler wie gmal.com anstelle von gmail.com korrigieren. Die Rechtschreibkorrektur nutzt difflib, das wiederum den Ratcliff-Obershelp -Algorithmus verwendet, um die Ähnlichkeit zweier Zeichenfolgen zu berechnen. Dies ist ein sehr schneller und präziser Algorithmus zur Domain-Rechtschreibkorrektur. Lesen Sie unsere vorherigen Beitrag zu diesem Thema.

Wie es von hier aus weitergeht

Forken Sie Flanker und nutzen Sie es noch heute. Wir freuen uns sehr, wenn die Community das Tool nutzt und dazu beiträgt. Da Flanker ein integraler Bestandteil von Mailgun ist, werden wir es aktiv pflegen und weiterentwickeln, solange es uns gibt.

Bereiche, in denen Sie beitragen können:

Wir möchten neue Talente in der Entwicklung ermutigen, zu Flanker und Open-Source-Software im Allgemeinen beizutragen. Hier sind zwei Punkte auf unserer Roadmap, die sich leicht umsetzen lassen und bei denen neue Programmiertalente direkt einsteigen und mitwirken können:

  1. Weitere ESP-spezifische Grammatik. Wir selbst können nur eine begrenzte Anzahl an ESPs abdecken. Wenn Sie wissen, was Ihr ESP für lokale Teile zulässt, steuern Sie ein Plugin bei. Das ist eine hervorragende Möglichkeit, sich in die Themen Grammatik und Parsing einzuarbeiten.
  2. Automatische Fehlerkorrektur. Ein paar Dinge, die uns dazu einfallen: Falls Sie vergessen, Ihre E-Mail-Adresse mit einer spitzen Klammer (<) zu schließen, sollte der Validator dies erkennen und für Sie korrigieren. Falls Sie vergessen haben, ein Sonderzeichen wie eine Klammer in Ihrem Anzeigenamen in Anführungszeichen zu setzen, sollten wir dies für Sie übernehmen, damit E-Mail-Clients den Namen korrekt darstellen.

Viel Spaß beim Senden!

Ihr Mailgun-Team