| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| centos:mail_c7:spam_11 [03.12.2014 13:47. ] – [SRS-Deamon] django | centos:mail_c7:spam_11 [18.11.2024 19:11. ] (aktuell) – Externe Bearbeitung 127.0.0.1 |
|---|
| <WRAP center round info 60%> | |
| Artikel befindet sich gerade in der Bearbeitung! | |
| </WRAP> | |
| ====== SRS - Sender Rewriting Scheme unter CentOS 7.x ====== | ====== SRS - Sender Rewriting Scheme unter CentOS 7.x ====== |
| {{:centos:mail_c6:spf-logo-medium.png?nolink |SPF Logo}} | {{:centos:mail_c6:spf-logo-medium.png?nolink |SPF Logo}} |
| Im Kapitel [[centos:mail_c6:mta_10|SPF - Sender Policy Framework]] sind wir bereits darauf eingegangen, dass mit unter Probleme bei Mailumleitungen und/oder WebFormularen auftauchen können. Mit **[[http://www.openspf.org/SRS|SRS]]**((**S**ender **R**ewriting **S**cheme)) kann ein Mailserver die eMail-Adresse im Envelop umschreiben und anpassen. | Im Kapitel [[centos:mail_c7:spam_10|SPF - Sender Policy Framework]] sind wir bereits darauf eingegangen, dass mit unter Probleme bei Mailumleitungen und/oder WebFormularen auftauchen können. Mit **[[http://www.openspf.org/SRS|SRS]]**((**S**ender **R**ewriting **S**cheme)) kann ein Mailserver die eMail-Adresse im Envelope umschreiben und anpassen. |
| |
| Das nachfolgende Schaubild verdeutlicht, warum bei zu strenger Wahl des SPF-Records der Versand bei einer Weiterleitung (alias) fehlschlägt. Der empfangende Mailserver überprüft die Angaben **HELO** und **MAIL FROM** im **Envelop** der eMail. Hierzu frägt der Mailserver den SPF-Record des sendenden Systems ab und vergleicht die IP-Adresse/Namen des einliefernden Empfängers mit den legitimen Sendern des SMF-Records. Ist der einliefernde Mailserver berechtigt, kann mit der weiteren Annahme und Prüfung fortgefahren werden. Ist der einliefernde Mailserver aber __**nicht**__ berechtigt, quittiert das System den Zustellversuch mit einem Fehler-(code) **550**. | Das nachfolgende Schaubild verdeutlicht, warum bei zu strenger Wahl des SPF-Records der Versand bei einer Weiterleitung (alias) fehlschlägt. Der empfangende Mailserver überprüft die Angaben **HELO** und **MAIL FROM** im **Envelop** der eMail. Hierzu frägt der Mailserver den SPF-Record des sendenden Systems ab und vergleicht die IP-Adresse/Namen des einliefernden Empfängers mit den legitimen Sendern des SMF-Records. Ist der einliefernde Mailserver berechtigt, kann mit der weiteren Annahme und Prüfung fortgefahren werden. Ist der einliefernde Mailserver aber __**nicht**__ berechtigt, quittiert das System den Zustellversuch mit einem Fehler-(code) **550**. |
| |
| <uml w=900> | <uml> |
| title Mailversand einer eMail bei Weiterleitung (alias)\n | title Mailversand einer eMail bei Weiterleitung (alias)\n |
| skin BlueModern | |
| participant "\n Mail-Server mx1.example.org \n 88.217.127.21 \n" as links | participant "\n Mail-Server mx1.example.org \n 88.217.127.21 \n" as links |
| participant "\n Mail-Server mx01.nausch.org \n 217.91.103.190 \n" as mitte | participant "\n Mail-Server mx01.nausch.org \n 217.91.103.190 \n" as mitte |
| </uml> | </uml> |
| |
| Da in dem fiktiven Beispiel der Mailserver mx01.nausch.org __**nicht berechtigt**__ ist Nachrichten der Domain example.org zu verschicken, schlägt die Zustellung an das Zielsystemfehl und der Mailserver wird die zuvor angenommene eMail zurück an den Absender bouncen! | Da in dem fiktiven Beispiel der Mailserver mx01.nausch.org __**nicht berechtigt**__ ist Nachrichten der Domain example.org zu verschicken, schlägt die Zustellung an das Zielsystemfehl und der Mailserver wird die zuvor angenommene eMail zurück an den Absender bouncen! |
| |
| Damit die Nachricht nun beim eigentlichen Zielsystem ankommt, müssen wir dafür Sorge tragen, dass das relayende System, also unser Mailserver, beim **MAIL FROM** im **Envelope** unsere Domain als Absender setzt. Dann kann das eigentliche Zielsystem, unsere eMail annehmen, da wir für unseren Mailserver einen entsprechend gültigen SPF-Record vorweisen können. Für den Fall, dass die Nachricht aber vom Zielsystem nicht zugestellt werden kann, oder eben von diesem später gebounced werden könnte, müssen wir uns nun die Absender-Adresse des ursprünglichen Mailservers merken. Nur so haben wir die Möglichkeit, den ursprünglichen Absender über den Zustellfehlversuch zu informieren. | Damit die Nachricht nun beim eigentlichen Zielsystem ankommt, müssen wir dafür Sorge tragen, dass das relayende System, also unser Mailserver, beim **MAIL FROM** im **Envelope** unsere Domain als Absender setzt. Dann kann das eigentliche Zielsystem, unsere eMail annehmen, da wir für unseren Mailserver einen entsprechend gültigen SPF-Record vorweisen können. Für den Fall, dass die Nachricht aber vom Zielsystem nicht zugestellt werden kann, oder eben von diesem später gebounced werden könnte, müssen wir uns nun die Absender-Adresse des ursprünglichen Mailservers merken. Nur so haben wir die Möglichkeit, den ursprünglichen Absender über den Zustellfehlversuch zu informieren. |
| Und an dieser Stelle setzt nun Sender Rewriting Scheme (kurz **SRS**) an! Wird eine eMail weitergeleitet, so setzt der SRS-Deamon die Envelop-Adresse **MAIL FROM** nach folgendem Schema: //**SRS0+xxxx=yy=example.com=alice@yourdomain.org**//, den wird dann auch als **Return-Path** im Mailheader unserer eMail beim entsprechenden Zielsystem vorfinden. | Und an dieser Stelle setzt nun Sender Rewriting Scheme (kurz **SRS**) an! Wird eine eMail weitergeleitet, so setzt der SRS-Deamon die Envelop-Adresse **MAIL FROM** nach folgendem Schema: //**SRS0+xxxx=yy=example.com=alice@yourdomain.org**//, den wird dann auch als **Return-Path** im Mailheader unserer eMail beim entsprechenden Zielsystem vorfinden. |
| Return-Path: <SRS0+bCEv=YT=web.de=honeypot_for_spam@nausch.org> | Return-Path: <SRS0+bCEv=YT=web.de=honeypot_for_spam@nausch.org> |
| Sollte die eMail zu uns zurück-bouncen, so kann unser Mailserver mit den Angaben dann, den ursprünglichen Absender, in dem Beispiel also //honeypot_for_spam@web.de// rekonstruieren und den Bounce an den richtigen Absender zurück schicken. Damit nun der //**revers-SRS**// nicht als open-relay-Adresse missbraucht werden kann, werden bei der Envelop-Adresse die beiden Feder **xxx** und **yy** eingesetzt, die zum einen eine kryptografische Signatur und einen Zeitstempel repräsentieren. Sollten bei einem Bounce diese Angaben nicht stimmen, wird die Annahme der Nachricht verweigert, also verworfen. | Sollte die eMail zu uns zurück-bouncen, so kann unser Mailserver mit den Angaben dann, den ursprünglichen Absender, in dem Beispiel also //honeypot_for_spam@web.de// rekonstruieren und den Bounce an den richtigen Absender zurück schicken. Damit nun der //**reverse-SRS**// nicht als open-relay-Adresse missbraucht werden kann, werden bei der Envelope-Adresse die beiden Feder **xxx** und **yy** eingesetzt, die zum einen eine kryptografische Signatur und einen Zeitstempel repräsentieren. Sollten bei einem Bounce diese Angaben nicht stimmen, wird die Annahme der Nachricht verweigert, also verworfen. |
| |
| ===== Postfix Voraussetzungen ===== | ===== Postfix Voraussetzungen ===== |
| TCP_TABLE(5) | TCP_TABLE(5) |
| </code> | </code> |
| Ob der im Einsatz befindliche Postfix diese Tabellen unterstützt, können wir wie folgt abfragen. | Ob der im Einsatz befindliche Postfix diese //**TCP**//-Lookup-Tabellen unterstützt, können wir wie folgt abfragen. |
| # postconf -d | grep mail_version && postconf -m | # postconf -d | grep mail_version && postconf -m |
| |
| |
| ===== Installation ===== | ===== Installation ===== |
| ==== repository.mailserver.guru ==== | ==== repository.nausch.org ==== |
| Die einfachste und schnellste Variante bei der Installation ist die aus dem Repository **[[centos:mailserver.guru|mailserver.guru]]**. Hier reicht ein einfacher Aufruf von **yum** und alles wird automatisch installiert. | Die einfachste und schnellste Variante bei der Installation ist die aus dem Repository **[[centos:nausch.org|nausch.org]]**. Hier reicht ein einfacher Aufruf von **yum** und alles wird automatisch installiert. |
| yum install postsrsd -y | yum install postsrsd -y |
| |
| ==== localinstall ==== | ==== localinstall ==== |
| Will man das **[[http://repo.mailserver.guru/|Repository mailserver.guru]]** __nicht__ einbinden kann man natürlich auch das betreffende Paket lokal installieren. | Will man das **[[http://repo.nausch.org/|Repository nausch.org]]** __nicht__ einbinden kann man natürlich auch das betreffende Paket lokal installieren. |
| # yum localinstall http://repo7.mailserver.guru/7/x86_64/postsrsd-1.2-1.el7.centos.x86_64.rpm | # yum localinstall http://repo7.nausch.org/7/x86_64/postsrsd-1.2-1.el7.centos.x86_64.rpm |
| |
| Ein Update des Paketes geht entsprechend der Installation. | Ein Update des Paketes geht entsprechend der Installation. |
| # yum localupdate http://repo7.mailserver.guru/7/x86_64/postsrsd-1.2-1.el7.centos.x86_64.rpm | # yum localupdate http://repo7.nausch.org/7/x86_64/postsrsd-1.2-1.el7.centos.x86_64.rpm |
| |
| ===== Paketinhalt ===== | ===== Paketinhalt ===== |
| Build Host : vml000200.dmz.nausch.org | Build Host : vml000200.dmz.nausch.org |
| Relocations : (not relocatable) | Relocations : (not relocatable) |
| Packager : Django <django@mailserver.guru> | Packager : Django <django@nausch.org> |
| URL : https://github.com/roehling/postsrsd/archive/1.2.tar.gz | URL : https://github.com/roehling/postsrsd/archive/1.2.tar.gz |
| Summary : PostSRSd provides the Sender Rewriting Scheme (SRS) via TCP-based lookup tables for Postfix. | Summary : PostSRSd provides the Sender Rewriting Scheme (SRS) via TCP-based lookup tables for Postfix. |
| |
| Den erfolgreichen Start bzw. den Status des **postsrsd**-Daemon können wir bei Bedarf mit folgendem Aufruf abfragen. | Den erfolgreichen Start bzw. den Status des **postsrsd**-Daemon können wir bei Bedarf mit folgendem Aufruf abfragen. |
| # | # systemctl status postsrsd |
| | |
| | <html><pre class="code"> |
| | <font style="color: rgb(0, 255, 0)"><b>● </b></font>postsrsd.service - PostSRSd Daemon |
| | Loaded: loaded (/usr/lib/systemd/system/postsrsd.service; enabled) |
| | Active: <font style="color: rgb(0, 255, 0)"><b>active (running)</b></font>since Wed 2014-12-03 14:39:49 CET; 2s ago |
| | Main PID: 29588 (postsrsd) |
| | CGroup: /system.slice/postsrsd.service |
| | └─29588 /usr/sbin/postsrsd -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -c/var/lib/postsrsd -Xpgp.guru |
| | |
| | Dec 03 14:39:49 vml000087.dmz.nausch.org systemd[1]: Starting PostSRSd Daemon... |
| | Dec 03 14:39:49 vml000087.dmz.nausch.org systemd[1]: Started PostSRSd Daemon.</font> |
| | </pre> |
| | </html> |
| | |
| | In der Prozessliste finden wir mindestens einen neuen Prozess, der gestartet wurde. |
| | # ps aux | grep postsrsd |
| | |
| | nobody 29588 0.0 0.0 6420 740 ? Ss 14:39 0:00 /usr/sbin/postsrsd -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -c/var/lib/postsrsd -Xpgp.guru |
| | |
| | Mittels **netstat** können wir überprüfen, ob die beiden Ports 10001 und 10002 geöffnet wurden. |
| | # netstat -tulpen | grep 1000 |
| | |
| | tcp 0 0 127.0.0.1:10001 0.0.0.0:* LISTEN 0 290001 29588/postsrsd |
| | tcp 0 0 127.0.0.1:10002 0.0.0.0:* LISTEN 0 290003 29588/postsrsd |
| | |
| | Läuft unser Daemon kann mit Hilfe von **lsof** sehen wir nicht nur den geöffneten Port, sondern auch die Verbindungen die dort anliegen. |
| | # lsof -i :10001 |
| | |
| | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME |
| | postsrsd 6170 nobody 5u IPv4 574244 0t0 TCP localhost:scp-config (LISTEN) |
| | postsrsd 7151 nobody 5u IPv4 574244 0t0 TCP localhost:scp-config (LISTEN) |
| | cleanup 7299 postfix 22u IPv4 583245 0t0 TCP localhost:43341->localhost:scp-config (ESTABLISHED) |
| | postsrsd 7300 nobody 0u IPv4 583246 0t0 TCP localhost:scp-config->localhost:43341 (ESTABLISHED) |
| | postsrsd 7300 nobody 5u IPv4 574244 0t0 TCP localhost:scp-config (LISTEN) |
| | postsrsd 7301 nobody 5u IPv4 574244 0t0 TCP localhost:scp-config (LISTEN) |
| | |
| | # lsof -i :10002 |
| | |
| | postsrsd 6170 nobody 6u IPv4 574246 0t0 TCP localhost:documentum (LISTEN) |
| | smtpd 7146 postfix 40u IPv4 582010 0t0 TCP localhost:57592->localhost:documentum (ESTABLISHED) |
| | postsrsd 7151 nobody 0u IPv4 582011 0t0 TCP localhost:documentum->localhost:57592 (ESTABLISHED) |
| | postsrsd 7151 nobody 6u IPv4 574246 0t0 TCP localhost:documentum (LISTEN) |
| | cleanup 7299 postfix 23u IPv4 583248 0t0 TCP localhost:57652->localhost:documentum (ESTABLISHED) |
| | postsrsd 7300 nobody 6u IPv4 574246 0t0 TCP localhost:documentum (LISTEN) |
| | postsrsd 7301 nobody 0u IPv4 583249 0t0 TCP localhost:documentum->localhost:57652 (ESTABLISHED) |
| | postsrsd 7301 nobody 6u IPv4 574246 0t0 TCP localhost:documentum (LISTEN) |
| | |
| | ==== automatisches Starten des Dienste beim Systemstart ==== |
| | Damit der Daemon automatisch beim Hochfahren des Servers gestartet wird, nutzen wir folgenden Aufruf. |
| | # systemctl enable postsrsd.service |
| | |
| | ln -s '/usr/lib/systemd/system/postsrsd.service' '/etc/systemd/system/multi-user.target.wants/postsrsd.service' |
| | |
| | Wollen wir überprüfen ob der Dienst automatisch startet, verwenden wir folgenden Aufruf. |
| | # systemctl is-enabled postsrsd.service |
| | |
| | enabled |
| | |
| | Die Rückmeldung **enabled** zeigt an, dass der Dienst automatisch startet; ein **disabled** zeigt entsprechend an, dass der Dienst __nicht__ automatisch startet. |
| | |
| | ===== Umschreibungen / Logging ===== |
| | Im Maillog unseres Mailservers werden die Umschreibungen entsprechend dokumentiert. |
| | # less /var/log/maillog |
| | |
| | Dec 3 19:01:59 vml000080 postsrsd[5806]: srs_forward: <honeypot_for_spam@web.de> rewritten as <SRS0+BaCI=YT=web.de=honeypot_for_spam@nausch.org> |
| | |
| | Im Header zugestellten eMail beim Empfänger wird dies auch im **Return-Path**hinterlegt. |
| | Return-Path: <SRS0+BaCI=YT=web.de=honeypot_for_spam@nausch.org> |
| |
| | Bounced das Zielsystem die Nachricht, weil dieses z.B. die Nachricht wegen einer vollen Mailbox nicht zustellen kann, kann das relayende System nun problemlos den eigentlichen Absender informieren, da der **PostSRSd** die Zieladresse wieder ermitteln und umschreiben (**srs_reverse**) kann. |
| |
| | Dec 3 23:23:23 vml000080 postsrsd[6883]: srs_reverse: <SRS0+bCev=YT=web.de=honeypot_for_spam@nausch.org> rewritten as <honeypot_for_spam@web.de> |
| | ... |
| | ... |
| | Dec 8 12:42:23 vml000080 postfix/smtp[6884]: 8413383: to=<honeypot_for_spam@web.de>, orig_to=<SRS0+bCev=YT=web.de=honeypot_for_spam@nausch.org>, relay=mx-ha03.web.de[213.165.67.104]:25, delay=0.75, delays=0.06/0/0.41/0.29, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=0LtrOf-1X9H7q3CS5-011BDN) |
| |
| | ====== Links ====== |
| | * **⇐ [[centos:mail_c7:spam_10|Zurück zum Kapitel "SPF - Sender Policy Framework unter CentOS 7.x"]]** |
| | * **⇒ [[centos:mail_c7:spam_12|Weiter zum Kapitel "DMARC - Domain-based Message Authentication, Reporting & Conformance unter CentOS 7.x"]]** |
| | * **[[centos:mail_c7:start|Zurück zum Kapitel >>Mailserverinstallation unter CentOS 7<<]]** |
| | * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]** |
| | * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** |
| |
| |
| |
| |