Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c6:mta_14 [18.03.2014 15:34. ] – [Installation] djangocentos:mail_c6:mta_14 [21.11.2022 20:53. ] (aktuell) – [SRS - Sender Rewriting Scheme] django
Zeile 5: Zeile 5:
 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
Zeile 58: Zeile 58:
 ===== Installation ===== ===== Installation =====
  
-Für **SRS** setzen wir den **[[https://github.com/roehling/postsrsd|Postfix SRS Deamon]], kurz **PostSRSd** von [[https://github.com/roehling|Timo Röhling]] ein. **PostSRSd** nutzt dabei zwei //TCP lookup tables//. Details zu diesen TCP lookup Tabellen, finden sich in der zugehörigen manpage.+Für **SRS** setzen wir den **[[https://github.com/roehling/postsrsd|Postfix SRS Deamon]]**, kurz **PostSRSd** von [[https://github.com/roehling|Timo Röhling]] ein. **PostSRSd** nutzt dabei zwei //TCP lookup tables//. Details zu diesen TCP lookup Tabellen, finden sich in der zugehörigen manpage.
    # man 5 tcp_table    # man 5 tcp_table
 <code bash>TCP_TABLE(5)                                                      TCP_TABLE(5) <code bash>TCP_TABLE(5)                                                      TCP_TABLE(5)
Zeile 170: Zeile 170:
  
 ==== Postfix ==== ==== Postfix ====
 +Leider unterstützt der aus dem Base-Repository stammende Postfix in der Version 2.6.6  keine TCP Lookup Tabellen, so dass wir auf eine neuere Version ausweichen müssen. 
 +
 +Die Firma [[http://www.imt-systems.com/|IMT-Systems GmbH]] stellt auf ihrem [[http://download.imt-systems.com/postfix/2.10/2.10.0/x86_64/|Download-Server]] aktuellere **//Postfix 2.10.0//** RPM Pakete für CentOS 6 zur Verfügung.
 +
 +Wir laden uns also die entsprechenden RPM-Pakete auf unseren Server, dazu wechslen wir aber erst in unser lokales Programmarchiv.
 +   # cd /usr/local/src/packages/
 +Dann holen wir uns die zwei Pakete via **wget**.
 +   # wget http://download.imt-systems.com/postfix/2.10/2.10.0/x86_64/postfix-2.10.0-1.el6.x86_64.rpm
 +
 +   # wget http://download.imt-systems.com/postfix/2.10/2.10.0/x86_64/postfix-perl-scripts-2.10.0-1.el6.x86_64.rpm
 +
 +Haben wir unseren Mailserver zuvor noch nicht installiert und konfiguriert, fahren wir erst mit der Erstinstallation aus dem Kapitel **[[centos:mail_c6:mta_1|Installation eines sicheren Mailservers mit Postfix unter CentOS 6.x]]** fort.
 +
 +Bevor wir nun mit der Installation der beiden Pakete beginnen, stoppen wir ggf. unseren bereits laufenden Postfix-Mailserver.
 +    # service postfix stop
 +
 +  Shutting down postfix:                                      OK  ]
 +
 +Haben wir noch keinen Postfix-Mailserver installiert, so tun wir das nun.
 +   # yum localinstall --nogpgcheck postfix-2.10.0-1.el6.x86_64.rpm postfix-perl-scripts-2.10.0-1.el6.x86_64.rpm
 +
 +Haben wir bereits eine Installation und Konfiguration unseres Postfix-Mailservers vorzuweisen, updaten wir nun diese.
 +   # yum localupdate --nogpgcheck postfix-2.10.0-1.el6.x86_64.rpm postfix-perl-scripts-2.10.0-1.el6.x86_64.rpm
 +
 +Mit dem Aufruf von **postconf** werden uns dann etwaige Konfigurationsparameter, die es in 2.6.6  gab aber im 2.10.0 nicht mehr angezeigt und wir können diese anpassen und überarbeiten. Passt alles, können wir nun unseren Postfix-Mailserver wieder starten.
 +   # service postfix start
 +
 +  Starting postfix:                                          [  OK  ]
 +
 +Damit unser aktueller Postfix nicht bei einem Systemupdate ggf. überschrieben wird, excludieren wir diesen im alten Base-Repository.
 +   # vim /etc/yum.repos.d/CentOS-Base.repo
 +
 +<file bash /etc/yum.repos.d/CentOS-Base.repo>...
 +[updates]
 +# Django : 2014-03-17
 +exclude=postfix*
 +
 +...
 +</file>
 +
 +Fragen wir nun erneut die Lookup Tabellen Unterstützungen ab, werden uns im Gegensatz zur Version 2.6.6 bei der 2.10.0 wesentlich mehr angeboten.
 +   # postconf -d | grep mail_version && postconf -m
 +
 +<code>mail_version = 2.10.0
 +protocol
 +milter_macro_v = $mail_name $mail_version
 +btree
 +cidr
 +environ
 +fail
 +hash
 +internal
 +ldap
 +memcache
 +mysql
 +nis
 +pcre
 +proxy
 +regexp
 +socketmap
 +static
 +tcp
 +texthash
 +unix
 +</code>
 +
 ==== SRS-Deamon ==== ==== SRS-Deamon ====
 +Als laden wir uns das aktuelle RPM auf unseren Server. 
 +   # cd /usr/local/src/packages
 +
 +   # wget http://repository.nausch.org/public/x86_64/postsrsd-1.0.1-1.el6.x86_64.rpm
 +
 +Dann installieren wir das Paket. 
 +   # yum localinstall postsrsd-1.0.1-1.el6.x86_64.rpm
 +
 +Altenativ können wir das Paket natürlich auch direkt von [[http://repository.nausch.org/public/|Djangos Repository]] aus installieren. 
 +   # yum localinstall http://repository.nausch.org/public/x86_64/postsrsd-1.0.1-1.el6.x86_64.rpm
 +
 +Ein Update des Paketes geht entsprechend der Installation. 
 +   # yum localupdate http://repository.nausch.org/public/x86_64/postsrsd-1.0.1-1.el6.x86_64.rpm
 +
 +Was uns das Paket alles mitbringt, zeigt uns wie immer der Aufruf von **rpm -qil <paketname>**.
 +   # rpm -qil postsrsd
 +<code>Name        : postsrsd                     Relocations: (not relocatable)
 +Version     : 1.0.1                             Vendor: django
 +Release     : 1.el6                         Build Date: Fri 28 Mar 2014 11:08:53 AM CET
 +Install Date: Fri 28 Mar 2014 11:14:34 AM CET      Build Host: vml010039.intra.nausch.org
 +Group       : System Environment/Daemons    Source RPM: postsrsd-1.0.1-1.el6.src.rpm
 +Size        : 41781                            License: GPLV2+
 +Signature   : RSA/SHA1, Fri 28 Mar 2014 11:08:54 AM CET, Key ID 31b4758f7c65ab27
 +Packager    : Django <django@nausch.org>
 +URL         : https://github.com/roehling/postsrsd/archive/1.0.1.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/rc.d/init.d/postsrsd
 +/etc/sysconfig/postsrsd
 +/usr/sbin/postsrsd
 +/usr/share/doc/postsrsd-1.0.1
 +/usr/share/doc/postsrsd-1.0.1/README.md
 +/usr/share/doc/postsrsd-1.0.1/main.cf.ex
 +/var/lib/postsrsd
 +</code>
 +
 ===== Konfiguration ===== ===== Konfiguration =====
-==== Postfix ====+
 ==== SRS-Deamon ==== ==== SRS-Deamon ====
-FIXME //... coming soon...// FIXME+Die Konfiguration des **postsrsd**-Daemons gestaltet sich vergleichsweise einfach und erfolgt lediglich mit Hilfe Der Datei //**/etc/sysconfig/postsrsd**//.  
 +Mit unserem Editor der Wahl, z.Bvim bearbeiten wir diese Konfigurationsdatei 
 +   # vim /etc/sysconfig/postsrsd 
 +<file bash /etc/sysconfig/postsrsd># Default settings for postsrsd 
 + 
 +# Local domain name 
 +# Addresses are rewritten to originate from this domainThe default value  
 +# is taken from `postconf -h mydomain` and probably okay. 
 +
 +#SRS_DOMAIN=example.com 
 +# Django : 2014-03-27 
 +SRS_DOMAIN=nausch.org 
 + 
 +# 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. 
 +
 +#SRS_EXCLUDE_DOMAINS=.example.com,example.org 
 + 
 +# 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 
 +# Django : 2014-03-27 
 +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 
 +# Django : 2014-03-27 
 +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 
 +</file> 
 + 
 +==== Postfix ==== 
 +In der Postfix-Konfigurationsdatei //**/etc/postfix/main.cf**// tragen wir nun noch die Erweiterungen für die TCP Lookup Tabellen nach. 
 + 
 +<file bash /etc/postfix/main.cf>... 
 + 
 +# Django : 2014-03-18 
 +# Lookup-Tabelle zum Umschreibungen von Absender eMail-Adressen im SMTP-Envelop und im Header der eMail 
 +sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps, tcp:127.0.0.1:10001 
 +
 +# Definition welche Adressen umgeschrieben werden sollen 
 +sender_canonical_classes = envelope_sender 
 +
 +# Lookup-Tabelle zum Umschreibungen von Empfänger eMail-Adressen im SMTP-Envelop und im Header der eMail 
 +recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps, tcp:127.0.0.1:10002 
 +
 +# Definition welche Adressen umgeschrieben werden sollen 
 +recipient_canonical_classes = envelope_recipient 
 + 
 +...</file> 
 + 
 +===== Programmstart ===== 
 +==== erster manueller Start des Daemon ==== 
 +Nun können wir das erste mal **PostSRSd** anstarten. 
 +   # service postsrsd start 
 + 
 +  Starting Postfix Sender Rewriting Scheme Daemon:            OK  ] 
 + 
 +In der Prozessliste finden wir mindestens einen neuen Prozess, der gestartet wurde: 
 +   # ps aux | grep postsrsd 
 + 
 +  nobody    6170  0.0  0.0   6184   352 ?        S    11:20   0:00 /usr/sbin/postsrsd -4 -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -p -c -X -D 
 +  nobody    7151  0.0  0.0   6188   316 ?        S    11:41   0:00 /usr/sbin/postsrsd -4 -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -p -c -X -D 
 +  nobody    7300  0.0  0.0   6188   500 ?        S    11:44   0:00 /usr/sbin/postsrsd -4 -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -p -c -X -D 
 +  nobody    7301  0.0  0.0   6188   316 ?        S    11:44   0:00 /usr/sbin/postsrsd -4 -f10001 -r10002 -dnausch.org -s/etc/postsrsd.secret -unobody -p -c -X -D 
 + 
 +Mittels **netstat** können wir überpfü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          40632      5185/postsrsd        
 +  tcp        0      0 127.0.0.1:10002             0.0.0.0:                  LISTEN      0          40634      5185/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 Deamon **PostSRSd** automatisch bei jedem Systemstart startet, denn ohne laufenden **postsrsd** verweigert nun unser **postfix** die Annahme der Nachrichten, kann die Einrichtung des Start-Scripte über folgenden Befehle erreicht werden: 
 +   # chkconfig postsrsd on 
 + 
 +Die Überprüfungung ob postsrsd wirklich bei jedem Systemstart automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden: 
 +   # chkconfig --list | grep postsrsd 
 + 
 +   postsrsd        0:off 1:off 2:on 3:on 4:on 5:on 6:off 
 +Wichtig sind jeweils die Schalter **on** bei den Runleveln - **2 3 4 5**.  
 + 
 +===== Umschreibungen / Logging ===== 
 +Im Maillog unseres Mailservers werden die Umschreibungen entsprechend dokumentiert. 
 +   # less /var/log/maillog 
 + 
 +  Mar 18 21: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. 
 + 
 +  Mar 13 21:27:25 vml000080 postsrsd[6883]: srs_reverse: <SRS0+bCev=YT=web.de=honeypot_for_spam@nausch.org> rewritten as <honeypot_for_spam@web.de> 
 +  ... 
 +  ... 
 +  Mar 18 21:27:26 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_c6:start|Zurück zum Kapitel >>Mailserverinstallation unter CentOS 6<<]]** 
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]** 
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** 
 + 
 + 
  • centos/mail_c6/mta_14.1395156859.txt.gz
  • Zuletzt geändert: 18.03.2014 15:34.
  • von django