Node.js SMTP-Server mit Haraka

Im Durchschnitt wird dieses Tutorial Node.js SMTP-Server mit Haraka mit 5 bewertet, wobei 1.0 die schlechteste und 5.0 die beste Bewertung ist. Es haben insgesamt 167 Besucher eine Bewertung abgegeben.
167 0

Node.js SMTP-Server mit Haraka

Node.js
Haraka Node.js SMTP Mail-Server

Lust auf deinen eigenen Node.js Mail-Server?

Mit ziemlicher Sicherheit war es einer der ersten Dinge, die gemacht hast, als du mit dem Internet in Kontakt gekommen bist: E-Mail schreiben. E-Mail ist auch heute in Zeiten von Business Messenger wie Slack und Co. noch die populärste Kommunikationsmethode im Web und es gibt unzählige Freemail-Anbieter. Wenn du Developer bist, nutzt du vielleicht auch einen Paid-Service der dir zusätzliche Features zur Verfügung stellt und customizable ist. Aber selbst dann bleiben spezifische Funktionswünsche oder Integrationen oft unerfüllt.

Mit ein paar Coding-Skills kannst du einfach Haraka nutzen. Haraka ist ein high scalable Node.js SMTP-Server. Wer Node.js kennt, weis wie schnell und gut Node.js im Ausführen von I/O Bound Operations ist. Haraka sendet ohne Probleme tausende von E-Mails in der Sekunde und handhabt tausende von gleichzeitigen Connections. Richtig interessant wird es für Developer, da Haraka auf einer modularen Plugin-Architektur aufbaut.
Schreib einfach dein eigenes Haraka Plugin, so kannst du so ziemlich alles mit Haraka anstellen. Was du dafür brauchst? Nur JavaScript Kenntnisse und ein bisschen Experimentierfreude. Solltest du noch nie etwas mit JavaScript gemacht haben, fang einfach damit an. Javascript ist sehr anfängerfreundlich und einfach zu lernen. Um dein erstes eigenes Haraka-Plugin zu schreiben, musst du auch kein Experte sein.

Wir zeigen dir in diesem Artikel, ein paar Haraka Basic zum warm werden. Dazu gehört die Installation von Haraka, ein Überblick des Plugin-Systems und der Konfiguration sowie eine kleine Demonstration.

Vorbereitungen

Als Voraussetzung für unser Tutorial brauchst du einen Server auf dem Node.js läuft. Ich habe für dieses Tutorial in wenigen Klicks einen Server mit Ubuntu 16.04 in meinem gridscale Cloud Controlpanel erstellt. Wenn du dir selbst einen Cloud-Server bei gridscale einrichten willst, dann schau dir doch mal unseren Artikel How to gridscale an.

Kleiner Hinweis: Sollte es bei der Installation von Haraka zu Error-Messages kommen, kannst du ggf. probieren Node.js auf einem alternativen Weg zu installieren. Du kannst Node.js bspw. auch über den Versionsmanager nvm installieren, via Curl wie weiter unten erklärt oder von Source-Code installieren. Das soll nur ein kleiner Lösungsvorschlag sein, da es bei mir in diesem Zusammenhang schon einmal zu Error-Messages kam.

Das Tolle an nvm ist, dass du damit viele verschiedene Version von Node.js auf deinem Setup installieren kannst. Du kannst also bspw. die latest LTS, die neuste Version und beliebig viele andere Node.js Versionen, die am besten kompatibel mit deinen Tools sind betreiben. Diese Methode hat viele Vorteile, wenn du mit mehreren Node.js Tools arbeitest.

Installiere zunächst Node.js via Curl:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Mit node -v wird dir angezeigt, welche Version sich auf deinem System befindet.

Haraka installieren

Die Installation von Haraka selbst ist ganz unkompliziert:

sudo npm install -g Haraka

Mit dem -g Flag wird Haraka global installiert.

Nach deiner Installation hast du Zugriff auf das Haraka CLI.

Mit dem Kommando:

haraka

wird dir eine Übersicht der dir zur Verfügung stehenden Optionen angezeigt.

Haraka Server starten

Nachdem du Haraka auf deinem Server installiert hast, musst du eine neue Haraka-Konfiguration in einem Ordner deiner Wahl anlegen.

Führe dazu folgenden Befehl aus:

haraka -i /etc/haraka/

Mit diesem Befehl legst du eine Instanz unter /etc/haraka an. Für reine Testing-Zwecke kannst du deinen Pfad frei wählen.

Es werden Verzeichnisse für deine Konfigurationen und Plugins angelegt. Alles, was notwendig ist, um deine Haraka Server Instanz zu starten, befindet sich in dem soeben erstellten Ordner.

Haraka Tour

Dein Haraka Verzeichnis beinhaltet folgende Ordner und Dateien:

– config
Beinhaltet verschiedene Konfigurations-Dateien für Haraka inklusive der Default-Konfiguration.

– plugins
Hier werden deine costum-plugins abgelegt.

– docs
Der Ordner Docs beheimatet die Dokumentationen für deine Plugins.

– package.json
In der Datei package.json werden alle Dependencies festgelegt die deine custom-plugins ggf. benötigen. Deine Dependencies musst du innerhalb der geschweiften Klammer im Abschnitt dependencies“: {} einfügen. Via npm install innerhalb des Ordners kannst du deine Dependencies für ein Haraka-Setup einspielen.

Eine Übersicht über die Haraka core-plugins erhältst du mit:

haraka -l

Eine Hilfe zu den einzelnen Plugins steht dir mit haraka -h [plugin name] zur Verfügung.

haraka -h spamassassin

Bspw. gibt dir eine Übersicht zurück wie das Plugin spamassassin funktioniert.

Haraka Demo

Für unsere kleine Haraka-Basics Demonstration müssen wir ein paar Einstellungen vornehmen, damit wir später eine Test-Mail empfangen können. Wechsel hierfür in deinen Haraka Config-Folder.

smtp.ini

In deinem smtp.ini File konfigurierst du die Portnummer und IP-Adresse, auf welche der Haraka SMTP Service lauschen soll. Der Standardport für E-Mail Vermittlung zwischen zwei Server ist Port Nr. 25. Für unsere kleine Demonstration kannst du die Default-Einstellungen der smtp.ini beibehalten.

Solltest du keine ROOT-Rechte besitzen, ändere deinen Port einfach auf eine Nummer > 1024 z.B. 2525.

config/host_list

Innerhalb deines Config-Folders befindet sich die Datei host_list. Hier legst du die Hosts fest, von denen dein Haraka-Server E-Mails akzeptieren soll. Es wird ein Host pro Zeile angegeben. Wenn du bspw. E-mail von testmail.io akzeptieren willst (z.B. name@testmail.io oder me@testmail.io) musst du testmail.io in eine neue Zeile einfügen.

Füge den host haraka.testing in eine neue Zeile deiner host_list Datei hinzu.

nano /etc/haraka/config/host_list

Haraka hat standardmäßig einge Plugins aktiviert, die meisten davon funktionieren jedoch nicht out of the box, da Haraka by default keine entsprechenden js Scripts für diese Plugins erstellt.
Wenn du später anfängst Plugins zu nutzen, musst du diese Skripte in deinem Plugins-Folder ablegen.

Damit unsere kleine Demonstration ohne Error-Messages funktioniert, kommentieren wir die Plugins dnsbl und access in Datei config/plugins aus.

Nutze einfach einen Editor deiner Wahl und setze ein # vor dnsbl und access:

nano /etc/haraka/config/plugins


Haraka Service starten

Mal ausprobieren, ob wir Haraka im Vordergrund starten können und ob der Service wie gewünscht auf Port 25 lauscht.

haraka -c /etc/haraka

Running Haraka SMTP Server

Die [NOTICE] Zeile zeigt dir an, dass dein Haraka-Server gestartet ist und auf Port 25 lauscht. Wenn du dich jetzt mit Telnet zu deiner IP auf Port 25 verbindest, sollte dir ein SMTP Status-Code “220 service ready” zurückgegeben werden.

Haraka Test Mail

Nachdem der Haraka-Server bereit ist, können wir eine Test-Mail an unseren neuen Haraka SMTP-Service senden. Dazu installieren wir das Tool swaks – swaks ist ein SMTP-Transaction-Tester.

apt-update
apt install swaks

Öffne anschließend eine zweite Session auf deiner Maschine und sende eine Test-Mail mit swaks an deinen Haraka-Service, du kannst die Mail natürlich auch von einer anderen Maschine aus senden:

swaks -h domain.com -f team@gridscale.io -t me@haraka.testing -s [localhost/IP] -p 25

Haraka Test-Mail

Auf dem Screenshot kannst du erkennen, dass unsere SMTP-Sitzung das Protokoll korrekt durchläuft.

Die Flags des Befehls setzen sich wie folgt zusammen:

-h für wie wir HELO sagen,
-f für die Absenderadresse des Client,
-t für Empfängeradresse,
-s für Server,
-p für Port

Fazit

Das wars mit unserer kleinen Haraka SMTP Demo. Weiterführende Infos zur Konfiguration und der Handhabung der einzelnen Plugins findest du in der Haraka README. Am besten du probierst dich erst einmal an den core-plugins aus und codest dann vielleicht dein erstes eigenes Feature wie eine E-Mail Domain-Erweiterung. Wichtig zu beachten ist auch, dass Haraka als reiner SMTP-Server agiert. Du kannst mit Haraka alleine also keinen vollwertigen E-Mail Service aufbauen, dafür wird Haraka normalerweise im Zusammenspiel mit Mail-Storages wie (Postfix/Exim/Qmail) und IMAP server (Dovecot/Courier) verwendet.

Wenn dir unser Tutorial mehr Lust auf spannende Developer Themen gemacht hat, dann melde dich doch zu unserem Newsletter an und bleib informiert. We don’t spam you 🙂

Lust auf deinen eigenen Node.js Mail-Server? Mit ziemlicher Sicherheit war es einer der ersten Dinge, die gemacht hast, als du mit dem Internet in Kontakt gekommen bist: E-Mail schreiben. E-Mail ist auch heute in Zeiten von Business Messenger wie Slack und Co. noch die populärste Kommunikationsmethode im Web und es gibt unzählige Freemail-Anbieter. Wenn du […]

Schade, dass dir der Artikel nicht gefallen hat.
Was sollten wir deiner Meinung nach besser machen?

Vielen Dank für dein Feedback!
Wir melden uns bei dir, sobald der Artikel zu deinem Wunschthema fertig ist.

Übrigens: kennst du schon unser Tutorial zum Thema Node.js Beginner Guide?

×

Entwickler?

Dann einfach hier für unsere Tutorial-Updates anmelden.
Keine Sorge: Wir spammen dich nicht zu