Blog background

Temporäre Wegwerf-E-Mail-Adressen mit OpenSMTPD unter Linux

Dieser Blogbeitrag zeigt in einfachen Schritten, wie man einen Ubuntu Linux 24.04 Server mit OpenSMTPD konfiguriert, um temporäre Wegwerf-E-Mails für Kontoanmeldungen zu erhalten

Dieser Blogpost wurde von einer Maschine aus dem Englischen übersetzt. Die Originalversion finden Sie hier: Disposable Temporary Email Adresses with OpenSMTPD on Linux

Bitte kontaktieren Sie uns , wenn etwas nicht klar beschrieben ist, nicht funktioniert, falsch erscheint oder Sie Unterstützung benötigen.

Dieser Blogbeitrag beschreibt in sehr einfachen und leicht nachvollziehbaren Schritten, wie man eine extrem günstige, selbst gehostete Lösung für temporäre E-Mail-Adressen einrichtet. Sie können diese E-Mail-Adressen zum Beispiel verwenden, um sich bei verschiedenen Diensten wie Facebook, Instagram, Reddit, Protonmail und anderen anzumelden.

Dieser Ansatz garantiert, dass die E-Mail-Adressen, die Sie zur Anmeldung verwenden, nicht auf einer schwarzen Liste stehen und Ihre Kontoerstellung ablehnen, was bei den meisten öffentlichen temporären E-Mail-Anbietern oft der Fall ist. Es ist eine selbst gehostete Alternative zu größeren Diensten wie temp-mail.org , die ständig auf schwarzen Listen stehen.

Für Dienste, die neben einer E-Mail-Adresse auch den Empfang einer SMS erfordern, empfehlen wir die Seite sms-activate.org , die sehr günstige Wegwerf-SMS-Nummern aus den meisten Ländern der Welt anbietet (dieser Blogbeitrag wurde von ihnen nicht gesponsert).

Dieser Artikel richtet sich an Personen mit geringen Kenntnissen über Linux und das Hosten von Servern. Alle Schritte werden sehr detailliert beschrieben, sodass jeder einen solchen Dienst einrichten kann. Die Kosten für das Selbsthosten eines Wegwerf-E-Mail-Servers betragen zehn USD pro Jahr für eine günstige Domain (jede Top-Level-Domain ist in Ordnung) sowie etwa vier USD pro Monat für den günstigsten Hetzner -Server. Jeder andere Hosting-Anbieter tut es auch. Sie benötigen dafür eine öffentliche IPv4-Adresse.

Inhaltsverzeichnis

Erstellen eines Ubuntu 24.04 Servers zum Empfangen von temporären Wegwerf-E-Mails

Sie benötigen einen Server, auf dem Ubuntu 24.04 mit einer öffentlichen IPv4-Adresse läuft. Wir bevorzugen Hetzner dafür, wo die günstigste Option 4 Euro pro Monat kostet. Da der Server buchstäblich den ganzen Tag nichts tut, sind eine CPU, zwei GB RAM und 20 GB Root-Disk mehr als ausreichend. Wenn Sie eine billigere Alternative finden, die die sehr minimalen Anforderungen erfüllt, nur zu. Ich würde versuchen, etwas mit 2 GB RAM zu finden, aber es sollte auch mit 1 GB RAM gut funktionieren. Geteilte CPU ist natürlich kein Problem. Der Root-Disk-Speicherplatz für eine Ubuntu-Linux-Server-Installation sollte 10 GB oder mehr betragen.

Erstellen Sie den Server und notieren Sie sich seine IPv4-Adresse.

Technisch gesehen würde auch IPv6 funktionieren, und bei Hetzner müssen Sie etwas weniger bezahlen, wenn Sie keine IPv4-Adresse buchen. Zum Zeitpunkt des Schreibens dieses Artikels unterstützen jedoch nur etwa 50% des Internets IPv6 , sodass Sie mit IPv4-Adressen mehr Glück haben werden. Wenn Sie sich für große Dienste wie Facebook anmelden, werden diese höchstwahrscheinlich auch mit IPv6 funktionieren, aber es ist immer noch äußerst ungewöhnlich, Mailserver mit IPv6 zu hosten, und es wird verdächtig aussehen, wenn Sie dies tun, was bedeutet, dass die Wahrscheinlichkeit, dass Ihr Konto wegen der Verwendung eines Wegwerf-E-Mail-Dienstes gesperrt wird, höher ist.

Die folgenden Schritte führen Sie durch den Installationsprozess von OpenSMTPD zur Verwendung als Wegwerf-E-Mail-Server.

Zum Zeitpunkt des Schreibens dieses Artikels stellen Debian 12 und Ubuntu 22.04 eine OpenSMTPD-Version zur Verfügung, die einige eingehende TLS 1.3-Verbindungen nicht annehmen kann . Daher müssen Sie Ubuntu 24.04 verwenden, das eine Version bereitstellt, in der dies behoben ist.

Kauf einer Domain und Setzen von DNS-Einträgen

Klicken Sie auf eine Domain, von der Sie denken, dass sie lustig klingt. Hetzner bietet (.de)-Domains für nur 10 Euro pro Jahr an.

Als Nächstes müssen wir einige DNS-Einträge dafür erstellen. Es gibt einige, die wir aus technischer Sicht benötigen, um E-Mails zuzustellen, und einige, die wir einfach aus dem Grund erstellen, nicht wie ein Wegwerf-E-Mail-Anbieter auszusehen.

Erstellen eines A-Eintrags für mail.example.com

Wir nennen unseren neuen Wegwerf-E-Mail-Server mail.example.com. Während ich empfehle, das „mail“ beizubehalten, sollten Sie example.com in allen folgenden Abschnitten offensichtlich durch Ihre Domain ersetzen.

Richten Sie einen A-Eintrag für mail.example.com ein, der auf die öffentliche IP-Adresse Ihres Servers verweist.

Erstellen eines MX-Eintrags für mail.example.com

Als Nächstes benötigen wir einen MX-Eintrag. Verweisen Sie Ihren MX-Eintrag auf mail.example.com. und vergessen Sie nicht den „.“ am Ende des Eintrags. Einige Weboberflächen von DNS-Anbietern fügen ihn möglicherweise automatisch für Sie hinzu. Für MX-Einträge müssen Sie eine Zahl zwischen 0 und 65535 für die „Priorität“ der MX-Einträge angeben. Diese Prioritätseinstellung für MX-Einträge ist nützlich, wenn Sie mehrere Mailserver für dieselbe Domain verwenden, was wir nicht tun. Geben Sie hier einfach eine beliebige Zahl ein, z. B. eins oder zehn oder 100, es spielt keine Rolle.

Das ist alles, was wir brauchen, um E-Mails zugestellt zu bekommen.

(Optional) Einrichten korrekter E-Mail-Server-DNS-Einträge, um nicht wie ein Wegwerf-E-Mail-Anbieter auszusehen

Kein vernünftiger Mensch betreibt einen Mailserver nur zum Empfangen von E-Mails, es sei denn, es handelt sich um einen temporären E-Mail-Server. Ich habe diese Methode des Hostings von Wegwerf-E-Mail-Servern ausgiebig getestet, und bisher hat sich niemand ohne die zusätzlichen Einträge beschwert, die es so aussehen lassen, als könnten Sie damit auch E-Mails senden. Aber es schadet nicht, den Server legitim aussehen zu lassen.

Denken Sie daran, dass alle folgenden DNS-Einträge nur erforderlich sind, wenn Sie E-Mails SENDEN möchten, nicht nur empfangen. Daher werde ich die Erklärung für alle Eintragstypen und ihre Funktion überspringen. Erstellen Sie sie einfach, sie haben für unseren Anwendungsfall keinen anderen Zweck, als Ihren „Mailserver“ legitim aussehen zu lassen.

(Optional) Erstellen eines PTR-Eintrags für die IP-Adresse von mail.example.com

Setzen Sie einen PTR-Eintrag für Ihren Server. Sie können dies nicht bei Ihrem Domain-/DNS-Anbieter tun, sondern müssen dies bei Ihrem Hosting-Anbieter anklicken oder möglicherweise anfordern. Dieser Eintragstyp ist ein Reverse-DNS-Eintrag für die IP-Adresse des Servers, was bedeutet, dass die Anforderung des PTR-Eintrags für die IP-Adresse zum A-Eintrag Ihres Mailservers aufgelöst wird. So überprüfen Sie es:

Lösen Sie zuerst den A-Eintrag für den Domainnamen des Mailservers auf, in diesem Beispiel mail.blunix.com:

host -t A mail.blunix.com
mail.blunix.com has address 85.215.236.191

Und lösen Sie dann den PTR-Eintrag für die IP-Adresse auf:

host 85.215.236.191
191.236.215.85.in-addr.arpa domain name pointer mail.blunix.com.

(Optional) Erstellen eines SPF-Eintrags für example.com

Erstellen Sie einen TXT-Eintrag für example.com mit dem Wert:

“v=spf1 mx -all”

Vergessen Sie die Anführungszeichen nicht.

Zur Überprüfung besuchen Sie das SPF-Überprüfungstool auf mxtoolbox.com (wählen Sie den Domainnamen: example.com).

(Optional) Erstellen eines DMARC-Eintrags für example.com

Erstellen Sie einen TXT-Eintrag für die Domain _dmarc.example.com mit dem folgenden Inhalt und vergessen Sie nicht, die doppelten Anführungszeichen am Anfang und Ende hinzuzufügen:

“v=DMARC1; p=reject; sp=reject; pct=100; aspf=s; adkim=s; fo=1; ruf=mailto:postmaster@example.com; rua=mailto:postmaster@example.com”

Zur Überprüfung besuchen Sie das DMARC-Überprüfungstool auf mxtoolbox.com (wählen Sie den Domainnamen: example.com).

(Optional) Erstellen eines DKIM-Eintrags für example.com

Wie oben erwähnt, ist dieser Schritt optional und nur zum SENDEN von E-Mails erforderlich, nicht zum Empfangen. Aus diesem Grund werde ich nicht erklären, was DKIM ist, sondern nur, wie man einen realistisch aussehenden Eintrag generiert. Führen Sie den folgenden Befehl aus:

opendkim-genkey -b 1024 -d example.com -D .

Dies generiert zwei Dateien, default.private und default.txt, in Ihrem aktuellen Verzeichnis. Schauen wir uns den Inhalt von default.txt an:

cat default.txt
default._domainkey  IN  TXT ( "v=DKIM1; h=sha256; k=rsa; "
      "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3qeawGs9X+o7CAcsDMzt4oak31t2SNm/rBh/RWLXnPa22u1EEFycyatcqqz7npNDj+2ofcaDj77Hb7v0zXOvK/iLMzMgFS8xBS1RaFmGDP5ki3NlL5jVxuuFA0/aSKXjby+RwEAAVoUWAnNdSXwmBQdPkGMKmukrBaK4VHp7y+QIDAQAB" )  ; ----- DKIM key default for example.com

Kopieren Sie diesen Teil, entfernen Sie die doppelten Anführungszeichen, formatieren Sie ihn wie folgt und erstellen Sie einen TXT-Eintrag für „default._domainkey.example.com“ mit dieser Ausgabe:

v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3qeawGs9X+o7CAcsDMzt4oak31t2SNm/rBh/RWLXnPa22u1EEFycyatcqqz7npNDj+2ofcaDj77Hb7v0zXOvK/iLMzMgFS8xBS1RaFmGDP5ki3NlL5jVxuuFA0/aSKXjby+RwEAAVoUWAnNdSXwmBQdPkGMKmukrBaK4VHp7y+QIDAQAB

Zur Überprüfung besuchen Sie das DKIM-Überprüfungstool auf mxtoolbox.com (wählen Sie Domainname: example.com und Selektor: default).

Wie korrekt konfigurierte DNS-Einträge aussehen

Hier ist ein Screenshot der DNS-Einträge, die ich beim Schreiben dieses Blogbeitrags konfiguriert habe:

Mailserver DNS records

Konfigurieren des Wegwerf-E-Mail-Servers

Nachdem DNS bereit und konfiguriert ist, können wir den Server so konfigurieren, dass er E-Mails empfängt.

Einrichten des schlüsselbasierten SSH-Zugriffs

Da wir natürlich wollen, dass unser neuer Server sicher ist, sollten wir die schlüsselbasierte Authentifizierung wählen. Um dies zu konfigurieren, generieren Sie ein ED25519-SSH-Schlüsselpaar auf Ihrer Arbeitsstation:

ssh-keygen -t ed25519 -o -a 100

Um den öffentlichen Schlüssel auf dem Server zu installieren, geben Sie den folgenden Befehl ein:

ssh-copy-id root@<new-server-IP-address>

Melden Sie sich danach am neuen Server an. Es sollte kein Passwort mehr abgefragt werden. Geben Sie den folgenden Befehl ein, um das Root-Benutzerpasswort zu löschen:

passwd -ld root

Und deaktivieren Sie auch die passwortbasierte SSH-Authentifizierung auf dem Server:

sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
systemctl restart ssh.service
systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Mon 2024-05-06 16:29:42 UTC; 3s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 7729 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 7731 (sshd)
      Tasks: 1 (limit: 2255)
     Memory: 1.2M (peak: 1.4M)
        CPU: 28ms
     CGroup: /system.slice/ssh.service
             └─7731 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

May 06 16:29:42 mail.fimzo.at systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
May 06 16:29:42 mail.fimzo.at sshd[7731]: Server listening on :: port 22.
May 06 16:29:42 mail.fimzo.at systemd[1]: Started ssh.service - OpenBSD Secure Shell server.

Installieren der erforderlichen APT-Pakete

Führen Sie zunächst die folgenden Befehle aus, um die erforderlichen Pakete zu aktualisieren, zu aktualisieren und zu installieren:

apt update
apt -y upgrade
apt -y dist-upgrade
apt -y install \
    opensmtpd opendkim \
    rspamd opensmtpd-filter-rspamd python3-pip \
    neomutt w3m\
    certbot \
    unattended-upgrades

opensmtpd opendkim: Wir benötigen OpenSMTPD zum Empfangen von E-Mails. OpenDKIM ist ein Tool, das wir technisch nicht benötigen, aber wir werden unten einen optionalen DKIM-DNS-Eintrag erstellen, damit unser Mailserver so aussieht, als könnte er E-Mails senden, was ihn legitimer aussehen lässt. Während der Installation über apt wird Sie der OpenSMTPD-Konfigurationsassistent einige Fragen stellen, die zur Vorlage einer beispielhaften /etc/smtpd.conf verwendet werden - drücken Sie hier einfach für jede Frage die EINGABETASTE, wir werden /etc/smtpd.conf später überschreiben.

rspamd opensmtpd-filter-rspamd python3-pip: Da der Server E-Mails empfangen kann, werden wir einige grundlegende Anti-Spam-Schutzmaßnahmen implementieren, für die wir unter anderem Rspamd verwenden werden.

neomutt w3m: Wir werden neomutt verwenden, um die empfangenen E-Mails anzuzeigen. w3m ist ein textbasierter World Wide Web-Browser, den wir zur Anzeige von HTML-formatierten E-Mails verwenden werden.

certbot: Wir benötigen certbot, um Letsencrypt-SSL/TLS-Zertifikate zu generieren, damit wir E-Mails über SMTP mit TLS-Verschlüsselung empfangen können.

unattended-upgrades: Wir benötigen auch unattended-upgrades, damit der Ubuntu-Server automatisch apt-Sicherheitsupdates installiert.

Um automatische Upgrades zu aktivieren, führen Sie den folgenden Befehl aus und antworten Sie mit „Ja“, wenn Sie gefragt werden, ob Sie Sicherheitsupdates automatisch installieren möchten.

dpkg-reconfigure unattended-upgrades

Einstellen des Hostnamens des Servers

Sie sollten den Hostnamen des Servers auf mail.example.com setzen. Geben Sie dazu die folgenden Befehle ein:

hostname mail.example.com
echo mail.example.com > /etc/hostname
sed -i 's/^127.0.0.1.*/127.0.0.1 mail.example.com mail/g' /etc/hosts

Erstellen eines unprivilegierten Linux-Benutzers zum Empfangen und Anzeigen von E-Mails

Dieses Tutorial beschreibt, wie man einen E-Mail-Client namens „neomutt“ direkt auf dem Server verwendet. Auf diese Weise können wir eingehende E-Mails direkt auf dem Server anzeigen, ohne sie an ein anderes E-Mail-Konto auf einem anderen E-Mail-Server weiterleiten zu müssen.

Wenn Sie etwas Erfahrung mit Linux haben, sollte dies in Ordnung sein, und Sie sollten in der Lage sein, Ihre Anmelde-E-Mails bequem mit neomutt anzuzeigen. Wenn Sie stattdessen E-Mails an ein anderes Konto weiterleiten möchten, wäre eine Kombination dieses Tutorials und unseres Tutorials zur Verwendung von OpenSMTP als E-Mail-Relay für Linux-Server ein guter Ansatz. Wenn Sie ein Unternehmenskunde sind, kontaktieren Sie uns bitte für Details zu einem solchen Setup. Wenn Sie ein Endbenutzer sind, besuchen Sie bitte das Forum unter linux.org und starten Sie dort einen Thread dazu - blunix beantwortet aktiv Fragen in diesem Forum.

Fügen Sie zuerst einen unprivilegierten Linux-Benutzer namens „tempmail“ hinzu:

adduser --quiet --system --group --disabled-password --shell /bin/bash --home /home/tempmail tempmail

Konfiguration der passwortlosen SSH-Authentifizierung für den tempmail-Linux-Benutzer

Richten Sie nun denselben öffentlichen SSH-Schlüssel ein, den wir zur automatischen Anmeldung am Root-Benutzerkonto verwenden:

cp -r /root/.ssh /home/tempmail/
chown -R tempmail:tempmail /home/tempmail/.ssh

Als Nächstes erstellen wir die erforderliche Verzeichnisstruktur, damit OpenSMTPD empfangene E-Mails speichern kann:

mkdir -p /home/tempmail/Mail/{cur,new,tmp}
chown -R tempmail:tempmail /home/tempmail/Mail

Generieren eines Letsencrypt-SSL-Zertifikats

Da certbot bereits installiert ist, können wir jetzt ein Letsencrypt-Zertifikat für unseren Mailserver generieren.

certbot certonly --non-interactive --agree-tos --standalone --register-unsafely-without-email --domain mail.example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mail.example.com/privkey.pem
This certificate expires on 2024-08-04.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Dieser Befehl fordert Sie nicht auf, Fragen zu beantworten. Die Option –register-unsafely-without-email bedeutet einfach, dass wir keine E-Mail-Adresse mit letsencrypt.org teilen. Diese E-Mail-Adresse wird nur verwendet, um Erinnerungen zur Erneuerung des Zertifikats zu senden.

Lassen Sie uns ein kleines Skript erstellen, um das Zertifikat zu erneuern und opensmtpd neu zu starten. Speichern Sie das folgende BASH-Skript unter /root/renew-letsencrypt.sh:

#!/bin/bash

/usr/bin/certbot certonly --non-interactive --standalone --domain mail.example.com
systemctl restart opensmtpd.service

Und machen Sie es ausführbar:

chmod 700 /root/renew-letsencrypt.sh

Um das Zertifikat automatisch zu erneuern, können wir einen Cronjob wie folgt erstellen:

crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 
# DRÜCKEN SIE EINFACH EINGABE, UM DEN nano-EDITOR ZU WÄHLEN

Geben Sie die folgende Zeile am Ende der Datei ein:

0 0 1 * * /root/renew-letsencrypt.sh

Standardmäßig öffnet crontab -e den nano-Editor. Sie können die Änderungen an der Crontab-Datei speichern, indem Sie STRG + o und dann EINGABE drücken. Um den Editor zu schließen und die neue Crontab-Datei anzuwenden, drücken Sie STRG + x.

Dies erneuert das Zertifikat automatisch um 00:00 Uhr am ersten Tag jedes Monats und startet dann OpenSMTPD neu, um das erneuerte Zertifikat zu verwenden.

Konfigurieren von OpenSMTPD

Nachdem wir alles vorbereitet haben, ist es an der Zeit, OpenSMTPD, den Mailserver, der Wegwerf-E-Mails für Kontoanmeldungen auf unserem Linux-Server empfangen wird, zu konfigurieren.

Kopieren Sie die folgende Konfiguration nach /etc/smtpd.conf und stellen Sie sicher, dass Sie:

  • alle Vorkommen von example.com durch Ihre Domain ersetzen

  • eth0 durch Ihre primäre Netzwerkschnittstelle ersetzen (führen Sie ip address show aus, um dies herauszufinden)

# Akzeptieren Sie keine E-Mails, die größer als 1 MB sind
smtp max-message-size 1M


# Verwenden Sie Letsencrypt-Zertifikate für eingehende E-Mails mit TLS-verschlüsselten SMTP-Verbindungen
pki mail.example.com cert "/etc/letsencrypt/live/mail.example.com/fullchain.pem"
pki mail.example.com key "/etc/letsencrypt/live/mail.example.com/privkey.pem"
# Generieren Sie automatisch dhparams in der richtigen Länge
# Handbuch: https://man.openbsd.org/smtpd.conf#pki~5
pki mail.example.com dhe auto


# OpenSMTPD verwendet "Tabellen", um definierte E-Mail-Adressen nachzuschlagen
table usermap "/etc/smtpd/tables/usermap"
table recipients "/etc/smtpd/tables/recipients"


# Die folgenden Filter helfen, eingehende SPAM-E-Mails zu bekämpfen
# Blockieren Sie Verbindungen von dynamischen DNS-Anbietern und von DSL
filter check_dyndns \
    phase connect \
    match rdns regex { '.*\.dyn\..*', '.*\.dsl\..*' } \
    disconnect "560 No residential connections"

# Überprüfen Sie den Forward-Confirmed Reverse DNS
# (Überprüfen Sie, ob der Forward-DNS einer IP zu einer Domain auflöst und ob der Reverse-DNS der Domain wieder zur ursprünglichen IP auflöst)
filter check_fcrdns \
    phase connect \
    match !fcrdns \
    disconnect "561 No FCrDNS"

# Überprüfen Sie den PTR (Reverse-DNS)-Eintrag der sendenden Domain
filter check_rdns \
    phase connect \
    match !rdns \
    disconnect "562 No rDNS"

# Überprüfen Sie, ob der empfangende Benutzer auf diesem Server existiert
filter check_user_exists \
    phase rcpt-to \
    match !rcpt-to <recipients> \
    disconnect "567 User not local or invalid address – relay denied"

# Überprüfen Sie Rspamd
filter rspamd \
    proc-exec \
    "filter-rspamd"

# Verketten Sie alle Filter für eingehende E-Mails
filter incoming chain { \
    check_dyndns, \
    check_fcrdns, \
    check_rdns, \
    check_user_exists, \
    rspamd \
}


# Lauschen Sie auf eth0
#     pki: Verwenden Sie das Letsencrypt-Zertifikat
#     tls: Erzwingen Sie die TLS-Verschlüsselung (erzwingen Sie STARTTLS)
#     hostname: Setzen Sie den Hostnamen auf mail.example.com
#     no-dsn: Deaktivieren Sie die DSN (Delivery Status Notification)-Erweiterung
#     filter: Wenden Sie die oben definierten eingehenden Kettenfilter an
listen on eth0 \
    port 25 \
    pki mail.example.com \
    tls \
    hostname mail.example.com \
    no-dsn \
    filter incoming


# Definieren Sie eine Aktion namens "receive", die das "maildir"-Format verwendet, um alle empfangenen E-Mails unter /home/tempmail/Mail zu speichern
# Maildir-Format: https://en.wikipedia.org/wiki/Maildir
action receive maildir "/home/tempmail/Mail" virtual <usermap>


# Gleichen Sie alle eingehenden E-Mails (von beliebig) für alle in der Tabelle "recipients" definierten Empfänger ab und wenden Sie die oben definierte Aktion "receive" an
match \
    from any \
    for rcpt-to <recipients> \
    action receive

Der aufmerksame Leser hat möglicherweise die Definitionen table recipients "/etc/smtpd/tables/recipients" sowie table usermap "/etc/smtpd/tables/usermap" oben bemerkt. Diese Dateien enthalten die Liste der E-Mail-Adressen, für die der Server konfiguriert ist, E-Mails anzunehmen, sowie für welchen lokalen Linux-Benutzer sie zugestellt werden sollen.

OpenSMTPD mag es nicht, wenn diese Tabellen leer sind, und wenn die Dateien noch keinen Inhalt haben, schlägt es mit folgendem Fehler fehl:

/etc/smtpd.conf:80: table "recipients" may not be used for lookups
warn: no rules, nothing to do
opensmtpd.service: Control process exited, code=exited, status=1/FAILURE

Aus diesem Grund müssen wir eine beispielhafte E-Mail-Adresse erstellen, die wir später entfernen können.

mkdir -p /etc/smtpd/tables/
echo john.doe@example.com >> /etc/smtpd/tables/recipients
echo john.doe@example.com tempmail >> /etc/smtpd/tables/usermap

Wir können jetzt OpenSMTPD neu starten und überprüfen, ob es korrekt konfiguriert ist:

systemctl restart opensmtpd.service
systemctl status opensmtpd.service
● opensmtpd.service - OpenSMTPD SMTP server
     Loaded: loaded (/usr/lib/systemd/system/opensmtpd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-05-06 21:58:19 CEST; 1s ago
       Docs: man:smtpd(8)
    Process: 5175 ExecStart=/usr/sbin/smtpd (code=exited, status=0/SUCCESS)
   Main PID: 5176 (smtpd)
      Tasks: 12 (limit: 2219)
     Memory: 15.2M (peak: 15.4M)
        CPU: 100ms
     CGroup: /system.slice/opensmtpd.service
             ├─5176 /usr/sbin/smtpd
             ├─5177 "smtpd: crypto"
             ├─5178 "smtpd: control"
             ├─5180 "smtpd: lookup"
             ├─5181 "smtpd: dispatcher"
             ├─5182 "smtpd: queue"
             ├─5183 "smtpd: scheduler"
             ├─5184 /usr/sbin/smtpd
             └─5186 /usr/libexec/opensmtpd/filter-rspamd

May 06 21:58:19 mail.example.com systemd[1]: Starting opensmtpd.service - OpenSMTPD SMTP server...
May 06 21:58:19 mail.example.com smtpd[5175]: info: OpenSMTPD 7.4.0-portable starting
May 06 21:58:19 mail.example.com systemd[1]: Started opensmtpd.service - OpenSMTPD SMTP server.
May 06 21:58:19 mail.example.com smtpd[5180]: rspamd: 2024/05/06 21:58:19 reading line scanner
May 06 21:58:19 mail.example.com smtpd[5180]: rspamd: 2024/05/06 21:58:19 reading lines until ready
May 06 21:58:19 mail.example.com smtpd[5180]: rspamd: 2024/05/06 21:58:19 responding desired filters

Jetzt ist OpenSMTPD korrekt konfiguriert und bereit, E-Mails anzunehmen. Es sind jedoch noch keine E-Mail-Adressen konfiguriert, für die es E-Mails annehmen würde. Der nächste Abschnitt beschreibt, wie man automatisch E-Mail-Adressen generiert. Wenn Sie benutzerdefinierte verwenden möchten, schreiben Sie sie einfach in /etc/smtpd/tables/recipients und geben Sie systemctl restart opensmtpd.service danach ein.

Überprüfen, ob der Server TLS / STARTTLS-verschlüsselte Verbindungen annehmen kann

Sie sollten sicherstellen, dass E-Mails ordnungsgemäß mit STARTTLS-basierter SSL-Verschlüsselung zugestellt werden können. Sie können die Website checktls.com verwenden, um zu testen, ob Ihr OpenSMTPD E-Mails mit STARTTLS korrekt verschlüsseln kann. Geben Sie einfach „mail.example.com“ auf der Website ein und drücken Sie die EINGABETASTE. Nachdem der Test abgeschlossen ist, sollte ein erfolgreiches Testergebnis so aussehen:

Positives TLS-Prüfergebnis für einen Mailserver

Erstellen von Wegwerf-E-Mail-Konten mit einem BASH-Skript

Da wir diese E-Mail-Adressen vorübergehend und nur zum Empfangen von E-Mails verwenden möchten, scheint das Erstellen von echt aussehenden Adressen mit zufälligen Namen der beste Ansatz zu sein. Hier ist ein kleines BASH-Skript dafür. Das Skript fragt die Website pseudorandom.name nach zufälligen Namen ab und erstellt daraus E-Mail-Adressen. Speichern Sie das folgende Skript unter /root/burnmail.sh. Vergessen Sie nicht, den Wert von „mydomain“ am Anfang des Skripts anzupassen. Setzen Sie dies nicht auf mail.example.com, sondern auf example.com.

#!/bin/bash
#
# Erstellen Sie temporäre Wegwerf-E-Mail-Adressen und konfigurieren Sie sie in OpenSMTPD

mydomain=example.com


case "$1" in

    "c" )
        random_name="$(curl -s https://www.pseudorandom.name/ | sed 's/ /./g' | tr '[:upper:]' '[:lower:]')"
        email="${random_name}@${mydomain}"
        echo "Erstelle Wegwerf-Konto: $email"
        echo "$email" >> /etc/smtpd/tables/recipients
        echo "$email tempmail" >> /etc/smtpd/tables/usermap
        systemctl restart opensmtpd.service
        shift;;

    "r" )
        if test -z "$2"; then
            echo "FEHLER: Geben Sie die zu entfernende E-Mail-Adresse als zweites Argument an!"
            echo "Beispiel: $0 r john.doe@example.com"
            exit 1
        fi
        sed -i "/$2/d" /etc/smtpd/tables/recipients
        sed -i "/$2/d" /etc/smtpd/tables/usermap
        systemctl restart opensmtpd.service
        shift;;

    "s" )
        grep "$mydomain" /etc/smtpd/tables/recipients
        shift;;

    * )
        echo "erstellen:   $0 c"
        echo "entfernen:   $0 r john.doe@example.com"
        echo "alle anzeigen: $0 s"
        shift;;

esac

Und machen Sie das Skript ausführbar:

chmod 700 /root/burnmail.sh

Hier sind einige Beispiele für die Verwendung des Skripts.

Alle vorhandenen E-Mail-Konten anzeigen:

./burnmail.sh s
clarence.bolder@example.com

Ein neues E-Mail-Konto erstellen:

./burnmail.sh c
george.fisher@example.com

Ein E-Mail-Konto entfernen:

./burnmail.sh s
clarence.bolder@example.com
george.fisher@example.com

./burnmail.sh r george.fisher@example.com

./burnmail.sh s
clarence.bolder@example.com

Konfigurieren von neomutt zum Anzeigen eingehender E-Mails

Wir werden den Kommandozeilen-E-Mail-Client neomutt , eine Abspaltung von Mutt, verwenden, um eingehende E-Mails direkt auf dem Server anzuzeigen. Um HTML-E-Mails anzuzeigen, benötigt neomutt ein wenig Konfiguration. Kopieren Sie dazu einfach die folgenden Befehle:

mkdir -p /home/tempmail/.config/neomutt

cat << 'EOF' > /home/tempmail/.config/neomutt/config
set mailcap_path = "~/.config/neomutt/mailcap"
auto_view text/html
alternative_order text/plain text/enriched text/html
EOF

cat << 'EOF' > /home/tempmail/.config/neomutt/config/mailcap
text/html; w3m -v -F -o display_link_number=1 -T text/html %s; edit=nano; compose=nano; nametemplate=%s.html; copiousoutput; needsterminal
EOF

cat << 'EOF' > /home/tempmail/.config/neomutt/config/neomuttrc
source ~/.config/neomutt/config
EOF

chown -R tempmail:tempmail /home/tempmail/.config/neomutt

Schließlich erstellen wir eine .bash_profile-Konfigurationsdatei, die neomutt automatisch öffnet, wenn Sie sich als tempmail-Benutzer anmelden. Um neomutt zu beenden, drücken Sie einfach „q“.

echo '/usr/bin/neomutt -f /home/tempmail/Mail/' > /home/tempmail/.bash_profile
chown tempmail:tempmail /home/tempmail/.bash_profile

Wenn Sie sich jetzt per SSH als tempmail-Benutzer anmelden, sollte neomutt sofort geöffnet werden. Das Anzeigen einer HTML-formatierten E-Mail in neomutt sieht so aus. Wie Sie sehen können, hat jeder Link eine [Nummer] daneben, und die Links befinden sich am unteren Rand der Ansicht. Sie können die Links von dort kopieren und einfügen.

Neomutt zeigt eine HTML-formatierte E-Mail an

neomutt-Tastaturkürzel-Spickzettel

Hier sind die grundlegenden Tastenkombinationen, die Sie für neomutt benötigen:

neomutt beenden: q
E-Mails auswählen: Pfeil nach oben oder k, Pfeil nach unten oder j
eine E-Mail anzeigen: EINGABE
E-Mail-Ansicht verlassen: q

Weitere Informationen finden Sie in der neomutt-Dokumentation .

Testen der neuen Installation

Um die neue Installation zu testen, führen Sie die folgenden Schritte aus:

  • Melden Sie sich als root an und generieren Sie eine neue Wegwerf-E-Mail-Adresse: ./burnmail.sh c

  • Melden Sie sich per ssh tempmail@mail.example.com an, um E-Mails mit neomutt anzuzeigen

  • Wählen Sie eine Website mit E-Mail-basierter Anmeldung und erstellen Sie ein Konto mit der Wegwerf-E-Mail-Adresse

  • Warten Sie, bis die E-Mail ankommt, zeigen Sie die E-Mail mit neomutt an und kopieren Sie den Link zum Abschluss der Anmeldung

Wenn die E-Mail nicht ankommt, überprüfen Sie die Protokolle wie unten beschrieben.

Überprüfen der Protokolldateien, um zu sehen, ob E-Mails an den neuen Server zugestellt werden können

Führen Sie den folgenden Befehl aus, bevor Sie Test-E-Mails an die neu erstellten Wegwerf-E-Mail-Adressen senden. Auf diese Weise können Sie die Protokolldateien sehen, die OpenSMTPD erstellt, während es die neue E-Mail verarbeitet.

Die Ausgabe ist, wie eine erfolgreich zugestellte und in /home/user/tempmail gespeicherte E-Mail aussieht:

journalctl -u opensmtpd -f
May 06 20:21:21 mail.fllm.net smtpd[3920]: f274cf34b7d0786b smtp connected address=85.215.236.191 host=mail.blunix.com
May 06 20:21:21 mail.fllm.net smtpd[3920]: f274cf34b7d0786b smtp tls ciphers=TLSv1.3:TLS_AES_256_GCM_SHA384:256
May 06 20:21:22 mail.fllm.net smtpd[3920]: f274cf34b7d0786b smtp message msgid=78e5c402 size=1118 nrcpt=1 proto=ESMTP
May 06 20:21:22 mail.fllm.net smtpd[3920]: f274cf34b7d0786b smtp envelope evpid=78e5c402920bcc4f from=<info@blunix.com> to=<clarence.manning@example.com>
May 06 20:21:22 mail.fllm.net smtpd[3920]: f274cf35d39a7d0b mda delivery evpid=78e5c402920bcc4f from=<info@blunix.com> to=<clarence.manning@example.com> rcpt=<clarence.manning@example.com> user=tempmail delay=1s result=Ok stat=Delivered