Zum Inhalt springen
CitexNode
Alle Anleitungen

Mails vom vServer verschicken

Warum die Mail-Ports gesperrt sind, wie du die Freischaltung beantragst, SPF, DKIM und DMARC, und der Weg über einen externen Mail-Dienst.

7 Min. Lesezeit

Kontaktformulare, Benachrichtigungen, ein eigener Mailserver: Irgendwann soll dein vServer Mails verschicken. Diese Anleitung erklärt, warum das nicht sofort geht und welche Wege es gibt.

Die Befehle gelten für Debian 12 und 13, Ubuntu 22.04 und 24.04, AlmaLinux 9 und Rocky Linux 9 und laufen als root.

Warum die Mail-Ports gesperrt sind

Ausgehend sind die Ports 25, 465 und 587 gesperrt. Das sind die Ports, über die Mails verschickt werden. Ein einziger gehackter oder falsch eingerichteter Server kann in kurzer Zeit tausende Spam-Mails versenden. Dann landen unsere Adressen auf Sperrlisten, und Mails aller Kunden kommen nicht mehr an. Die Sperre schützt also auch deine eigenen Mails.

Die Sperre gilt nur für ausgehende Verbindungen auf diese drei Ports. Andere Ports wie 443 für HTTPS sind nicht betroffen.

Ob die Ports bei dir zu sind, prüfst du so:

bash
timeout 5 bash -c '</dev/tcp/smtp.gmail.com/587' && echo offen || echo gesperrt

Weg 1: Freischaltung beantragen

Für einen eigenen Mailserver oder wenn du direkt über 25, 465 oder 587 versenden musst.

Vorher

  • Setz Reverse-DNS auf der IPv4 auf den Namen deines Mailservers, z. B. mail.example.de, und leg dazu einen A-Eintrag an. Siehe IPv6 und Reverse-DNS.
  • Richte SPF, DKIM und DMARC ein (siehe unten). Ohne sie landen deine Mails im Spam oder werden abgelehnt.

Antrag stellen

  1. Öffne im Dashboard deinen vServer, Tab Netzwerk, Abschnitt Mail-Ports.
  2. Füll das Formular aus:
    • Mailserver-Software, z. B. Postfix, mailcow oder Mailu.
    • Hostname des Mailservers, z. B. mail.example.de. Der sollte als Reverse-DNS auf der IPv4 stehen.
    • Wofür sind die Mails? Kurz dein Projekt und wer die Mails bekommt.
    • Erwartete Menge, z. B. 200 Mails am Tag.
  3. Bestätige die Regeln: kein Spam, keine unerwünschte Werbung. Bei Missbrauch werden die Ports wieder gesperrt.
  4. Klick auf Antrag senden.

Aus dem Antrag wird ein Ticket. Im Abschnitt steht dann „Dein Antrag wird geprüft. Rückfragen kommen im Ticket.“ und daneben Zum Ticket. Wir prüfen jeden Antrag einzeln; eine feste Bearbeitungszeit gibt es nicht.

Wird der Antrag angenommen, steht dort „Die Mail-Ports sind für diesen Server offen.“ Mit Wieder sperren machst du sie selbst wieder zu, wenn du sie nicht mehr brauchst. Wurde er abgelehnt, steht das dort, oft mit einer Begründung, und du kannst einen neuen Antrag stellen.

Steht im Abschnitt „Dein Paket sperrt die Mail-Ports nicht.“, musst du nichts beantragen.

Spamlisten im Blick behalten

Unter Spamlisten im selben Tab siehst du, ob deine Adressen auf bekannten Sperrlisten stehen. Mit Jetzt prüfen fragst du sie neu ab. Steht eine Adresse auf einer Liste, kommen Mails von dort bei vielen Empfängern nicht an. Such dann die Ursache (gehacktes Formular, offenes Relay), bevor du weiter versendest.

Weg 2: Über einen externen Mail-Dienst senden

Für Formulare und Benachrichtigungen ist das oft der einfachere Weg. Ein Anbieter für Mailversand (ein SMTP-Relay) kümmert sich um Zustellbarkeit, Sperrlisten und DKIM; dein Server liefert die Mails nur bei ihm ab.

Wie das geht, steht in der Anleitung deines Anbieters. Viele Anwendungen (WordPress mit einem SMTP-Plugin, Nextcloud, Gitea) haben eigene SMTP-Einstellungen; dort trägst du Server, Port 2525 und die Zugangsdaten direkt ein und brauchst auf dem vServer nichts weiter.

Postfix als Weiterleitung an den Dienst

Sollen alle Programme auf dem Server über sendmail Mails verschicken können, richte Postfix als reine Weiterleitung ein. Statt smtp.anbieter.example nimmst du den Server deines Anbieters.

Debian und Ubuntu (bei der Frage nach der Art der Konfiguration Internet mit Smarthost wählen, oder Keine Konfiguration und alles mit den Befehlen unten setzen):

bash
apt install -y postfix libsasl2-modules

AlmaLinux und Rocky Linux:

bash
dnf install -y postfix cyrus-sasl-plain
systemctl enable --now postfix

Einstellungen setzen:

bash
postconf -e 'relayhost = [smtp.anbieter.example]:2525'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'

inet_interfaces = loopback-only sorgt dafür, dass Postfix nur Mails vom Server selbst annimmt und kein offenes Relay wird.

Zugangsdaten in /etc/postfix/sasl_passwd:

text
[smtp.anbieter.example]:2525 BENUTZER:PASSWORT
bash
chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
systemctl restart postfix

Prüfen, ob es geklappt hat

Eine Testmail an dich selbst:

bash
printf 'Subject: Test vom vServer\n\nEs klappt.\n' | sendmail du@example.de

Dann im Log nachsehen:

bash
journalctl -u postfix -n 30 --no-pager

Steht dort status=sent, hat der Dienst die Mail angenommen. mailq zeigt Mails, die noch warten. Kommt die Mail im Spam an, fehlen meist SPF oder DKIM für die Absenderdomain.

SPF, DKIM und DMARC

Drei DNS-Einträge sagen Empfängern, dass Mails von deiner Domain echt sind. Wie du TXT-Einträge anlegst, steht in DNS-Einträge verwalten.

SPF listet, wer für deine Domain senden darf. Ein TXT-Eintrag auf der Domain selbst, z. B. für einen eigenen Mailserver:

text
v=spf1 ip4:203.0.113.5 ip6:2001:db8::5 -all

Nutzt du einen Mail-Dienst, nennt er dir den passenden Teil, meist ein include:…. Pro Domain gibt es nur einen SPF-Eintrag; mehrere Absender kommen in dieselbe Zeile.

DKIM unterschreibt jede Mail. Den Schlüssel erzeugt dein Mailserver (mailcow, Mailu und rspamd können das) oder der Mail-Dienst; du trägst den öffentlichen Teil als TXT-Eintrag unter einem Namen wie dkim._domainkey.example.de ein. Name und Wert bekommst du von dort.

DMARC sagt Empfängern, was sie mit Mails tun sollen, die SPF und DKIM nicht bestehen. TXT-Eintrag auf _dmarc.example.de. Zum Anfangen nur beobachten:

text
v=DMARC1; p=none; rua=mailto:dmarc@example.de

Laufen die Berichte ein paar Wochen ohne Fehler, stell auf p=quarantine und später p=reject um.

Prüfen kannst du die Einträge mit:

bash
dig TXT example.de +short
dig TXT _dmarc.example.de +short
dig TXT dkim._domainkey.example.de +short

Häufige Fehler

  • Connection timed out zu Port 25, 465 oder 587. Die Ports sind gesperrt. Freischaltung beantragen oder Port 2525 bzw. die HTTP-API des Dienstes nutzen.
  • SASL authentication failed. Benutzer oder Passwort in sasl_passwd falsch, postmap vergessen, oder unter Debian fehlt libsasl2-modules (unter Alma/Rocky cyrus-sasl-plain).
  • Mails landen im Spam. SPF oder DKIM fehlen, oder Reverse-DNS passt nicht zum Hostnamen. Viele Empfänger zeigen in der Kopfzeile der Mail, was durchgefallen ist (Authentication-Results).
  • Empfänger lehnt ab mit „listed“ oder „blocked“. Die Adresse steht auf einer Sperrliste. Unter Spamlisten nachsehen.
  • Plötzlich viele Mails in mailq. Möglicherweise verschickt ein gehacktes Formular Spam. Postfix stoppen (systemctl stop postfix), Ursache suchen, die Warteschlange mit postsuper -d ALL leeren.

Wie es weitergeht

Kommst du nicht weiter, schreib uns ein Ticket.