Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_centos_7_-_srs_einsetzen

Postfix CentOS 7 - SRS einsetzen

SPF kann Probleme bei der E-Mail Umleitungen z.B. bei Web-Formularen verursachen. SRS (Sender Rewriting Scheme) ist eine Möglichkeit, eine E-Mail so umzuschreiben, dass das SPF (Sender Policy Framework) auch mit E-Mail-Umleitungen funktioniert.

SRS (Sender Rewriting Scheme) ist eine einfache Möglichkeit bei der Weiterleitung von E-Mails durch den MTA, die E-Mail-Adresse des Absenders im Envelop umzuschreiben und anzupassen bzw. zu erweitern. Das ursprüngliche Konzept wurde im Entwurf, welcher unter nachfolgendem externen Link einsehbar ist draft-mengwong-sender-rewrite veröffentlicht und weiter in nachfolgender Spezifikation, ebenfalls in nachfolgendem externen Link einsehbar The Sender Rewriting Scheme spezifiziert.

Das Sender Rewriting Scheme (kurz SRS) ist eine Methode, um den Absender (genauer: den Envelope Sender) einer E-Mail so umzuschreiben, dass das Sender Policy Framework (SPF) auch mit E-Mail-Umleitungen funktioniert.

Bei einer E-Mail-Umleitung werden nicht nur den Absender im Header unverändert gelassen, sondern auch der im SMTP vorgesehene Envelope Sender, der mit SPF überprüft wird. In so einem Fall ist der weiterleitende E-Mail-Server möglicherweise nicht im Sinne von SPF berechtigt, die E-Mail zu versenden.

Wird als Lösung jedoch der Envelope Sender einfach umgeschrieben, kann es passieren, dass Fehlermeldungen nicht mehr ankommen.

Beispiel:

a@d1.example schreibt eine E-Mail an b@d2.example; die E-Mail an b@d2.example wird jedoch an c@d3.example weitergeleitet. Der E-Mail-Server von d2.example ist nicht berechtigt die E-Mail von d1.example zu versenden, also ist die E-Mail aus Sicht von d3.example ungültig. Würde der E-Mail-Server von d2.example die Adresse b@d2.example als Absender nehmen, könnte d3.example den ursprünglichen Absender a@d1.example nicht informieren, wenn ein Fehler bei der Zustellung stattfände, denn d3.example würde die Fehlernachricht an b@d2.example versenden, was wieder weitergeleitet würde und damit wieder fehlschlagen würde.

SRS löst das Problem dadurch, dass der ursprüngliche Absender im neuen Absender kodiert wird, im obigen Beispiel z.B. in der Form a#d1.example-b@d2.example.

Da das aber dazu führen könnte, dass man E-Mails mit gefälschtem Absender über SRS versenden könnte, ist in der SRS-Adresse ein zusätzlicher kryptographischer Hash vorgesehen, der die Adresse sichert. Eine vollständige SRS-Adresse hat die Form.

SRS0=HHH=TT=hostname=local-part@domain

wobei HHH für den Hash und TT für einen Zeitstempel steht.

:!: HINWEIS - Aus Sicht des Versenders einer E-Mail kann SRS eine unbefriedigende Lösung sein, da er zwar mit SPF bestimmen kann, welche E-Mail-Server mit eigenen Absenderadressen versenden dürfen, er aber darauf angewiesen ist, dass alle weiterleitenden E-Mail-Server SRS implementieren, damit die E-Mail sicher zugestellt wird, was jedoch letztendlich außerhalb seines Einflussbereiches liegt.

* Quelle: Wikipedia: Sender Rewriting Scheme

:!: WICHTIG - Bei CentOS ab der Version 7.x ist Postfix in der Version 2.10.1 enthalten, was die Nutzung einiger Möglichkeiten neuerer Postfix Versionen verhindert. Deshalb soll Postfix aus nachfolgendem Drittanbieter-Repository installiert werden! - Siehe dazu den nachfolgenden internen Link:

Postfix wird von Wietse Venema entwickelt.
PostSRSd (Postfix SRS Deamon) wird von Timo Röhling entwickelt.

Beschreibung Externer Link
Homepage https://github.com/roehling
Dokumentation https://github.com/roehling/postsrsd

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Herunterladen

Nachfolgend soll das Drittanbieter-Repository, welches von dem von mir sehr geschätzten Michael Nausch betrieben und eine sichere und verlässliche Quelle für rpm-Pakete ist, wie unter nachfolgendem internen Link dargestellt, eingebunden werden:

Installation

Nachfolgendes rpm-Paket ist zur Installation erforderlich:

Die Installation von postsrsd, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:

# yum install postsrsd
Loaded plugins: changelog, priorities
224 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package postsrsd.x86_64 0:1.2-1.el7.centos will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package       Arch        Version                Repository               Size
================================================================================
Installing:
 postsrsd      x86_64      1.2-1.el7.centos       mailserver.guru-os       23 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 23 k
Installed size: 45 k
Is this ok [y/d/N]: y
Downloading packages:
postsrsd-1.2-1.el7.centos.x86_64.rpm                       |  23 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : postsrsd-1.2-1.el7.centos.x86_64                             1/1 
  Verifying  : postsrsd-1.2-1.el7.centos.x86_64                             1/1 

Installed:
  postsrsd.x86_64 0:1.2-1.el7.centos                                            

Complete!

Die Installation von postsrsd, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:

# rpm -qil postsrsd
Name        : postsrsd
Version     : 1.2
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Thu 10 Nov 2016 09:51:19 AM CET
Group       : System Environment/Daemons
Size        : 46260
License     : GPL
Signature   : RSA/SHA1, Wed 03 Dec 2014 01:04:43 PM CET, Key ID 60ecfb9e8195aea0
Source RPM  : postsrsd-1.2-1.el7.centos.src.rpm
Build Date  : Wed 03 Dec 2014 01:04:33 PM CET
Build Host  : vml000200.dmz.nausch.org
Relocations : (not relocatable)
Packager    : Django <django@mailserver.guru>
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.
Description :
PostSRSd provides the Sender Rewriting Scheme (SRS) via TCP-based
lookup tables for Postfix. SRS is needed if your mail server acts
as forwarder.
/etc/sysconfig/postsrsd
/usr/lib/systemd/system/postsrsd.service
/usr/sbin/postsrsd
/usr/share/doc/postsrsd-1.2
/usr/share/doc/postsrsd-1.2/README.md
/usr/share/doc/postsrsd-1.2/main.cf.ex
/var/lib/postsrsd

Konfiguration: SRS

/etc/sysconfig/postsrsd

Standardmäßig wird nach der Installation von SRS - postsrsd in nachfolgendem Verzeichnis mit nachfolgendem Namen die Konfigurationsdatei für den SRS - postsrsd hinterlegt:

  • /etc/sysconfig/postsrsd

Nachfolgende Änderungen sind an der Konfigurationsdatei /etc/sysconfig/postsrsd durchzuführen:

(Komplette Konfigurationsdatei)

# Default settings for postsrsd
 
# Local domain name.
# Addresses are rewritten to originate from this domain. The default value
# is taken from `postconf -h mydomain` and probably okay.
#
# Tachtler
# default: #SRS_DOMAIN=example.com
SRS_DOMAIN=tachtler.net
 
# Exclude additional domains.
# You may list domains which shall not be subjected to address rewriting.
# If a domain name starts with a dot, it matches all subdomains, but not
# the domain itself. Separate multiple domains by space or comma.
#
# Tachtler
#SRS_EXCLUDE_DOMAINS=.example.com,example.org
SRS_EXCLUDE_DOMAINS=.edmz.tachtler.net,.idmz.tachtler.net,.intra.tachtler.net,dmarc.tachtler.net,dmarcreports.tachtler.net
 
# Secret key to sign rewritten addresses.
# When postsrsd is installed for the first time, a random secret is generated
# and stored in /etc/postsrsd.secret. For most installations, that's just fine.
#
SRS_SECRET=/etc/postsrsd.secret
 
# Local ports for TCP list.
# These ports are used to bind the TCP list for postfix. If you change
# these, you have to modify the postfix settings accordingly. The ports
# are bound to the loopback interface, and should never be exposed on
# the internet.
#
SRS_FORWARD_PORT=10001
SRS_REVERSE_PORT=10002
 
# Drop root privileges and run as another user after initialization.
# This is highly recommended as postsrsd handles untrusted input.
#
RUN_AS=nobody
 
# Jail daemon in chroot environment
CHROOT=/var/lib/postsrsd

Nachfolgende Änderungen sollten vorgenommen werden:

  • SRS_DOMAIN=tachtler.net

Definition der Domain für die SRS (Sender Rewriting Scheme) zur Anwendung kommen soll.

  • SRS_EXCLUDE_DOMAINS=.edmz.tachtler.net,.idmz.tachtler.net,.intra.tachtler.net,dmarc.tachtler.net,dmarcreports.tachtler.net

Definition der Domain und Sub-Domain die vom SRS (Sender Rewriting Scheme) zur Anwendung ausgeschlossen werden sollen. Das können z.B. alle internen und weitere besondere Domains und Sub-Domains sein.

Konfiguration: Postfix

/etc/postfix/main.cf

Hier die Änderungen an der Konfigurationsdatei /etc/postfix/main.cf

(Nur relevanter Ausschnitt):

...
# ADDRESS REWRITING
#
# The ADDRESS_REWRITING_README document gives information about
# address masquerading or other forms of address rewriting including
# username->Firstname.Lastname mapping.
 
# Tachtler - new - Das Postfix Buch - Seite 116-119.
# without SRS: recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps
recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps,
                           tcp:127.0.0.1:10002
# Tachtler - new - 
# default: recipient_canonical_classes = envelope_recipient, header_recipient
recipient_canonical_classes = envelope_recipient
 
# without SRS: sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps
sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps,
                        tcp:127.0.0.1:10001
# Tachtler - new - 
# default: sender_canonical_classes = envelope_sender, header_sender
sender_canonical_classes = envelope_sender
...

Nachfolgende Änderungen sollten vorgenommen werden:

  • recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps,
                               tcp:127.0.0.1:10002

Angabe der TCP lookup table, über die der Empfänger umgeschrieben werden soll.

  • recipient_canonical_classes = envelope_recipient

Welche Klassen sind der Adresszuordnung von recipient_canonical_maps unterworfen. Standardmäßig wird die Adresszuordnung von recipient_canonical_maps auf Envelop-Empfängeradressen und auf Header-Empfängeradressen angewendet.

  • sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps,
                            tcp:127.0.0.1:10001

Angabe der TCP lookup table, über die der Sender umgeschrieben werden soll.

  • sender_canonical_classes = envelope_sender

Welche Klassen sind der Adresszuordnung von sender_canonical_maps unterworfen. Standardmäßig wird die Adresszuordnung von sender_canonical_maps auf Envelop-Absenderadressen und auf Header-Absenderadressen angewendet.

Erster Start/Neustart

SRS Dienst/Daemon-Start einrichten

Um den SRS (Sender Rewriting Scheme) der als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable postsrsd
Created symlink from /etc/systemd/system/multi-user.target.wants/postsrsd.service to /usr/lib/systemd/system/postsrsd.service.

Eine Überprüfung, ob beim Neustart des Server der postsrsd-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep -e postsrsd
postsrsd.service                            enabled

bzw.

# systemctl is-enabled postsrsd
enabled

Erster Start SRS

Um den SRS (Sender Rewriting Scheme) zu starten kann nachfolgender Befehl angewandt werden:

# systemctl start postsrsd

Eine Überprüfung ob der Start des SRS (Sender Rewriting Scheme) erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte:

# systemctl status postsrsd
● postsrsd.service - PostSRSd Daemon
   Loaded: loaded (/usr/lib/systemd/system/postsrsd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-11-10 10:36:03 CET; 5s ago
 Main PID: 2241 (postsrsd)
   CGroup: /system.slice/postsrsd.service
           └─2241 /usr/sbin/postsrsd -f10001 -r10002 -dtachtler.net -s/etc/po...

Nov 10 10:36:03 server60.idmz.tachtler.net systemd[1]: Started PostSRSd Daemon.
Nov 10 10:36:03 server60.idmz.tachtler.net systemd[1]: Starting PostSRSd Daem...
Hint: Some lines were ellipsized, use -l to show in full

bzw. mit nachfolgendem Befehl, ob der Dienst/Daemon in der Prozessliste erscheint:

# ps aux | grep postsrsd
nobody    2241  0.0  0.0   6452   712 ?        Ss   10:36   0:00 /usr/sbin/postsrsd -f10001 -r10002
-dtachtler.net -s/etc/postsrsd.secret -unobody -c/var/lib/postsrsd -X
root      2264  0.0  0.0 112648   932 pts/0    S+   10:36   0:00 grep --color=auto postsrsd

Neustart Postfix

Um den Postfix neu zu starten kann nachfolgender Befehl angewandt werden:

# systemctl restart postfix

Eine Überprüfung ob der Neustart des Postfix erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte:

# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-11-10 10:39:08 CET; 4s ago
  Process: 2648 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
  Process: 2666 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 2663 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 2660 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 2738 (master)
   CGroup: /system.slice/postfix.service
           ├─2738 /usr/libexec/postfix/master -w
           ├─2739 pickup -l -t unix -u -o content_filter=lmtp:[192.168.0.70]:10024 -o lmtp_use_tls=yes
           └─2740 qmgr -l -t unix -u

Nov 10 10:39:07 server60.idmz.tachtler.net systemd[1]: Starting Postfix Mail Transport Agent...
Nov 10 10:39:08 server60.idmz.tachtler.net postfix/master[2738]: daemon started -- version 2.11.8,
configuration /etc/postfix
Nov 10 10:39:08 server60.idmz.tachtler.net systemd[1]: Started Postfix Mail Transport Agent.

Überprüfungen

Nachfolgende soll überprüft werden, ob die Umschreibungen auch tatsächlich durchgeführt werden.

/var/log/maillog

Nachfolgende Zeile sollte in der LOG-Datei /var/log/maillog erscheinen, solbald eine Umschreibung durchgeführt wird:

(Nur relevanter Ausschnitt):

...
Nov 10 10:53:52 server60 postsrsd[4658]: srs_forward: <nick.kerchen@mnet-online.de> rewritten as
<SRS0+yx42=Y1=mnet-online.de=nick.kerchen@tachtler.net>

Wird ein bounce vom Zielsystem der Nachricht durchgeführt, kann das relayende System den eigentlichen Absender informieren, da vom SRS (Sender Rewriting Scheme) Dienst/Deamon die Zieladresse wieder ermitteln und zurück umgeschrieben werden kann (srs_reverse).

(Nur relevanter Ausschnitt):

...
Nov 10 10:55:35 server60 postsrsd[6883]: srs_reverse: <SRS0+yx42=Y1=mnet-online.de=nick.kerchen@tachtler.net>
rewritten as <nick.kerchen@mnet-online.de>
...
...
Nov 10 10:56:12 server60 postfix/smtp[6883]: 8413383: to=<nick.kerche@mnet-online.de>, orig_to=
<SRS0+yx42=Y1=mnet-online.de=nick.kerchen@tachtler.net>, relay=mail-out.m-online.net[212.18.0.9]: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=0Btr1f-2Y2H7s3AB3-012SFG)
...

E-Mail-Header

Auch im Header der zugestellten E-Mail wird beim Empfänger die Umschreibung auch im Return-Path hinterlegt:

(Nur relevanter Ausschnitt):

...
Return-Path: <SRS0+yx42=Y1=mnet-online.de=nick.kerchen@tachtler.net>
...
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_centos_7_-_srs_einsetzen.txt · Zuletzt geändert: 2017/05/03 09:53 von klaus