HOWTO Setup Ubuntu 18.04 Sendmail + DKIM + SPF + DMARC oder wie ich es geschafft habe, in die Google Mail-Bastion zu gelangen

Vorwort


Auf meinem Server drehen sich 2 separate Domänen. Vor der Geschichte der Blockierung von Roskomnadzor haben wir ungefähr 2000 Besuche pro Tag gesammelt, und der Mailserver hat ungefähr 200 Briefe pro Tag an alle gängigen Mail-Dienste gesendet, einschließlich Google und Yandex. Alles war großartig. Aber wie das berühmte Video sagt: „Bis Navalny Roskomnadzor kam alles so gut!

Nachdem es uns nun gelungen ist, einen Hoster zu finden, dessen IP-Adressen nicht unter die staatliche Zensurblockierung fallen, ist ein weiteres Problem aufgetreten. Die Google Good Corporation hat aufgehört, unseren Postboten über die Schwelle hinausgehen zu lassen.

Der Google MX-Server sendet meine E-Mail mit ungefähr der folgenden Nachricht: "Ihre Nachricht scheint unaufgefordert zu sein, verabschieden wir uns ..."

Google SMTP-Verbindungsprotokoll
050 <legale.legale@gmail.com>... Connecting to gmail-smtp-in.l.google.com. via esmtp... 050 220 mx.google.com ESMTP v6-v6si38552789wrc.432 - gsmtp 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-STARTTLS 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> STARTTLS 050 220 2.0.0 Ready to start TLS 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> MAIL From:<root@sevenlight.ru> SIZE=297 050 250 2.1.0 OK v6-v6si38552789wrc.432 - gsmtp 050 >>> RCPT To:<legale.legale@gmail.com> 050 >>> DATA 050 250 2.1.5 OK v6-v6si38552789wrc.432 - gsmtp 050 354 Go ahead v6-v6si38552789wrc.432 - gsmtp 050 >>> . 050 550-5.7.1 [2a02:c207:2018:3546::1 7] Our system has detected that this 050 550-5.7.1 message is likely unsolicited mail. To reduce the amount of spam sent 050 550-5.7.1 to Gmail, this message has been blocked. Please visit 050 550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError 050 550 5.7.1 for more information. v6-v6si38552789wrc.432 - gsmtp 


Mit diesem Befehl habe ich eine Testnachricht gesendet:

 echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com 

Ich werde nicht über meine Tänze mit einem Tamburin schreiben, um Spamfilter zu durchbrechen. Ich kann nur sagen, dass ich die ganze Nacht transportiert wurde, aber ich konnte erst am nächsten Tag Erfolg haben. Deshalb habe ich beschlossen, dieses Handbuch zu schreiben.

SPF + DKIM-EINRICHTUNGSANLEITUNG FÜR UBUNTU 18.04


Die Steilheit dieser Anweisung besteht darin, dass sie im Gegensatz zu vielen anderen funktioniert. Ich garantiere, dass Sie mindestens 2 Domains auf 1 Server ohne große Schwierigkeiten konfigurieren können.

1. Installieren Sie die erforderlichen Pakete


 apt-get install sendmail opendkim -y 

2. Konfigurieren Sie opendkim


Die Konfiguration finden Sie hier: /etc/opendkim.conf

/etc/opendkim.conf
AutoRestart Ja
UMask 002
Syslog ja
AutoRestartRate 10 / 1h
Kanonisierung entspannt / einfach
ExternalIgnoreList refile: / etc / opendkim / TrustedHosts

InternalHosts refile: / etc / opendkim / TrustedHosts
KeyTable refile: / etc / opendkim / KeyTable
SigningTable refile: / etc / opendkim / SigningTable

LogWhy Ja
Modus sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
Socket inet: 8891 @ localhost
SyslogSuccess Ja
Temporäres Verzeichnis / var / tmp
UserID opendkim: opendkim

3. Richten Sie Schlüssel und Signaturregeln ein


Ich werde das Verfahren zum Erstellen eigener Schlüssel für diejenigen beschreiben, die vollständige Autonomie wünschen. Persönlich verwende ich den Yandex.Direct Mail-Dienst für die Domain pdd.yandex.ru, sodass ich die von Yandex generierten Schlüssel habe.

 #   mkdir -p /etc/opendkim/keys/*****.ru #  cd /etc/opendkim/keys/******.ru #  #-s   -d      opendkim-genkey -s mail -d ******.ru #  2  mail.txt     mail.private   #    opendkim:opendkim chown opendkim:opendkim mail.* #     chmod 600 mail.private 

Als nächstes verbinden wir unseren geheimen DKIM-Schlüssel, der von Yandex erstellt oder heruntergeladen wurde.

Wir interessieren uns für diese drei Zeilen aus der opendkim-Konfiguration:

 InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable 

Die erste /etc/opendkim/TrustedHosts enthält Hosts, die Zugriff auf den opendkim-Server haben, um E-Mails zu signieren.

/ etc / opendkim / TrustedHosts
127.0.0.1
localhost
######. ru
******. ru

Die zweite Datei /etc/opendkim/KeyTable enthält eine Tabelle mit privaten Schlüsseln und zugehörigen DKIM-Einträgen, die folgende sind: [selector]._domainkey.[domain_name]

/ etc / opendkim / KeyTable
mail._domainkey.sevenlight.ru sixlight.ru:mail:/etc/opendkim/keys/sevenlight.ru/mail.private
mail._domainkey.st-goods.ru st-goods.ru:mail:/etc/opendkim/keys/st-goods.ru/mail.private

Die dritte Datei /etc/opendkim/SigningTable enthält eine /etc/opendkim/SigningTable zum Signieren von Briefen. Es zeigt an, wessen Buchstaben und mit welchem ​​Schlüssel zu unterschreiben sind.

/ etc / opendkim / SigningTable
*@sevenlight.ru mail._domainkey.sevenlight.ru
*@st-goods.ru mail._domainkey.st-goods.ru

Wir erstellen diese Dateien unter Angabe unserer Domain und unseres Pfads zur Schlüsseldatei. Damit ist die Einrichtung von opendkim abgeschlossen.

4. Konfigurieren Sie sendmail


Das Konfigurieren von sendmail ist so einfach wie möglich. Wir müssen nur die folgenden Zeilen am Ende der Prototyp-Konfigurationsdatei /etc/mail/sendmail.mc :

 #    starttls include(`/etc/mail/tls/starttls.m4')dnl # sendmail    opendkim INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl 

Um E-Mails standardmäßig von der richtigen Domain aus zu senden, müssen Sie eine weitere Änderung in der Datei /etc/mail/sendmail.mc

Wir suchen nach einer ähnlichen Zeile: MASQUERADE_AS(`st-goods.ru')dnl die gewünschte Domain ersetzen. Diese Domain wird als Standard-Absenderadresse verwendet. Bitte beachten Sie, dass die Anführungszeichen dort streng genommen unterschiedlich sind. Das erste Zeichen heißt gravis. Aus irgendeinem Grund ist es in einer sendmail-Konfiguration enthalten.

Jetzt fügen wir der Datei / etc / hosts Einträge hinzu. Dies ist erforderlich, damit sendmail Nachrichten durch den Filter leitet. Es wurde experimentell festgestellt, dass, wenn Sie keine Einträge hinzufügen, alle Protokolle makellos bleiben, ohne dass ein einziger Fehler angezeigt wird, die Buchstaben jedoch nicht signiert sind.

 #ipv4 echo -e "127.0.0.1 st-goods.ru" >> /etc/hosts #ipv6 echo -e "::1 st-goods.ru" >> /etc/hosts 

Jetzt müssen wir sendmail mit den neuen Einstellungen neu erstellen.

 #  #    "" sendmailconfig #  opendkim  sendmail service opendkim restart && service sendmail restart 

Jetzt kann unser sendmail-Server ausgehende Nachrichten über den opendkim-Server weiterleiten, der eine digitale Signatur hinzufügt und die Kopfzeilen der gesendeten Briefe verschlüsselt. Der öffentliche Schlüssel für den Host muss noch veröffentlicht werden, damit die Header entschlüsselt werden können und sichergestellt wird, dass die Header nicht geändert werden.

5. DKIM TXT-Datensatzeinstellungen auf dem DNS-Server


Der Schlüssel muss auf dem DNS-Server in einer TXT-Zeichenfolge mit folgendem Inhalt angehalten werden:
Host: mail._domainkey
Wert: v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw

Erklärungen:
p= das ist unser öffentlicher Schlüssel
v= definiert die Versionsnummer von DKIM
t= setzt Flags; Flags sind nicht standardmäßig gesetzt. Es gibt 2 Flags 'y' und 's'.
y zeigt an, dass sich DKIM im Testmodus befindet.
s den Modus, in dem der rechte Teil der E-Mail-Adresse nach @ vollständig mit der im Parameter d = DKIM der Signatur des Briefes angegebenen Domäne übereinstimmen muss.

Der Host muss wie folgt angegeben werden: [selector]._domainkey
Wir haben einen Mail-Selektor, daher mail._domainkey der Host wie mail._domainkey : mail._domainkey

Der öffentliche Schlüssel muss aus der Datei /etc/opendkim/keys/st-goods.ru/mail.txt

/etc/opendkim/keys/st-goods.ru
mail._domainkey IN TXT ("v = DKIM1; h = sha256; k = rsa;„
„P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLFjSAqvfSrjvF0JfMkiSzqWRhXwwVPzW5OEtRFSoDVBwDxR6hMna1iESnUQ1OzbUQQPnDPbrFXkalDCAXigZqltTSAV + JQSyOwhi0b88WS3djb1IkA / qioCobjlhMFSatvcmz5kMkG8oeoHhVFQ / BE84PwDPTXRmcObDvg7meUmkYpdxeyr + tcG5ezuC + s15I00 + 6NSAaj0Tj»
«Y / Bl2e2TE / WG45wVShlQ85E8IpYixscd0qDJ9 / NbZrbWIfy8shujWVk5izNU4PqcWwW7 / H9uTkhAbMu0fgqT8W9Jv / GRVAireOCzMl13E9PVANt4o + ywqyGk38vSY8QdgJsZPDUQIDAQAB»); - DKIM-Schlüsselmail für st-goods.ru

Der Schlüssel geht von p = bis zum letzten Anführungszeichen. Die Anführungszeichen selbst müssen entfernt werden.

6. SPF-Einrichtung


SPF (Sender Policy Frameword) ist eine weitere Spam-Schutztechnologie, über die ich nicht sprechen werde. Nur 2 Wörter, um die Essenz dieser Technologie zu verstehen. Im DNS-Eintrag einer Domäne werden die Adressen von Servern, die das Recht haben, E-Mails von dieser Domäne zu senden, auf dieselbe Weise wie der öffentliche DKIM-Schlüssel aufgezeichnet. Wir müssen die IP-Adressen unseres Servers in diesem Eintrag registrieren. In meinem Fall wird der Yandex-Server ebenfalls zur Liste hinzugefügt.

Hier ist ein Beispiel für meinen Beitrag:
Host: @
Wert: v=spf1 a mx include:_spf.yandex.net ip4:173.249.51.13 ip6:2a02:c207:2018:3546::1 ~all

Die Syntax ist einfach. Zuerst wird die SPF-Version angezeigt, und nach einem Leerzeichen mit oder ohne Pluszeichen werden die Adressen der Server angezeigt, die das Recht haben, E-Mails von dieser Domain zu senden. Ich habe die Einträge a und mx, was bedeutet, dass Server aus den DNS-Einträgen A und MX ebenfalls in der Liste der zulässigen Einträge enthalten sind. Über include: Die Yandex-Serveradresse wird angegeben, und dann die IPv4- und IPv6-Adressen meines Servers. ~ all bedeutet Softfail "Soft Failure". Das heißt, Alle Adressen, die nicht in erlaubt aufgeführt sind, können weiterhin im Ermessen des empfangenden Servers liegen. -all würde eine harte Ablehnung bedeuten.

7. DMARC-Setup


Der letzte Nagel, der in die Google Mail-Bastion eindringt, ist DMARC. DMARC legt fest, was mit E-Mails zu tun ist, bei denen SPF oder DKIM fehlschlagen.

Wir machen alles genau gleich über einen TXT-DNS-Eintrag.
Host: _dmarc
Wert: v=DMARC1; p=none v=DMARC1; p=none

Hier stellen wir fest, dass nichts getan werden muss, wenn die Briefe den SPF oder DKIM nicht bestanden haben. Sie können p = ablehnen setzen. Dann werden solche Briefe abgelehnt.

Überprüfen Sie


Schicken Sie sich einen Brief. echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com

Wir sehen uns die neuesten Einträge im Mail-Protokoll an. tail -f /var/log/mail.log | grep dkim
Eine ähnliche Zeile sollte angezeigt werden:

 Jun 11 22:07:55 sevenlight opendkim[6473]: w5BK7sl9008069: DKIM-Signature field added (s=mail, d=st-goods.ru) 

Wenn es eine Leitung gibt, haben der sendmail-Server und opendkim zusammengearbeitet und Ihren Brief unterschrieben. Wenn es keine solche Zeile gibt, lesen Sie den Abschnitt „Mögliche Probleme“.

Nun wollen wir sehen, was in der Mailbox passiert ist. Öffnen Sie den Buchstaben und drücken Sie die Abwärtspfeiltaste in der oberen rechten Ecke des Buchstabens. Wählen Sie im Dropdown-Menü den Punkt „Original anzeigen“.

Folgendes habe ich bekommen:

 Message ID <201806112007.w5BK7sUS008068@******.ru> Created on: 11 June 2018 at 22:07 (Delivered after 2 seconds) From: info@*****.ru To: legale.legale@gmail.com Subject:  №2221 -   ******.ru SPF: PASS with IP 2a02:c207:2018:3546:0:0:0:1 Learn more DKIM: 'PASS' with domain *****.ru Learn more DMARC: 'PASS' Learn more 

GEWINN $$$

Mögliche Probleme


Ich hoffe aufrichtig, dass dieser Abschnitt nicht gelesen werden muss, aber die Technik ist eine komplizierte Sache ... Manchmal ist nicht klar, wer für wen arbeitet.

Überprüfen Sie zunächst, ob Sie alles in der in der Anleitung angegebenen Reihenfolge ausgeführt haben.
Überprüfen Sie zunächst die Datei / etc / hosts auf die Richtigkeit der Änderungen. Ich hatte dort die meisten Probleme. Überprüfen Sie als Nächstes das Systemprotokoll auf dkim-Fehler. Während ich herumwühlte, stieß ich auf eine Situation, in der es unmöglich war, den geheimen Schlüssel opendkim zu lesen, obwohl ich den Benutzer opendkim als Eigentümer der Datei zugewiesen hatte. Als nächstes sollten Sie das Ausführungsprotokoll des Befehls sendmailconfig sorgfältig untersuchen. Ich hatte den Fall, dass ich anstelle des Put-Kieses das übliche einfache Anführungszeichen verwendet habe, und sendmailconfig hat darauf geschworen. Wenn alles andere fehlschlägt, schreibe mir und versuche es weiter.

Source: https://habr.com/ru/post/de415569/


All Articles