Das Einrichten eines eigenen E-Mail-Servers unter Linux von Grund auf ist ein Problem, wenn Sie kein erfahrener Serveradministrator sind. Dieses Tutorial zeigt Ihnen, wie Sie iRedMail verwenden, um schnell einen voll funktionsfähigen Mailserver unter Debian 10 einzurichten, was Ihnen viel Zeit und Kopfschmerzen erspart.
Was ist iRedMail?
iRedMail ist ein Shell-Skript, das automatisch alle erforderlichen Mailserver-Komponenten auf Ihrem Linux/BSD-Server installiert und konfiguriert, wodurch die manuelle Installation und Konfiguration entfällt. Mit iRedMail können Sie ganz einfach unbegrenzte Mailboxen und unbegrenzte E-Mail-Domains erstellen in einem webbasierten Admin-Panel. Postfächer können in MariaDB/MySQL, PostreSQL-Datenbank oder OpenLDAP gespeichert werden. Das Folgende ist eine Liste von Open-Source-Software, die automatisch von iRedMail installiert und konfiguriert wird.
- Postfix-SMTP-Server
- Dovecot-IMAP-Server
- Nginx Webserver, um das Admin-Panel und Webmail bereitzustellen
- OpenLDAP, MySQL/MariaDB oder PostgreSQL zum Speichern von Benutzerinformationen
- Amavised-new für DKIM-Signatur und -Verifizierung
- SpamAssassin für Anti-Spam
- ClamAV für Virenschutz
- Roundcube-Webmail
- SOGo Groupware, die Webmail, Kalender (CalDAV), Kontakte (CardDAV), Aufgaben und ActiveSync-Dienste bereitstellt.
- Fail2ban zum Schutz von SSH
- mlmmj-Mailinglisten-Manager
- Überwachung des Netdata-Servers
- iRedAPD Postfix Policy Server für Greylisting
Schritt 1:Wählen Sie den richtigen Hosting-Provider und kaufen Sie einen Domainnamen
Um einen voll funktionsfähigen E-Mail-Server mit iRedMail einzurichten, benötigen Sie einen Server mit mindestens 3 GB RAM, da Ihr Server nach der Installation mehr als 2 GB RAM verwendet.
Es wird dringend empfohlen, iRedMail auf einer sauberen Installation von zu installieren Debian 10 Server.
Dieses Tutorial wird auf einem Kamatera VPS (virtueller privater Server) mit 1 CPU und 3 GB RAM für 9 $/Monat durchgeführt. Sie bieten eine 30-tägige kostenlose Testversion an.
Kamatera ist eine sehr gute Option, um einen Mailserver zu betreiben, weil
- Sie blockieren Port 25 nicht , sodass Sie unbegrenzt E-Mails (Transaktions-E-Mails und Newsletter) versenden können, ohne Geld für den SMTP-Relay-Dienst auszugeben. Kamatera hat keine SMTP-Limits. Sie können eine Million E-Mails pro Tag versenden.
- Die IP-Adresse steht auf keiner E-Mail-Blacklist . (Zumindest trifft das in meinem Fall zu. Ich habe mich für das Rechenzentrum in Dallas entschieden.) Sie möchten definitiv nicht auf der gefürchteten IP-Blacklist von Microsoft Outlook oder der Blacklist von Spamrats aufgeführt werden. Einige Blacklists blockieren einen ganzen IP-Bereich und Sie haben keine Möglichkeit, Ihre IP-Adresse von dieser Art von Blacklist zu entfernen.
- Sie können den PTR-Eintrag bearbeiten, um die E-Mail-Zustellbarkeit zu verbessern.
- Sie ermöglichen es Ihnen, Newsletter zu versenden an Ihre E-Mail-Abonnenten mit nein Stundenlimits oder Tageslimits, was auch immer.
- Sie können mehrere IP-Adressen für einen einzelnen Server bestellen. Dies ist sehr nützlich für Leute, die eine große Menge an E-Mails senden müssen. Sie können den E-Mail-Verkehr auf mehrere IP-Adressen verteilen, um eine bessere E-Mail-Zustellbarkeit zu erreichen.
Andere VPS-Anbieter wie DigitalOcean blockieren Port 25. DigitalOcean würde Port 25 nicht entsperren, daher müssen Sie ein SMTP-Relay einrichten, um die Blockierung zu umgehen, was Sie zusätzliches Geld kosten kann. Wenn Sie Vultr VPS verwenden, ist Port 25 standardmäßig blockiert. Sie können es entsperren, wenn Sie ein Support-Ticket öffnen, aber sie können es jederzeit wieder blockieren, wenn sie entscheiden, dass Ihre E-Mail-Sendeaktivität nicht erlaubt ist. Vultr kann es tatsächlich erneut blockieren, wenn Sie ihre Server zum Versenden von Newslettern verwenden.
Gehen Sie zur Kamatera-Website, um ein Konto zu erstellen, und erstellen Sie dann Ihren Server in Ihrem Konto-Dashboard.
Ich empfehle, das unten verlinkte Tutorial zu befolgen, um Ihren Linux-VPS-Server auf Kamatera richtig einzurichten.
- So erstellen Sie einen Linux-VPS-Server auf Kamatera
Sobald Sie einen Server erstellt haben, sendet Ihnen Kamatera eine E-Mail mit den SSH-Anmeldedaten des Servers. Um sich bei Ihrem Server anzumelden, verwenden Sie einen SSH-Client. Wenn Sie Linux oder macOS auf Ihrem Computer verwenden, öffnen Sie einfach ein Terminalfenster und führen Sie den folgenden Befehl aus, um sich bei Ihrem Server anzumelden. Ersetzen Sie 12.34.56.78 durch die IP-Adresse Ihres Servers.
ssh [email protected]
Sie werden aufgefordert, das Passwort einzugeben.
Außerdem benötigen Sie einen Domänennamen. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und sie Whois-Datenschutz lebenslang kostenlos anbieten.
Schritt 2:DNS-MX-Eintrag erstellen
Der MX-Eintrag gibt an, welcher Host oder welche Hosts E-Mails für einen bestimmten Domainnamen verarbeiten. Zum Beispiel der Host, der E-Mails für linuxbabe.com
verarbeitet ist mail.linuxbabe.com
. Wenn jemand mit einem Gmail-Konto eine E-Mail an [email protected]
sendet , dann fragt der Gmail-Server den MX-Eintrag von linuxbabe.com ab. Wenn es herausfindet, dass mail.linuxbabe.com
für die Annahme von E-Mails zuständig ist, fragt es dann den A-Eintrag von mail.linuxbabe.com
ab um die IP-Adresse zu erhalten, damit die E-Mail zugestellt werden kann.
Sie können sich auf der Website Ihres Domain-Registrars (z. B. NameCheap) anmelden, um DNS-Einträge zu erstellen.
Erstellen Sie in Ihrem DNS-Manager einen MX-Eintrag für Ihren Domainnamen. Geben Sie @
ein Geben Sie im Feld Name den Hauptdomänennamen ein und geben Sie dann mail.your-domain.com
ein im Feld Wert.
Hinweis :Der Hostname für den MX-Eintrag darf kein Alias für einen anderen Namen sein. Außerdem wird dringend empfohlen, Hostnamen statt bloßer IP-Adressen für MX-Einträge zu verwenden.
Ihr DNS-Manager fordert Sie möglicherweise auf, einen Präferenzwert (auch bekannt als Prioritätswert) einzugeben. Es kann eine beliebige Zahl zwischen 0 und 65.356 sein. Eine kleine Zahl hat eine höhere Priorität als eine große Zahl. Es wird empfohlen, den Wert auf 0 zu setzen, damit dieser Mailserver die höchste Priorität für den Empfang von E-Mails hat. Nachdem Sie den MX-Eintrag erstellt haben, müssen Sie auch einen A-Eintrag für mail.your-domain.com
erstellen , damit sie in eine IP-Adresse aufgelöst werden kann. Wenn Ihr Server eine IPv6-Adresse verwendet, stellen Sie sicher, dass Sie einen AAAA-Eintrag hinzufügen.
Hinweis:Wenn Sie den Cloudflare-DNS-Dienst verwenden, sollten Sie die CDN-Funktion beim Erstellen eines A-Eintrags für mail.your-domain.com
nicht aktivieren . Cloudflare unterstützt keinen SMTP-Proxy.
Schritt 3:Konfigurieren des Hostnamens
Melden Sie sich über SSH bei Ihrem Server an und führen Sie dann den folgenden Befehl aus, um vorhandene Softwarepakete zu aktualisieren.
sudo apt update;sudo apt upgrade
Ich empfehle dringend, ein sudo
zu erstellen Benutzer für die Verwaltung Ihres Servers, anstatt den standardmäßigen root
zu verwenden Benutzer. Führen Sie den folgenden Befehl aus, um einen Benutzer zu erstellen. Ersetzen Sie username
mit Ihrem bevorzugten Benutzernamen.
adduser username
Fügen Sie dann den Benutzer zum sudo
hinzu Gruppe.
adduser username sudo
Wechseln Sie dann zum neuen Benutzer.
su - username
Legen Sie als Nächstes mit dem folgenden Befehl einen vollqualifizierten Domänennamen (FQDN) für Ihren Server fest.
sudo hostnamectl set-hostname mail.your-domain.com
Wir müssen auch /etc/hosts
aktualisieren Datei mit einem Befehlszeilen-Texteditor wie Nano.
sudo nano /etc/hosts
Bearbeiten Sie es wie unten. (Verwenden Sie die Pfeiltasten, um den Cursor in der Datei zu bewegen.)
127.0.0.1 mail.your-domain.com localhost
Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O
, und drücken Sie dann Enter
bestätigen. Um die Datei zu schließen, drücken Sie Ctrl+X
.)
Um die Änderungen anzuzeigen, melden Sie sich ab und wieder an und führen Sie dann den folgenden Befehl aus, um Ihren Hostnamen anzuzeigen.
hostname -f
Schritt 4:Mailserver auf Debian 10 mit iRedMail einrichten
Führen Sie die folgenden Befehle aus, um die neueste Version des iRedMail-Skriptinstallationsprogramms aus seinem Github-Repository herunterzuladen.
wget https://github.com/iredmail/iRedMail/archive/1.5.1.tar.gz
Extrahieren Sie die archivierte Datei.
tar xvf 1.5.1.tar.gz
Dann cd in das neu erstellte Verzeichnis.
cd iRedMail-1.5.1/
Fügen Sie der iRedMail.sh
eine ausführbare Berechtigung hinzu Skript.
chmod +x iRedMail.sh
Führen Sie als Nächstes das Bash-Skript mit sudo-Berechtigung aus.
sudo bash iRedMail.sh
Der Setup-Assistent für den Mailserver wird angezeigt. Verwenden Sie die Tabulatortaste, um Ja auszuwählen und drücken Sie die Eingabetaste.
Auf dem nächsten Bildschirm werden Sie aufgefordert, den E-Mail-Speicherpfad auszuwählen. Sie können den Standard /var/vmail
verwenden , drücken Sie einfach die Eingabetaste.
Wählen Sie dann aus, ob Sie einen Webserver betreiben möchten. Es wird dringend empfohlen, dass Sie sich für die Ausführung eines Webservers entscheiden, da Sie das webbasierte Admin-Panel benötigen, um E-Mail-Konten hinzuzufügen. Außerdem können Sie auf das Roundcube-Webmail zugreifen. Standardmäßig ist der Nginx-Webserver ausgewählt, sodass Sie einfach die Eingabetaste drücken können. (Ein Sternchen zeigt an, dass das Element ausgewählt ist.)
Wählen Sie dann das Speicher-Backend für E-Mail-Konten aus. Wählen Sie eine aus, mit der Sie vertraut sind. In diesem Tutorial wurde MariaDB ausgewählt. Drücken Sie die Pfeiltasten nach oben und unten und drücken Sie die Leertaste, um auszuwählen.
Wenn Sie MariaDB oder MySQL ausgewählt haben, müssen Sie das MySQL-Root-Passwort festlegen.
Geben Sie als Nächstes Ihre erste E-Mail-Domain ein. Sie können später im webbasierten Admin-Panel weitere E-Mail-Domains hinzufügen. In dieser Anleitung wird davon ausgegangen, dass Sie ein E-Mail-Konto wie [email protected] wünschen . In diesem Fall müssen Sie Ihre-Domain.com eingeben hier, ohne Subdomain. Drücken Sie nicht die Leertaste nach Ihrem Domainnamen. Ich denke, iRedMail kopiert das Leerzeichen zusammen mit Ihrem Domainnamen, was zu einem Installationsfehler führen kann.
Legen Sie als Nächstes ein Passwort für den E-Mail-Domain-Administrator fest.
Wählen Sie optionale Komponenten. Standardmäßig sind 4 Elemente ausgewählt. Wenn Sie die SOGo-Groupware haben möchten, wählen Sie sie aus und drücken Sie die Eingabetaste.
Jetzt können Sie Ihre Konfigurationen überprüfen. Geben Sie Y
ein um mit der Installation aller Mailserver-Komponenten zu beginnen.
Wählen Sie am Ende der Installation y
um die von iRedMail bereitgestellten Firewall-Regeln zu verwenden und die Firewall neu zu starten.
Jetzt ist die Installation von iRedMail abgeschlossen. Ihnen werden die URL von Webmail, SOGo-Groupware und Web-Admin-Panel sowie die Anmeldeinformationen mitgeteilt. Die iRedMail.tips
Datei enthält wichtige Informationen über Ihren iRedMail-Server.
Starten Sie Ihren Debian 10-Server neu.
sudo shutdown -r now
Sobald Ihr Server wieder online ist, können Sie das Web-Admin-Panel aufrufen.
https://mail.your-domain.com/iredadmin/
Hinweis dass in der obigen URL das Unterverzeichnis für den Zugriff auf das Admin-Panel /iredadmin/
ist , nicht /iredmail/
. Und da es ein selbstsigniertes TLS-Zertifikat verwendet, müssen Sie Ihrem Webbrowser eine Sicherheitsausnahme hinzufügen.
Schritt 5:TLS-Zertifikat von Let’s Encrypt installieren
Da der Mailserver ein selbstsigniertes TLS-Zertifikat verwendet, sehen sowohl Benutzer des Desktop-Mail-Clients als auch des Webmail-Clients eine Warnung. Um dies zu beheben, können wir ein kostenloses TLS-Zertifikat von Let’s Encrypt erhalten und installieren.
Erhalt des Zertifikats
Melden Sie sich zunächst erneut über SSH bei Ihrem Server an und führen Sie den folgenden Befehl aus, um den Client von Let’s Encrypt (certbot) auf Debian 10 zu installieren.
sudo apt install certbot
iRedMail hat bereits TLS-Einstellungen im standardmäßigen virtuellen Nginx-Host konfiguriert, daher empfehle ich hier, das Webroot-Plugin anstelle des nginx-Plugins zu verwenden, um das Zertifikat zu erhalten. Führen Sie den folgenden Befehl aus. Roten Text durch Ihre tatsächlichen Daten ersetzen.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/
Wenn Sie gefragt werden, ob Sie Mitteilungen von EFF erhalten möchten, können Sie Nein wählen.
Wenn alles geklappt hat, sehen Sie den folgenden Text, der anzeigt, dass Sie erfolgreich ein TLS-Zertifikat erhalten haben. Ihr Zertifikat und Ihre Kette wurden unter /etc/letsencrypt/live/mail.your-domain.com/
gespeichert Verzeichnis.
Fehler beim Erhalt des TLS-Zertifikats
Wenn certbot kein TLS-Zertifikat erhalten konnte, liegt dies möglicherweise daran, dass Ihre DNS-Einträge nicht an das Internet weitergegeben werden. Abhängig von der von Ihnen verwendeten Domänenregistrierungsstelle wird Ihr DNS-Eintrag möglicherweise sofort weitergegeben oder es kann bis zu 24 Stunden dauern, bis er weitergegeben wird. Sie können zu https://dnsmap.io gehen, den Hostnamen Ihres Mailservers eingeben (mail.your-domain.com
), um die DNS-Weitergabe zu überprüfen.
Wenn certbot kein Zertifikat erhalten konnte und Sie die folgende Meldung sehen,
Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching https://mail.linuxbabe.com/.well-known/acme-challenge/IZ7hMmRE4ZlGW7cXYoq2Lc_VrFzVFyfW6E0pzNlhiOA: Timeout during connect (likely firewall problem)
Möglicherweise haben Sie einen AAAA-Eintrag für mail.your-domain.com
gesetzt , aber der Nginx-Webserver hört nicht auf die IPv6-Adresse. Um diesen Fehler zu beheben, bearbeiten Sie /etc/nginx/sites-enabled/00-default.conf
Datei
sudo nano /etc/nginx/sites-enabled/00-default.conf
Suchen Sie die folgende Zeile.
#listen [::]:80;
Entfernen Sie das #
Zeichen, um IPv6 für diesen virtuellen Nginx-Host zu aktivieren.
listen [::]:80;
Speichern und schließen Sie die Datei. Bearbeiten Sie dann den virtuellen SSL-Host /etc/nginx/sites-enabled/00-default-ssl.conf
.
sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf
Fügen Sie die folgende Zeile hinzu.
listen [::]:443 ssl http2;
Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfiguration.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderung wirksam wird.
sudo systemctl reload nginx
Führen Sie den folgenden Befehl erneut aus, um das TLS-Zertifikat zu erhalten. Roten Text durch Ihre tatsächlichen Daten ersetzen.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/
Jetzt sollten Sie in der Lage sein, das TLS-Zertifikat erfolgreich zu erhalten.
Installieren des Zertifikats in Nginx
Nachdem Sie ein TLS-Zertifikat erhalten haben, konfigurieren wir den Nginx-Webserver für die Verwendung. Bearbeiten Sie die SSL-Vorlagendatei.
sudo nano /etc/nginx/templates/ssl.tmpl
Suchen Sie die folgenden 2 Zeilen.
ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key;
Ersetzen Sie sie durch:
ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem;
Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfiguration und laden Sie neu.
sudo nginx -t sudo systemctl reload nginx
Besuchen Sie erneut das iRedMail-Admin-Panel (https://mail.your-domain.com/iredadmin/
), wird Ihr Webbrowser Sie nicht mehr warnen, da Nginx jetzt ein gültiges TLS-Zertifikat verwendet.
Installation des TLS-Zertifikats in Postfix und Dovecot
Wir müssen auch den Postfix-SMTP-Server und den Dovecot-IMAP-Server konfigurieren, um das von Let’s Encrypt ausgestellte Zertifikat zu verwenden, damit der Desktop-Mail-Client keine Sicherheitswarnung anzeigt. Bearbeiten Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Finden Sie die folgenden 3 Zeilen. (Zeile 95, 96, 97).
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt
Ersetzen Sie sie durch:
smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem
Speichern und schließen Sie die Datei. Laden Sie dann Postfix neu.
sudo systemctl reload postfix
Als nächstes bearbeiten Sie die Hauptkonfigurationsdatei von Dovecot.
sudo nano /etc/dovecot/dovecot.conf
Fein die folgenden 2 Zeilen. (Zeile 47, 48)
ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key
Ersetzen Sie sie durch:
ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem
Speichern und schließen Sie die Datei. Dann Taubenschlag neu laden.
sudo systemctl reload dovecot
Von nun an werden Benutzern von Desktop-Mail keine Sicherheitswarnungen mehr angezeigt.
Schritt 6:Test-E-Mail senden
Melden Sie sich mit dem Postmaster-E-Mail-Konto ([email protected]) beim iredadmin-Steuerfeld an. Im Add
können Sie zusätzliche Domains oder E-Mail-Adressen hinzufügen.
Wenn Sie den Fehler „Keine Domain unter Kontrolle“ sehen, lesen Sie bitte diesen Artikel.
Nachdem Sie einen Benutzer erstellt haben, können Sie die Webmail-Adresse von Roundcube besuchen und sich mit dem neuen E-Mail-Benutzerkonto anmelden.
https://mail.your-domain.com/mail/
Jetzt können Sie das Senden und Empfangen von E-Mails testen. Bitte beachten Sie, dass Sie möglicherweise einige Minuten warten müssen, um E-Mails zu erhalten, da iRedMail standardmäßig Greylisting aktiviert, wodurch andere sendende SMTP-Server angewiesen werden, es in einigen Minuten erneut zu versuchen. Die folgende Zeile in der Mail-Protokolldatei /var/log/mail.log
zeigt an, dass Greylisting aktiviert ist.
Recipient address rejected: Intentional policy rejection, please try again later;
Auslagerungsbereich hinzufügen
ClamAV wird verwendet, um Viren in E-Mail-Nachrichten zu scannen. ClamAV kann ziemlich viel RAM verwenden. Wenn auf Ihrem Server nicht genügend RAM vorhanden ist, funktioniert ClamAV nicht richtig, was Ihren Mailserver daran hindert, E-Mails zu senden. Sie können Ihrem Server eine Auslagerungsdatei hinzufügen, um den Gesamt-RAM auf Ihrem Server zu erhöhen. (Beachten Sie, dass die Verwendung von Auslagerungsspeicher auf dem Server die Serverleistung beeinträchtigt. Wenn Sie eine bessere Leistung wünschen, sollten Sie den physischen Arbeitsspeicher aufrüsten, anstatt Auslagerungsspeicher zu verwenden.)
Um Auslagerungsspeicher auf dem Server hinzuzufügen, verwenden Sie zuerst fallocate
Befehl zum Erstellen einer Datei. Erstellen Sie beispielsweise eine Datei namens swapfile mit einer Kapazität von 1 GB im Root-Dateisystem:
sudo fallocate -l 1G /swapfile
Stellen Sie dann sicher, dass nur root darauf lesen und schreiben kann.
sudo chmod 600 /swapfile
Zum Tauschen formatieren:
sudo mkswap /swapfile
Ausgabe:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433
Aktivieren Sie die Auslagerungsdatei
sudo swapon /swapfile
Um den Auslagerungsbereich beim Systemstart bereitzustellen, bearbeiten Sie die Datei /etc/fstab
Datei.
sudo nano /etc/fstab
Fügen Sie die folgende Zeile am Ende dieser Datei hinzu.
/swapfile swap swap defaults 0 0
Speichern und schließen Sie die Datei. Laden Sie dann systemd neu und starten Sie ClamAV neu.
sudo systemctl daemon-reload sudo systemctl restart clamav-daemon
Schritt 7:Prüfen, ob Port 25 (ausgehend) blockiert ist
Ihr ISP oder Hosting-Provider blockiert eingehende Verbindungen zu Port 25 Ihres Servers nicht, was bedeutet, dass Sie E-Mails von anderen Mailservern empfangen können. Viele ISP/Hosting-Anbieter blockieren jedoch ausgehende Verbindungen zu Port 25 anderer Mailserver, was bedeutet, dass Sie keine E-Mails senden können.
Wenn Ihre E-Mail nicht an Ihrer anderen E-Mail-Adresse wie Google Mail angekommen ist, führen Sie den folgenden Befehl auf Ihrem E-Mail-Server aus, um zu überprüfen, ob Port 25 (ausgehend) blockiert ist.
telnet gmail-smtp-in.l.google.com 25
Wenn es nicht blockiert ist, sehen Sie Nachrichten wie unten, die darauf hinweisen, dass eine Verbindung erfolgreich hergestellt wurde. (Hinweis:Geben Sie quit
ein und drücken Sie die Eingabetaste, um die Verbindung zu schließen.)
Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp
Wenn Port 25 (ausgehend) blockiert ist, sehen Sie so etwas wie:
Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out
In diesem Fall kann Ihr Postfix-SMTP-Server keine E-Mails an andere SMTP-Server senden. Bitten Sie Ihren ISP/Hosting-Provider, es für Sie zu öffnen. Wenn sie Ihre Anfrage ablehnen, müssen Sie ein SMTP-Relay einrichten, um die Blockierung von Port 25 zu umgehen.
Sie können immer noch keine E-Mail senden?
Wenn Port 25 (ausgehend) nicht blockiert ist, Sie aber trotzdem keine E-Mails von Ihrem eigenen Mailserver an Ihre andere E-Mail-Adresse wie Gmail senden können, sollten Sie das E-Mail-Protokoll (/var/log/mail.log
).
sudo nano /var/log/mail.log
Einige Leute könnten zum Beispiel die folgenden Zeilen in der Datei sehen.
host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information
Dies bedeutet, dass Ihr E-Mail-Server IPv6 zum Senden der E-Mail verwendet, Sie jedoch keine IPv6-Einträge eingerichtet haben. Sie sollten zu Ihrem DNS-Manager gehen und AAAA
einstellen Eintrag für mail.your-domain.com
, dann sollten Sie PTR
setzen record für Ihre IPv6-Adresse, die in Schritt 9 besprochen wird.
Schritt 8:Mail-Clients auf Ihrem Computer oder Mobilgerät verwenden
Starten Sie Ihren Desktop-E-Mail-Client wie Mozilla Thunderbird und fügen Sie ein E-Mail-Konto hinzu.
- Wählen Sie im Abschnitt für eingehende Server das IMAP-Protokoll aus und geben Sie
mail.your-domain.com
ein Wählen Sie als Servernamen Port 143 und STARTTLS. Wählen Sienormal password
als Authentifizierungsmethode. - Wählen Sie im ausgehenden Abschnitt das SMTP-Protokoll aus und geben Sie
mail.your-domain.com
ein Wählen Sie als Servernamen Port 587 und STARTTLS. Wählen Sienormal password
als Authentifizierungsmethode.
Fail2ban blockiert Ihre eigene IP-Adresse
Wenn Sie einen Fehler gemacht haben und sich mehrmals nicht beim Mailserver anmelden konnten, blockiert möglicherweise der Fail2ban-Dienst auf dem Mailserver Ihre IP-Adresse. Sie können Ihre IP-Adresse zur Whitelist hinzufügen, indem Sie jail.local
bearbeiten Datei.
sudo nano /etc/fail2ban/jail.local
Fügen Sie Ihre eigene IP-Adresse zur Ignorierliste wie unten hinzu. Ersetzen Sie 12.34.56.78 durch Ihre echte IP-Adresse.
ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
Speichern und schließen Sie die Datei. Starten Sie dann Fail2ban neu.
sudo systemctl restart fail2ban
Schritt 9:E-Mail-Zustellbarkeit verbessern
Um zu verhindern, dass Ihre E-Mails als Spam gekennzeichnet werden, sollten Sie PTR
setzen , SPF
, DKIM
und DMARC
Aufzeichnungen.
PTR-Eintrag
Ein Zeigerdatensatz oder PTR-Datensatz ordnet eine IP-Adresse einem FQDN (vollständig qualifizierter Domänenname) zu. Er ist das Gegenstück zum A-Record und wird für Reverse DNS verwendet Lookup, das beim Blockieren von Spammern helfen kann. Viele SMTP-Server lehnen E-Mails ab, wenn kein PTR-Eintrag für den sendenden Server gefunden wird.
Um den PTR-Eintrag auf eine IP-Adresse zu überprüfen, führen Sie diesen Befehl aus:
dig -x IP-address +short
oder
host IP-address
Der PTR-Eintrag wird nicht von Ihrem Domain-Registrar verwaltet. Es wird von der Organisation verwaltet, die Ihnen eine IP-Adresse gibt. Da Sie die IP-Adresse von Ihrem Hosting-Provider oder ISP erhalten, nicht von Ihrem Domain-Registrar, müssen Sie den PTR-Eintrag für Ihre IP im Control Panel Ihres Hosting-Providers festlegen oder Ihren ISP fragen. Sein Wert sollte der Hostname Ihres Mailservers sein:mail.your-domain.com
. Wenn Ihr Server eine IPv6-Adresse verwendet, stellen Sie sicher, dass Sie auch einen PTR-Eintrag für Ihre IPv6-Adresse hinzufügen.
Um den Reverse-DNS-Eintrag für Ihr Kamatera-VPS zu bearbeiten, melden Sie sich im Kamatera-Clientbereich an, öffnen Sie dann ein Support-Ticket und sagen Sie ihnen, dass sie einen PTR-Eintrag für Ihre Server-IP-Adressen hinzufügen sollen, um die IP-Adresse auf mail.your-domain.com
. Das ist nicht praktisch, denken Sie vielleicht, aber es dient dazu, Spammer von der Plattform fernzuhalten, damit legitime E-Mail-Absender wie wir einen hervorragenden IP-Ruf haben.
SPF-Eintrag
SPF (Sender Policy Framework)-Eintrag gibt an, welche Hosts oder IP-Adressen E-Mails im Namen einer Domäne senden dürfen. Sie sollten nur Ihrem eigenen E-Mail-Server oder dem Server Ihres Internetdienstanbieters erlauben, E-Mails für Ihre Domain zu senden. Erstellen Sie in Ihrer DNS-Verwaltungsoberfläche einen neuen TXT-Eintrag wie unten.
Erklärung:
- TXT gibt an, dass es sich um einen TXT-Eintrag handelt.
- Geben Sie @ ein im Namensfeld, um den Hauptdomänennamen darzustellen.
- v=spf1 gibt an, dass dies ein SPF-Eintrag ist und die Version SPF1 ist.
- mx bedeutet, dass alle in den MX-Einträgen aufgeführten Hosts E-Mails für Ihre Domain senden dürfen und alle anderen Hosts nicht zugelassen sind.
- ~alle gibt an, dass E-Mails von Ihrer Domain nur von Hosts kommen sollen, die im SPF-Eintrag angegeben sind. E-Mails, die von anderen Hosts stammen, werden als gefälscht gekennzeichnet.
Um zu überprüfen, ob Ihr SPF-Eintrag an das öffentliche Internet weitergegeben wird, können Sie das Dienstprogramm dig auf Ihrem Linux-Rechner wie folgt verwenden:
dig your-domain.com txt
Die txt
Option sagt dig
dass wir nur TXT-Einträge abfragen wollen.
DKIM-Eintrag
DKIM (DomainKeys Identified Mail) verwendet einen privaten Schlüssel, um E-Mails, die von Ihrer Domain gesendet werden, digital zu signieren. Empfangende SMTP-Server überprüfen die Signatur mithilfe des öffentlichen Schlüssels, der im DNS-DKIM-Eintrag veröffentlicht wird.
Das iRedMail-Skript konfiguriert automatisch die DKIM-Signierung und -Verifizierung für Ihren Server. Das einzige, was noch zu tun ist, ist das Erstellen eines DKIM-Eintrags im DNS-Manager. Führen Sie den folgenden Befehl aus, um den öffentlichen DKIM-Schlüssel anzuzeigen.
sudo amavisd-new showkeys
Der öffentliche DKIM-Schlüssel steht in Klammern.
Erstellen Sie dann in Ihrem DNS-Manager einen TXT-Eintrag und geben Sie dkim._domainkey
ein im Namensfeld. Kopieren Sie alles in den Klammern und fügen Sie es in das Wertfeld ein. Löschen Sie alle doppelten Anführungszeichen und Zeilenumbrüche.
Führen Sie nach dem Speichern Ihrer Änderungen den folgenden Befehl aus, um zu testen, ob Ihr DKIM-Eintrag korrekt ist.
sudo amavisd-new testkeys
Wenn der DKIM-Eintrag korrekt ist, wird der Test bestanden. Beachten Sie, dass Ihr DKIM-Eintrag möglicherweise einige Zeit benötigt, um im Internet verbreitet zu werden. Abhängig von der von Ihnen verwendeten Domänenregistrierungsstelle wird Ihr DNS-Eintrag möglicherweise sofort weitergegeben oder es kann bis zu 24 Stunden dauern, bis er weitergegeben wird. Sie können zu https://www.dmarcanalyzer.com/dkim/dkim-check/ gehen und dkim
eingeben als Selektor und geben Sie Ihren Domänennamen ein, um die DKIM-Eintragsweitergabe zu überprüfen.
TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass
DMARC-Eintrag
DMARC steht für Domain-based Message Authentication, Reporting and Conformance. DMARC kann empfangenden E-Mail-Servern helfen, legitime E-Mails zu identifizieren und zu verhindern, dass Ihr Domänenname durch E-Mail-Spoofing verwendet wird.
Um einen DMARC-Eintrag zu erstellen, gehen Sie zu Ihrem DNS-Manager und fügen Sie ein TXT hinzu Aufzeichnung. Geben Sie im Namensfeld _dmarc
ein . Geben Sie im Wertfeld Folgendes ein. (Sie sollten die [E-Mail-geschützte] E-Mail-Adresse erstellen.)
v=DMARC1; p=none; pct=100; rua=mailto:[email protected]
Der obige DMARC-Eintrag ist ein sicherer Ausgangspunkt. Um die vollständige Erklärung von DMARC zu sehen, lesen Sie bitte den folgenden Artikel.
- Erstellen eines DMARC-Eintrags zum Schutz Ihres Domainnamens vor E-Mail-Spoofing
Schritt 10:E-Mail-Score und Platzierung testen
Gehen Sie nach dem Erstellen des PTR-, SPF- und DKIM-Eintrags zu https://www.mail-tester.com . Sie sehen eine eindeutige E-Mail-Adresse. Senden Sie eine E-Mail von Ihrer Domain an diese Adresse und überprüfen Sie dann Ihre Punktzahl. Wie Sie sehen können, habe ich eine perfekte Punktzahl bekommen. Im Testergebnis sollten Sie überprüfen, ob Ihr PTR-Eintrag, SPF- und DKIM-Eintrag gültig ist.
Mail-tester.com kann Ihnen nur eine Absenderbewertung anzeigen. Es gibt einen weiteren Dienst namens GlockApps, mit dem Sie überprüfen können, ob Ihre E-Mail im Posteingang oder Spam-Ordner des Empfängers gelandet ist oder direkt abgelehnt wurde. Es unterstützt viele beliebte E-Mail-Anbieter wie Gmail, Outlook, Hotmail, YahooMail, iCloud Mail usw.
Was ist, wenn Ihre E-Mail von Microsoft Mailbox abgelehnt wird?
Microsoft scheint eine interne Blacklist zu verwenden, die viele legitime IP-Adressen blockiert. Wenn Ihre E-Mails von Outlook oder Hotmail abgelehnt werden, müssen Sie das Absenderinformationsformular einreichen. Danach wird Ihre E-Mail von Outlook/Hotmail akzeptiert.
Was ist, wenn Ihre E-Mails immer noch als Spam markiert werden?
In diesem Artikel habe ich weitere Tipps für dich:Wie du verhinderst, dass deine E-Mails als Spam markiert werden. Obwohl es einige Zeit und Mühe kosten wird, werden Ihre E-Mails schließlich im Posteingang platziert, nachdem Sie diese Tipps angewendet haben.
Mehrere E-Mail-Domains hinzufügen
Ich habe diesen Artikel geschrieben, um Ihnen zu zeigen, wie Sie mehrere E-Mail-Domains in iRedMail hinzufügen.
Greylisting deaktivieren
Standardmäßig hat iRedMail Greylisting aktiviert, das andere sendende SMTP-Server anweist, es in ein paar Minuten erneut zu versuchen. Dies ist hauptsächlich nützlich, um Spam zu blockieren, verschlechtert aber auch die Benutzererfahrung. Wenn Sie Greylisting lieber deaktivieren möchten, befolgen Sie die nachstehenden Anweisungen.
Fügen Sie der /opt/iredapd/settings.py
Schreibberechtigung hinzu Datei.
sudo chmod 600 /opt/iredapd/settings.py
Then edit the configuration file.
sudo nano /opt/iredapd/settings.py
Find the following line.
plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]
Remove "greylisting"
from the list. Save and close the file. Then restart iredapd.
sudo systemctl restart iredapd
Change the configuration file back to read only mode.
sudo chmod 400 /opt/iredapd/settings.py
Enabling SMTPS Port 465
If you are going to use Microsoft Outlook client, then you need to enable SMTPS port 465 in Postfix SMTP server.
Troubleshooting
First, please use a VPS with at least 4GB RAM. Running iRedMail on a 1GB RAM VPS will cause the database, SpamAssassin, or ClamAV to be killed because of out-of-memory problem. If you insist on using a 1GB RAM VPS, you are going to lose incoming emails and have other undesirable outcomes.
If the iRedMail web interface isn’t accessible, like a 502 gateway error, you should check the Nginx logs in /var/log/nginx/
directory to find clues. You may also want to check the mail log /var/log/mail.log
.
Check if the various services are running.
systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status clamav-daemon systemctl status amavis systemctl status php7.3-fpm systemctl status iredadmin
If you enabled the firewall, you should open the following ports in the firewall.
HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993
If you would like to use the UFW firewall, check my guide here:Getting started with UFW firewall on Debian and Debian.
How to Renew TLS Certificate
Let’s Encrypt issued TLS certificate is valid for 90 days only and it’s important that you set up a Cron job to automatically renew the certificate. You can run the following command to renew certificate.
sudo certbot renew -w /var/www/html
You can use the --dry-run
option to test the renewal process, instead of doing a real renewal.
sudo certbot renew -w /var/www/html --dry-run
If you see the following error when renewing TLS certificate.
The client lacks sufficient authorization :: Invalid response
Then you need to create the hidden directory.
sudo mkdir -p /var/www/html/.well-known/acme-challenge
And set www-data
as the owner of the webroot.
sudo chown www-data:www-data /var/www/html/ -R
Also, edit the SSL virtual host /etc/nginx/sites-enabled/00-default-ssl.conf
. Add the following lines.
location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; }
Save and close the file. Test Nginx configuration and reload.
sudo nginx -t sudo systemctl reload nginx
Create Cron Job
If now the dry run is successful, you can create Cron job to automatically renew certificate. Simply open root user’s crontab file.
sudo crontab -e
Then add the following line at the bottom of the file.
@daily certbot renew -w /var/www/html --quiet && systemctl reload postfix dovecot nginx
Reloading Postfix, Dovecot and Nginx is necessary to make these programs pick up the new certificate and private key.
For Advanced Users
You may want to customize the SpamAssassin content filter to better detect spam.
- Block Email Spam By Checking Header and Body in Postfix/SpamAssassin
If your website and mail server are running on two different VPS (virtual private server), you can set up SMTP relay between your website and mail server, so that your website can send emails through your mail server. See the following article. (It’s written for Ubuntu, but also works on Debian).
- How to set up SMTP relay between 2 Postfix SMTP servers on Ubuntu