Inhaltsverzeichnis
Postfix CentOS 7
Postfix ist Wietse Venema's Mail-Server, welcher bei „IBM research“ als Alternative zum ehemals weit verbreiteten Programm Sendmail entwickelt wurde. Postfix erhebt den Anspruch ein schneller, einfach zu administrierender und sicherer Mail-Server zu sein.
WICHTIG - Für den erfolgreichen Betrieb eines eigenen MTA (Mail Transport Agent) sollten Sie im Besitz einer festen IP-Adresse sein !!!
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!
Postfix wird von Wietse Venema entwickelt.
Beschreibung | Externer Link |
---|---|
Homepage | http://www.postfix.org |
Dokumentation | http://www.postfix.org/documentation.html |
Ankündigungen | http://www.postfix.org/announcements.html |
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 ein Drittanbieter-Repository, welches von dem mir sehr geschätzten Michael Nausch betrieben wird und eine sichere und verlässliche Quelle für rpm-Pakete darstellt, wie unter nachfolgendem internen Link dargestellt, eingebunden werden:
Deinstallation
Bevor mit der eigentlichen Deinstallation des postfix
-Pakets begonnen werden kann, sollte Postfix mit nachfolgendem Befehl gestoppt werden:
# systemctl stop postfix
Dienst/Deamon-Stopp durchführen
Um einen Postfix, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers nicht mehr zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server nicht mehr mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl disable postfix.service rm '/etc/systemd/system/multi-user.target.wants/postfix.service'
Eine Überprüfung, ob beim Neustart des Server der dovecot
-Dienst/Deamon wirklich nicht mehr 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 postfix.service postfix.service disabled
bzw.
# systemctl is-enabled postfix.service disabled
Paket postfix entfernen
Nachdem das Drittanbieter-Repository
erfolgreich eingebunden wurde, kann mit nachfolgenden Befehlen, das alte rpm
-Paket - postfix
deinstalliert werden:
# yum remove postfix Loaded plugins: changelog, priorities Resolving Dependencies --> Running transaction check ---> Package postfix.x86_64 2:2.10.1-6.el7 will be erased --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: postfix x86_64 2:2.10.1-6.el7 @anaconda 12 M Transaction Summary ================================================================================ Remove 1 Package Installed size: 12 M Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : 2:postfix-2.10.1-6.el7.x86_64 1/1 warning: directory /var/spool/postfix: remove failed: Device or resource busy Verifying : 2:postfix-2.10.1-6.el7.x86_64 1/1 Removed: postfix.x86_64 2:2.10.1-6.el7 Complete!
HINWEIS - Nachfolgende Warnung
warning: directory /var/spool/postfix: remove failed: Device or resource busy
da sich es bei diesem Verzeichnis um eine eigene Partition, bzw. Mount-Point und diese in Benutzung ist, handelt!
Installation
Nachfolgender interne Link beschreibt die Installation von Postfix unter Verwendung des internen Links zur Einbindung des mailserver.guru - CentOS 7-Repositories:
Paket postfix installieren
Nach erfolgreicher Einbindung des Drittanbieter-Repository
sind nachfolgende Anpassungen in den Konfigurationsdateien
/etc/yum.repos.d/CentOS-Base.repo
noch erforderlich, um die Installation des Postfix aus dem mailserver.guru
-Repository durchführen zu können.
/etc/yum.repos.d/CentOS-Base.repo
(Nur relevanter Ausschnitt)
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=1 exclude=postfix,postfix-*,dovecot
Erklärungen zur Anpassung:
exclude=postfix,postfix-*
Herausnehmen des Pakets postfix
und alle damit Verbundenen Pakete aus dem CentOS-Base
-Repository.
Nachdem das Drittanbieter-Repository
erfolgreich eingebunden und konfiguriert wurde, kann mit nachfolgendem Befehl, das neuere rpm
-Paket - postfix
installiert werden:
# yum install postfix Loaded plugins: changelog, priorities 128 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package postfix.x86_64 2:2.11.5-1.el7.centos will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: postfix x86_64 2:2.11.5-1.el7.centos mailserver.guru-os 2.5 M Transaction Summary ================================================================================ Install 1 Package Total download size: 2.5 M Installed size: 12 M Is this ok [y/d/N]: y Downloading packages: postfix-2.11.5-1.el7.centos.x86_64.rpm | 2.5 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 2:postfix-2.11.5-1.el7.centos.x86_64 1/1 Verifying : 2:postfix-2.11.5-1.el7.centos.x86_64 1/1 Installed: postfix.x86_64 2:2.11.5-1.el7.centos Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket postfix
installiert wurden.
# rpm -qil postfix Name : postfix Epoch : 2 Version : 2.11.5 Release : 1.el7.centos Architecture: x86_64 Install Date: Tue 14 Jul 2015 09:18:27 AM CEST Group : System Environment/Daemons Size : 13030777 License : IBM and GPLv2+ Signature : RSA/SHA1, Tue 05 May 2015 01:51:43 PM CEST, Key ID 60ecfb9e8195aea0 Source RPM : postfix-2.11.5-1.el7.centos.src.rpm Build Date : Tue 05 May 2015 01:51:19 PM CEST Build Host : vml000200.dmz.nausch.org Relocations : (not relocatable) Packager : Django <django@mailserver.guru> Vendor : Django URL : http://www.postfix.org Summary : Postfix Mail Transport Agent Description : Postfix is a Mail Transport Agent (MTA), supporting LDAP, SMTP AUTH (SASL), TLS /etc/pam.d/smtp /etc/pam.d/smtp.postfix /etc/postfix /etc/postfix/access /etc/postfix/canonical /etc/postfix/generic /etc/postfix/header_checks /etc/postfix/main.cf /etc/postfix/master.cf /etc/postfix/relocated /etc/postfix/transport /etc/postfix/virtual /etc/sasl2/smtpd.conf /usr/bin/mailq /usr/bin/mailq.postfix /usr/bin/newaliases /usr/bin/newaliases.postfix /usr/bin/rmail /usr/bin/rmail.postfix /usr/lib/sendmail /usr/lib/sendmail.postfix /usr/lib/systemd/system/postfix.service /usr/libexec/postfix /usr/libexec/postfix/aliasesdb /usr/libexec/postfix/anvil /usr/libexec/postfix/bounce /usr/libexec/postfix/chroot-update /usr/libexec/postfix/cleanup /usr/libexec/postfix/discard /usr/libexec/postfix/dnsblog /usr/libexec/postfix/error /usr/libexec/postfix/flush /usr/libexec/postfix/lmtp /usr/libexec/postfix/local /usr/libexec/postfix/main.cf /usr/libexec/postfix/master /usr/libexec/postfix/master.cf /usr/libexec/postfix/nqmgr /usr/libexec/postfix/oqmgr /usr/libexec/postfix/pickup /usr/libexec/postfix/pipe /usr/libexec/postfix/post-install /usr/libexec/postfix/postfix-files /usr/libexec/postfix/postfix-script /usr/libexec/postfix/postfix-wrapper /usr/libexec/postfix/postmulti-script /usr/libexec/postfix/postscreen /usr/libexec/postfix/proxymap /usr/libexec/postfix/qmgr /usr/libexec/postfix/qmqpd /usr/libexec/postfix/scache /usr/libexec/postfix/showq /usr/libexec/postfix/smtp /usr/libexec/postfix/smtpd /usr/libexec/postfix/spawn /usr/libexec/postfix/tlsmgr /usr/libexec/postfix/tlsproxy /usr/libexec/postfix/trivial-rewrite /usr/libexec/postfix/verify /usr/libexec/postfix/virtual /usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/sendmail /usr/sbin/sendmail.postfix /usr/sbin/smtp-sink /usr/sbin/smtp-source /usr/share/doc/postfix-2.11.5 /usr/share/doc/postfix-2.11.5/COMPATIBILITY /usr/share/doc/postfix-2.11.5/LICENSE /usr/share/doc/postfix-2.11.5/README-Postfix-SASL-RedHat.txt /usr/share/doc/postfix-2.11.5/README_FILES /usr/share/doc/postfix-2.11.5/README_FILES/AAAREADME /usr/share/doc/postfix-2.11.5/README_FILES/ADDRESS_CLASS_README /usr/share/doc/postfix-2.11.5/README_FILES/ADDRESS_REWRITING_README /usr/share/doc/postfix-2.11.5/README_FILES/ADDRESS_VERIFICATION_README /usr/share/doc/postfix-2.11.5/README_FILES/BACKSCATTER_README /usr/share/doc/postfix-2.11.5/README_FILES/BASIC_CONFIGURATION_README /usr/share/doc/postfix-2.11.5/README_FILES/BUILTIN_FILTER_README /usr/share/doc/postfix-2.11.5/README_FILES/CDB_README /usr/share/doc/postfix-2.11.5/README_FILES/CONNECTION_CACHE_README /usr/share/doc/postfix-2.11.5/README_FILES/CONTENT_INSPECTION_README /usr/share/doc/postfix-2.11.5/README_FILES/DATABASE_README /usr/share/doc/postfix-2.11.5/README_FILES/DB_README /usr/share/doc/postfix-2.11.5/README_FILES/DEBUG_README /usr/share/doc/postfix-2.11.5/README_FILES/DSN_README /usr/share/doc/postfix-2.11.5/README_FILES/ETRN_README /usr/share/doc/postfix-2.11.5/README_FILES/FILTER_README /usr/share/doc/postfix-2.11.5/README_FILES/FORWARD_SECRECY_README /usr/share/doc/postfix-2.11.5/README_FILES/INSTALL /usr/share/doc/postfix-2.11.5/README_FILES/IPV6_README /usr/share/doc/postfix-2.11.5/README_FILES/LDAP_README /usr/share/doc/postfix-2.11.5/README_FILES/LINUX_README /usr/share/doc/postfix-2.11.5/README_FILES/LMDB_README /usr/share/doc/postfix-2.11.5/README_FILES/LOCAL_RECIPIENT_README /usr/share/doc/postfix-2.11.5/README_FILES/MAILDROP_README /usr/share/doc/postfix-2.11.5/README_FILES/MEMCACHE_README /usr/share/doc/postfix-2.11.5/README_FILES/MILTER_README /usr/share/doc/postfix-2.11.5/README_FILES/MULTI_INSTANCE_README /usr/share/doc/postfix-2.11.5/README_FILES/MYSQL_README /usr/share/doc/postfix-2.11.5/README_FILES/NFS_README /usr/share/doc/postfix-2.11.5/README_FILES/OVERVIEW /usr/share/doc/postfix-2.11.5/README_FILES/PACKAGE_README /usr/share/doc/postfix-2.11.5/README_FILES/PCRE_README /usr/share/doc/postfix-2.11.5/README_FILES/PGSQL_README /usr/share/doc/postfix-2.11.5/README_FILES/POSTSCREEN_README /usr/share/doc/postfix-2.11.5/README_FILES/QSHAPE_README /usr/share/doc/postfix-2.11.5/README_FILES/RELEASE_NOTES /usr/share/doc/postfix-2.11.5/README_FILES/RESTRICTION_CLASS_README /usr/share/doc/postfix-2.11.5/README_FILES/SASL_README /usr/share/doc/postfix-2.11.5/README_FILES/SCHEDULER_README /usr/share/doc/postfix-2.11.5/README_FILES/SMTPD_ACCESS_README /usr/share/doc/postfix-2.11.5/README_FILES/SMTPD_POLICY_README /usr/share/doc/postfix-2.11.5/README_FILES/SMTPD_PROXY_README /usr/share/doc/postfix-2.11.5/README_FILES/SOHO_README /usr/share/doc/postfix-2.11.5/README_FILES/SQLITE_README /usr/share/doc/postfix-2.11.5/README_FILES/STANDARD_CONFIGURATION_README /usr/share/doc/postfix-2.11.5/README_FILES/STRESS_README /usr/share/doc/postfix-2.11.5/README_FILES/TLS_LEGACY_README /usr/share/doc/postfix-2.11.5/README_FILES/TLS_README /usr/share/doc/postfix-2.11.5/README_FILES/TUNING_README /usr/share/doc/postfix-2.11.5/README_FILES/ULTRIX_README /usr/share/doc/postfix-2.11.5/README_FILES/UUCP_README /usr/share/doc/postfix-2.11.5/README_FILES/VERP_README /usr/share/doc/postfix-2.11.5/README_FILES/VIRTUAL_README /usr/share/doc/postfix-2.11.5/README_FILES/XCLIENT_README /usr/share/doc/postfix-2.11.5/README_FILES/XFORWARD_README /usr/share/doc/postfix-2.11.5/TLS_ACKNOWLEDGEMENTS /usr/share/doc/postfix-2.11.5/TLS_LICENSE /usr/share/doc/postfix-2.11.5/bounce.cf.default /usr/share/doc/postfix-2.11.5/examples /usr/share/doc/postfix-2.11.5/examples/chroot-setup /usr/share/doc/postfix-2.11.5/examples/chroot-setup/LINUX2 /usr/share/doc/postfix-2.11.5/examples/qmail-local /usr/share/doc/postfix-2.11.5/examples/qmail-local/qmail-local.txt /usr/share/doc/postfix-2.11.5/examples/smtpd-policy /usr/share/doc/postfix-2.11.5/examples/smtpd-policy/README.SPF /usr/share/doc/postfix-2.11.5/examples/smtpd-policy/greylist.pl /usr/share/doc/postfix-2.11.5/main.cf.default /usr/share/man/man1/mailq.1.gz /usr/share/man/man1/mailq.postfix.1.gz /usr/share/man/man1/newaliases.1.gz /usr/share/man/man1/newaliases.postfix.1.gz /usr/share/man/man1/postalias.1.gz /usr/share/man/man1/postcat.1.gz /usr/share/man/man1/postconf.1.gz /usr/share/man/man1/postdrop.1.gz /usr/share/man/man1/postfix.1.gz /usr/share/man/man1/postkick.1.gz /usr/share/man/man1/postlock.1.gz /usr/share/man/man1/postlog.1.gz /usr/share/man/man1/postmap.1.gz /usr/share/man/man1/postmulti.1.gz /usr/share/man/man1/postqueue.1.gz /usr/share/man/man1/postsuper.1.gz /usr/share/man/man1/sendmail.postfix.1.gz /usr/share/man/man1/smtp-sink.1.gz /usr/share/man/man1/smtp-source.1.gz /usr/share/man/man5/access.5.gz /usr/share/man/man5/aliases.5.gz /usr/share/man/man5/aliases.postfix.5.gz /usr/share/man/man5/body_checks.5.gz /usr/share/man/man5/bounce.5.gz /usr/share/man/man5/canonical.5.gz /usr/share/man/man5/cidr_table.5.gz /usr/share/man/man5/generic.5.gz /usr/share/man/man5/header_checks.5.gz /usr/share/man/man5/ldap_table.5.gz /usr/share/man/man5/lmdb_table.5.gz /usr/share/man/man5/master.5.gz /usr/share/man/man5/memcache_table.5.gz /usr/share/man/man5/mysql_table.5.gz /usr/share/man/man5/nisplus_table.5.gz /usr/share/man/man5/pcre_table.5.gz /usr/share/man/man5/pgsql_table.5.gz /usr/share/man/man5/postconf.5.gz /usr/share/man/man5/postfix-wrapper.5.gz /usr/share/man/man5/regexp_table.5.gz /usr/share/man/man5/relocated.5.gz /usr/share/man/man5/socketmap_table.5.gz /usr/share/man/man5/sqlite_table.5.gz /usr/share/man/man5/tcp_table.5.gz /usr/share/man/man5/transport.5.gz /usr/share/man/man5/virtual.5.gz /usr/share/man/man8/anvil.8.gz /usr/share/man/man8/bounce.8.gz /usr/share/man/man8/cleanup.8.gz /usr/share/man/man8/defer.8.gz /usr/share/man/man8/discard.8.gz /usr/share/man/man8/dnsblog.8.gz /usr/share/man/man8/error.8.gz /usr/share/man/man8/flush.8.gz /usr/share/man/man8/lmtp.8.gz /usr/share/man/man8/local.8.gz /usr/share/man/man8/master.8.gz /usr/share/man/man8/oqmgr.8.gz /usr/share/man/man8/pickup.8.gz /usr/share/man/man8/pipe.8.gz /usr/share/man/man8/postscreen.8.gz /usr/share/man/man8/proxymap.8.gz /usr/share/man/man8/qmgr.8.gz /usr/share/man/man8/qmqpd.8.gz /usr/share/man/man8/scache.8.gz /usr/share/man/man8/sendmail.8.gz /usr/share/man/man8/showq.8.gz /usr/share/man/man8/smtp.8.gz /usr/share/man/man8/smtpd.8.gz /usr/share/man/man8/spawn.8.gz /usr/share/man/man8/tlsmgr.8.gz /usr/share/man/man8/tlsproxy.8.gz /usr/share/man/man8/trace.8.gz /usr/share/man/man8/trivial-rewrite.8.gz /usr/share/man/man8/verify.8.gz /usr/share/man/man8/virtual.8.gz /var/lib/misc/postfix.aliasesdb-stamp /var/lib/postfix /var/spool/postfix /var/spool/postfix/active /var/spool/postfix/bounce /var/spool/postfix/corrupt /var/spool/postfix/defer /var/spool/postfix/deferred /var/spool/postfix/flush /var/spool/postfix/hold /var/spool/postfix/incoming /var/spool/postfix/maildrop /var/spool/postfix/pid /var/spool/postfix/private /var/spool/postfix/public /var/spool/postfix/saved /var/spool/postfix/trace
Dienst/Deamon-Start einrichten
Um einen Postfix, welcher 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 postfix.service
HINWEIS - Sollte keine Ausgabe nach Ausführung des Befehls erfolgen, wurde dieser mit der Installation bereits eingerichtet.
Eine Überprüfung, ob beim Neustart des Server der postfix
-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 postfix.service postfix.service enabled
bzw.
# systemctl is-enabled postfix.service enabled
iptables Regel
Damit der Postfix als Mail-Server auch erreichbar ist und nicht das Empfangen der IP-Paket vom Paketfilter iptables
blockiert wird, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgender Befehl, fügt folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --dport 465 -j ACCEPT
-A INPUT -p tcp --dport 587 -j ACCEPT
-A INPUT -p tcp --dport 10025 -j ACCEPT
und hier der Befehl:
# iptables -I INPUT 5 -p tcp --dport 25 -j ACCEPT # iptables -I INPUT 6 -p tcp --dport 465 -j ACCEPT # iptables -I INPUT 7 -p tcp --dport 587 -j ACCEPT # iptables -I INPUT 8 -p tcp --dport 10025 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 state NEW 6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW 7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW 8 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10025 state NEW 9 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 (INPUT) bis Position 8 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 state NEW 6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW 7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW 8 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10025 state NEW ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# /usr/sbin/iptables-save > /etc/sysconfig/iptables
Konfigurationsdateien: Postfix
Die Konfiguration von Postfix findet in verschiedenen Dateien statt, welche alle im Verzeichnis
/etc/postfix
enthalten sind.
Standard
Nachfolgende Dateien sind bereits nach der Installation von CentOS ab der Version 7.x bereits vorhanden:
Name der Konfigurationsdatei | Bedeutung der Konfigurationsdatei |
---|---|
/etc/postfix/main.cf | Hauptkonfigurationsdatei |
/etc/postfix/master.cf | Konfiguration der Postfix-Module |
/etc/postfix/access | Zugriffskontrolle für Clients, welche sich via „Remote SMTP“ verbinden anhand von Informationen wie, Hostname, Netzwerkadresse und ENVELOP Absender- und Empfängeradresse |
/etc/postfix/canonical | Umschreiben von Absender- und Empfängeradressen |
/etc/postfix/generic | Umschreiben von e-Mails welche via SMTP/LMTP das System verlassende |
/etc/postfix/header_checks | Zugriffskontrolle für Clients, anhand von „Header“-Informationen |
/etc/postfix/relocated | „Bounce“ bei Empfänger, Rückmeldungen bei geänderten e-Mail-Adresse |
/etc/postfix/transport | Abweichende Zustellung der e-Mail über alternatives Mailrouting |
/etc/postfix/virtual | Alias Definitionen für Domains und e-Mail-Adressen |
Basis-Konfiguration
Die Hauptkonfigurationsdatei von Postfix ist die Konfigurationsdatei
/etc/postfix/main.cf
.
Der Inhalt der Konfigurationsdatei, sollte nur beim Editieren der Konfigurationsdatei relevant sein. Falls der Inhalt aufgelistet werden soll, sind nachfolgende Befehl anzuwenden, da diese die Konfiguration so wiedergeben, wie diese auch von Postfix interpretiert wird.
Nachfolgende Befehle sollten zum Einsatz kommen:
postconf -d
- Listet die default Werte der aktuellen Postfix-Konfiguration aufpostconf -n
- Listet die neuen bzw. zur Standardkonfiguration aktuell abweichend Konfigurierten Werte der Postfix-Konfiguration auf
Nach dem Ausführen der Befehls
postconf -n
sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# postconf -n postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 html_directory = no inet_interfaces = localhost inet_protocols = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.11.5/README_FILES sample_directory = /usr/share/doc/postfix-2.11.5/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop unknown_local_recipient_reject_code = 550
HINWEIS - Nachfolgende Warnung
postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
ist zu sehen, da es sich hier um einen Server handelt, welcher kein IPv6 unterstützt!
Nachfolgende Anpassungen an der Hauptkonfigurationsdatei von Postfix ermöglichen einen ersten minimalen und ggf. nur lokalen Betrieb von Postfix.
/etc/postfix/main.cf
WICHTIG - Nachfolgende Konfiguration setzt voraus, dass alle Parameter auf einander aufbauen!
myhostname
Der Hostname des Mail-Servers. Dies muss ein (FQDN) - vollständiger Hostname sein.
Defaultwert | Neuer Wert |
---|---|
Standardwert aus der Umgebungsvariable HOSTNAME (server60.idmz.tachtler.net) | mx1.tachtler.net |
In der Konfigurationsdatei
/etc/hostname
wird unter CentOS der hostname
gespeichert.
Mit nachfolgendem Befehl, kann der aktuell verwendete hostname
abgefragt werden:
# hostnamectl Static hostname: server60.idmz.tachtler.net Icon name: computer-vm Chassis: vm Machine ID: f664f73a8e034d2b875fdc483e7a0ac2 Boot ID: fb9597b0a7d7496db37fbc96ec15a729 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-229.7.2.el7.x86_64 Architecture: x86_64
Das setzen von myhostname
oder mydomain
ist dann sinnvoll, wenn der hostname
des Servers nicht dem hostname
entspricht der von Postfix verwendet werden soll, bzw. nicht dem im DNS konfiguriertem und nach außen sichtbaren entspricht bzw. entsprechen soll.
HINWEIS - Es ist nur die Konfiguration von myhostname
oder mydomain
sinnvoll, da Postfix jeweils die nicht konfigurierte Komponente ermittelt.
Beispiel:
mydestination
Domains, für die sich Postfix als Final Destination zuständig fühlt!
Defaultwert | Neuer Wert |
---|---|
$myhostname, localhost.$mydomain, localhost | $mydomain, server60.idmz.$mydomain, $myhostname, localhost.$mydomain, localhost |
Der neue Wert besteht aus dem Standardwert und der Ergänzung: $mydomain
und server60.idmz.$mydomain
.
Um eine Fehlersituation wie nachfolgend dargestellt zu verhindern, wurden die Werte
$mydomain
server60.idmz.$mydomain
ebenfalls ergänzt, da es hier bei einer lokalen e-Mail Einlieferung in der Log-Datei
/var/log/maillog
zu der Fehlermeldung
bounced (mail for … loops back to myself)
kommen könnte.
Beispiel:
Jul 14 15:47:24 server60 postfix/smtpd[3145]: connect from server60.idmz.tachtler.net[192.168.0.60] Jul 14 15:48:10 server60 postfix/smtpd[3145]: A37FE5F113: client=server60.idmz.tachtler.net[192.168.0.60] Jul 14 15:48:17 server60 postfix/cleanup[3148]: A37FE5F113: message-id=<20120118144810.A37FE5F113@mx1.tachtler.net> Jul 14 15:48:17 server60 postfix/qmgr[3143]: A37FE5F113: from=<root@server60.idmz.tachtler.net>, size=415, nrcpt=1 (queue active) Jul 14 15:48:17 server60 postfix/smtp[3149]: A37FE5F113: to=<root@server60.idmz.tachtler.net>, relay=none, delay=22, delays=22/0.02/0/0, dsn=5.4.6, status=bounced (mail for server60.idmz.tachtler.net loops back to myself) Jul 14 15:48:17 server60 postfix/cleanup[3148]: E44105F115: message-id=<20120118144817.E44105F115@mx1.tachtler.net> Jul 14 15:48:17 server60 postfix/bounce[3150]: A37FE5F113: sender non-delivery notification: E44105F115 Jul 14 15:48:17 server60 postfix/qmgr[3143]: E44105F115: from=<>, size=2347, nrcpt=1 (queue active) Jul 14 15:48:17 server60 postfix/qmgr[3143]: A37FE5F113: removed Jul 14 15:48:18 server60 postfix/smtp[3149]: E44105F115: to=<root@server60.idmz.tachtler.net>, relay=none, delay=0.04, delays=0.03/0/0/0, dsn=5.4.6, status=bounced (mail for server60.idmz.tachtler.net loops back to myself) Jul 14 15:48:18 server60 postfix/qmgr[3143]: E44105F115: removed Jul 14 15:48:19 server60 postfix/smtpd[3145]: disconnect from server60.idmz.tachtler.net[192.168.0.60]
Postfix wird sich an alle unter mydestination
aufgelisteten Domains bzw. (FQDN) als final zuständig fühlen und e-Mails annehmen, ohne diese an andere Mail-Server weiterzuleiten.
myorigin
Ergänzung für lokal erzeugte e-Mails, welche nur an eine User-ID adressiert sind z.B. root
. Diese e-Mail's werden z.B. via cron
-job erstellt. Dies ist immer dann problematisch, wenn local erzeugte e-Mail, nicht lokal zugestellt/weitergeleitet werden!
Defaultwert | Neuer Wert |
---|---|
$myorigin = mx1.tachtler.net | server60.idmz.$mydomain |
Hier sollen lokal erzeuge e-Mails, nicht pauschal um $mydomain = mx1.tachtler.net erweitert werden, sondern es soll der interne Servername, hier server60.idmz.tachtler.net
verwendet werden.
Beispiel:
Parameter | Postfix ermittelt |
---|---|
mit Defaultwert | root@mx1.tachtler.net |
myorigin = server60.idmz.$mydomain | root@server60.idmz.tachtler.net |
mynetworks
Angabe des vertrauenswürdigen Netzbereich aus dem Postfix es gestatte, e-Mails auch nach außen auch an externe Mail-Server bzw. e-Mail-Adressen, e-Mails zuzustellen.
HINWEIS - Angaben die hier gemacht werden, setzen alle Angaben die unter
mynetworks_style
gemacht werden, außer Kraft!
Defaultwert | Neuer Wert |
---|---|
127.0.0.0/8 [weitere Netzwerkkarten und deren Netze] | 127.0.0.0/8 192.168.0.0/24 192.168.1.0/24 |
Hier können Ergänzungen gemacht werden, z.B. von Netzen, welche über eine Firewall z.B. aus dem Intranet an den Mail-Server geroutet werden!
inet_interfaces
Netzwerkinterfaces (Netzwerkkarten) auf denen Postfix bereit ist e-Mails zu empfangen.
Defaultwert | Neuer Wert |
---|---|
localhost (durch CentOS gesetzt! | all (eigentlicher Standardwert) |
In diesem Fall wurde durch die Installation von CentOS der Wert auf localhost
abgeändert, als Schutz, dass nach der Installation vorerst nur von localhost e-Mails angenommen werden.
Der eigentliche Standardwert ist jedoch all
, welcher auch wieder gesetzt werden sollte, damit von allen Netzwerkinterfaces (Netzwerkkarten), auf denen der Mail-Server erreichbar ist, e-Mails angenommen werden können!
Ob Postfix auf allen Netzwerkinterfaces (Netzwerkkarten) lauscht, kann mit nachfolgendem Befehl überprüft werden und sollte eine Ausgabe in etwa wie diese ergeben:
netstat -tulpen | grep master tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 12036 2788/master
inet_protocols
Netzwerkprotokoll (ipv4, ipv6), die durch Postfix unterstützt werden sollen.
Falls nachfolgende Warnung bei der Ausgabe der Konfiguration mit postconf -n
von Postfix erscheinen sollte, oder diese in den LOG-Dateien unter /var/log/maillog
erscheinen sollte
postconf: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
ist diese zu sehen, da es sich hier um einen Server handelt, welcher kein IPv6 unterstützt!
Defaultwert | Neuer Wert |
---|---|
all | ipv4 |
Der Standardwert ist all
, welcher durch ipv4
ersetzt werden sollte, falls kein ipv6 zum Einsatz kommen soll, wie das hier in diesem Beispiel der Fall ist, damit nur in der Protokollart ipv4 e-Mails angenommen werden!
/etc/aliases
Nachdem nun alle Basis-Konfigurationen in der Haupt-Konfigurationsdatei von Postfix durchgeführt wurden, soll vor dem ersten Start noch der wichtige Punkt behandelt werden: Wer soll die e-Mails, welche an den Benutzer root
gerichtet sind, tatsächlich erhalten?
Dies ist aus zwei Gründen sehr wichtig
- Verhinderung des Zugriffs durch andere Programme z.B. (Local Delivery agents) wie
procmail
- Verhinderung von Ausführung von Schadcode als Benutzer
root
Standardmäßig verwendet Postfix die Konfigurationsdatei
/etc/aliases
um Weiterleitungen für lokale Benutzer, hier root
zu realisieren.
Innerhalb dieser Konfigurationsdatei ist auch eine Weiterleitung von e-Mails an den lokalen Benutzer root
und dessen Wiederleitung an einen mit nicht so umfangreichen Rechten ausgestatteter Benutzer vorbereitet:
(Nur relevanter Ausschnitt)
...
# Person who should get root's mail
#root: marc
Hier kann einfach die letzte Zeile z.B. wie folgt abgeändert werden:
# Person who should get root's mail # Tachtler # default: #root: marc root: klaus
Anschließend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was mit nachfolgendem Befehl durchgeführt werden kann:
# newaliases
HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!
Abschließend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:
# ls -l /etc/aliases* -rw-r--r--. 1 root root 1518 Jul 14 14:49 /etc/aliases -rw-r--r-- 1 root root 12288 Jul 14 14:50 /etc/aliases.db
Erster Start
Falls vorstehende Änderungen (natürlich an die jeweiligen Bedürfnisse angepasst) durchgeführt wurden, sollte ein erster Start von Postfix nichts mehr im Wege stehen.
Bevor der der postfix
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 html_directory = no inet_interfaces = all inet_protocols = ipv4 mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $mydomain, server60.idmz.$mydomain, $myhostname, localhost.$mydomain, localhost myhostname = mx1.tachtler.net mynetworks = 127.0.0.0/8 192.168.0.0/24 myorigin = server60.idmz.$mydomain newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.11.5/README_FILES sample_directory = /usr/share/doc/postfix-2.11.5/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop unknown_local_recipient_reject_code = 550
HINWEIS - die Konfiguration des postfix
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration ohne Fehlermeldungen erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber syntaktische Fehler ausschließt !!!
Danach kann der postfix-Server mit nachfolgendem Befehle gestartet werden:
# systemctl start postfix
Mit nachfolgendem Befehl kann der Status des abgefragt werden:
# systemctl status postfix postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled) Active: active (running) since Tue 2015-07-14 14:56:36 CEST; 6s ago Process: 15397 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) Process: 15393 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS) Process: 15388 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS) Main PID: 15470 (master) CGroup: /system.slice/postfix.service ├─15470 /usr/libexec/postfix/master -w ├─15471 pickup -l -t unix -u └─15472 qmgr -l -t unix -u Jul 14 14:56:35 server60.idmz.tachtler.net systemd[1]: Starting Postfix Mail Transport Agent... Jul 14 14:56:36 server60.idmz.tachtler.net postfix/master[15470]: daemon started -- version 2.11.5... Jul 14 14:56:36 server60.idmz.tachtler.net systemd[1]: Started Postfix Mail Transport Agent.
Erster Test
Anschließend kann mit einem kleinen Test herausgefunden werden, ob lokal erzeugte e-Mails auch lokal Zugestellt werden können, was ausnahmsweise mit nachfolgendem Befehl (und nicht mit telnet
) durchgeführt werden soll:
# echo Testmail | /usr/sbin/sendmail root
Als Ergebnis sollten zwei Dinge kontrolliert werden:
- Die Log-Datei
/var/log/maillog
- Der Inhalt in der (falls nicht schon vorhandenen) neu im mbox-Format erstellten Datei
/var/spool/mail/klaus
Der Inhalte der Log-Datei /var/log/maillog
sollte eine Ausgabe wie nachfolgend dargestellt ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:
# tail -n 7 /var/log/maillog Jul 14 14:56:36 server60 postfix/postfix-script[15468]: starting the Postfix mail system Jul 14 14:56:36 server60 postfix/master[15470]: daemon started -- version 2.11.5, configuration /etc/postfix Jul 14 14:57:15 server60 postfix/pickup[15471]: F10561800089: uid=0 from=<root> Jul 14 14:57:16 server60 postfix/cleanup[15478]: F10561800089: message- id=<20150714125715.F10561800089@mx1.tachtler.net> Jul 14 14:57:16 server60 postfix/qmgr[15472]: F10561800089: from=<root@server60.idmz.tachtler.net>, size=278, nrcpt=1 (queue active) Jul 14 14:57:16 server60 postfix/local[15480]: F10561800089: to=<klaus@server60.idmz.tachtler.net>, orig_to= <root>, relay=local, delay=0.13, delays=0.09/0.02/0/0.02, dsn=2.0.0, status=sent (delivered to mailbox) Jul 14 14:57:16 server60 postfix/qmgr[15472]: F10561800089: removed
Der Inhalt der im mbox-Format angelegten Datei /var/spool/mail/klaus
sollte ebenfalls eine Ausgabe wie nachfolgend dargestellt ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:
# cat /var/spool/mail/klaus From root@server60.idmz.tachtler.net Tue Jul 14 14:57:16 2015 Return-Path: <root@server60.idmz.tachtler.net> X-Original-To: root Delivered-To: root@server60.idmz.tachtler.net Received: by mx1.tachtler.net (Postfix, from userid 0) id F10561800089; Tue, 14 Jul 2015 14:57:15 +0200 (CEST) Message-Id: <20150714125715.F10561800089@mx1.tachtler.net> Date: Tue, 14 Jul 2015 14:57:15 +0200 (CEST) From: root@server60.idmz.tachtler.net (root) Testmail
Lookup Tables-Konfigurationen
Postfix verwendet sogenannte maps um Informationen nachzuschlagen, welche in Dateien oder Datenbanken gespeichert werden.
HINWEIS - Nachfolgend sollen relevante maps beschrieben werden, die häufig zum Einsatz kommen.
alias_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/aliases.5.html http://www.postfix.org/postconf.5.html#alias_maps |
Defaultwert | alias_maps = hash:/etc/aliases, nis:mail.aliases |
Neuer Wert | alias_maps = hash:/etc/aliases |
Beschreibung | Die Map definiert e-Mail-Adressen für die lokale Zustellung und erlaubt es lokale Adressen umzuschreiben. |
Die Aliases-Datei /etc/aliases
ist für viele MTA's gültig, nicht nur für Postfix. Aus historischen Gründen ist diese Konfigurationsdatei nicht unter /etc/postfix
sondern unter /etc
zu finden.
Hier werden als Beispiel alle e-Mails welche lokal erstellt werden und an den lokalen Benutzer - root
gerichtet sind, an den ebenfalls lokalen Benutzer - klaus
weitergeleitet.
Die relevanten Änderungen gegenüber der Standard-Konfiguration, sind mit folgendem Kommentar
# Tachtler
versehen.
# # Aliases in this file will NOT be expanded in the header from # Mail, but WILL be visible over networks or from /bin/mail. # # >>>>>>>>>> The program "newaliases" must be run after # >> NOTE >> this file is updated for any changes to # >>>>>>>>>> show through to sendmail. # # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root games: root gopher: root ftp: root nobody: root radiusd: root nut: root dbus: root vcsa: root canna: root wnn: root rpm: root nscd: root pcap: root apache: root webalizer: root dovecot: root fax: root quagga: root radvd: root pvm: root amandabackup: root privoxy: root ident: root named: root xfs: root gdm: root mailnull: root postgres: root sshd: root smmsp: root postfix: root netdump: root ldap: root squid: root ntp: root mysql: root desktop: root rpcuser: root rpc: root nfsnobody: root ingres: root system: root toor: root manager: root dumper: root abuse: root newsadm: news newsadmin: news usenet: news ftpadm: ftp ftpadmin: ftp ftp-adm: ftp ftp-admin: ftp www: webmaster webmaster: root noc: root security: root hostmaster: root info: postmaster marketing: postmaster sales: postmaster support: postmaster # trap decode to catch security attacks decode: root # Person who should get root's mail # Tachtler # default: #root: marc root: klaus
Wie in der Konfigurationsdatei /etc/aliases
schon zu lesen ist,
# >>>>>>>>>> The program "newaliases" must be run after
# >> NOTE >> this file is updated for any changes to
# >>>>>>>>>> show through to sendmail.
müssen Änderungen an dieser Datei erst noch in ein hash
-Format, z.B. mithilfe des Programms newaliases
umgewandelt werden!
HINWEIS - Es gibt für Postfix zwei Möglichkeiten die Aliases-Datei /etc/aliases
in ein hash
-Format umzuwandeln.
Die erste Möglichkeit ist, weiterhin den Befehl
newaliases
zu verwenden, oder die zweite Möglichkeit
postalias
einzusetzen!
Ein Aufruf zur Umwandlung der Konfigurationsdatei /etc/aliases
in das hash
-Format, könnte wie folgt aussehen:
# postalias /etc/aliases
Ein Überprüfung, ob der Befehl erfolgreich war, kann anhand des Datums der Datei /etc/aliases.db
mit folgendem Befehl nachvollzogen werden (Umwandlung war in diesem Beispiel der 2. Dezember):
# ls -l /etc/aliases* -rw-r--r-- 1 root root 1553 Jul 14 14:53 /etc/aliases -rw-r--r-- 1 root root 12288 Jul 14 14:56 /etc/aliases.db
HINWEIS - Es bietet sich an, e-Mail-Weiterleitungen in /etc/aliases
für lokale technische Benutzer einzusetzen!
canonical_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/canonical.5.html http://www.postfix.org/postconf.5.html#canonical_maps |
Defaultwert | canonical_maps = |
Beschreibung | Die Map kann e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen und dies sowohl für den Absender und auch Empfängeradressen. Dabei werden die e-Mail-Adressen nicht nur im SMTP-ENVELOP, sondern auch im e-Mail-HEADER ausgetauscht. |
Hinweis | ACHTUNG - Ab Version 2.2 wird canonical_maps nur noch auf lokal erzeugte e-Mails angewendet! Welche Clients als lokal angesehen werden, kann durch nachfolgenden Parameter definiert werden: local_header_rewrite_clients |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - recipient_canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - sender_canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - local_header_rewrite_clients Postfix CentOS 7 - Maps-Konfigurationen - remote_header_rewrite_domain |
HINWEIS - Das ist einer der wenigen Ausnahmen, in denen der MTA Postfix den e-Mail-HEADER verändert!
WICHTIG - Eine mögliche Empfänger e-Mail-Adresse ist nicht nur in canonical_maps
einzutragen, sondern auch in z.B. virtual_alias_maps
, da sonst die Annahme verweigert werden würde!
HINWEIS - Der Einsatz von canonical_maps
soll zugunsten der beiden weiteren Maps
recipient_canonical_maps
sender_canonical_maps
hier nicht durchgeführt werden!
recipient_canonical_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/canonical.5.html http://www.postfix.org/postconf.5.html#recipient_canonical_maps |
Defaultwert | recipient_canonical_maps = |
Neuer Wert | recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps |
Beschreibung | Die Map kann Empfänger e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen. Dabei werden die e-Mail-Adressen nicht nur im SMTP-ENVELOP, sondern auch im e-Mail-HEADER ausgetauscht. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - local_header_rewrite_clients Postfix CentOS 7 - Maps-Konfigurationen - remote_header_rewrite_domain |
HINWEIS - Das ist einer der wenigen Ausnahmen, in denen der MTA Postfix den e-Mail-HEADER verändert!
WICHTIG - Die Empfänger e-Mail-Adresse ist nicht nur in recipient_canonical_maps
einzutragen, sondern auch in z.B. virtual_alias_maps
, da sonst die Annahme verweigert werden würde!
Als Beispiel soll die e-Mail-Adresse
admin@tachtler.net
nach
root@tachtler.net
ausgetauscht werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/recipient_canonical_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/recipient_canonical_maps
Danach sollte der Inhalt wie folgt aussehen:
admin@tachtler.net root@tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/recipient_canonical_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/recipient_canonical_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/recipient_canonical_maps* -rw-r--r-- 1 root root 112 Jul 24 16:16 /etc/postfix/recipient_canonical_maps -rw-r--r-- 1 root root 8192 Jul 24 16:17 /etc/postfix/recipient_canonical_maps.db
sender_canonical_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/canonical.5.html http://www.postfix.org/postconf.5.html#sender_canonical_maps |
Defaultwert | sender_canonical_maps = |
Neuer Wert | sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps |
Beschreibung | Die Map kann Absender e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen. Dabei werden die e-Mail-Adressen nicht nur im SMTP-ENVELOP, sondern auch im e-Mail-HEADER ausgetauscht. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - local_header_rewrite_clients Postfix CentOS 7 - Maps-Konfigurationen - remote_header_rewrite_domain |
HINWEIS - Das ist einer der wenigen Ausnahmen, in denen der MTA Postfix den e-Mail-HEADER verändert!
Als Beispiel soll das Absenden von e-Mails mit einer e-Mail-Adresse die auf den Subdomänen-, Domänen- und Top-Level-Domänen-Teil
@dokuwiki.tachtler.net
lauten, auf den Absender Domänen- und Top-Level-Domänen-Teil
@tachtler.net
ersetzt werden.
Dabei soll es völlig egal sein, welcher Absendername bzw. localpart
vor dem „@“-Zeichen steht, dieser wird einfach übernommen. Aus postmaster@dokuwiki.tachtler.net
wird dann postmaster@tachtler.net
.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/sender_canonical_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/sender_canonical_maps
Danach sollte der Inhalt wie folgt aussehen:
@dokuwiki.tachtler.net @tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/sender_canonical_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/sender_canonical_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/sender_canonical_maps* -rw-r--r-- 1 root root 0 Jul 24 16:33 /etc/postfix/sender_canonical_maps -rw-r--r-- 1 root root 8192 Jul 24 16:34 /etc/postfix/sender_canonical_maps.db
local_header_rewrite_clients
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#local_header_rewrite_clients |
Defaultwert | local_header_rewrite_clients = permit_inet_interfaces |
Beschreibung | Der Parameter bestimmt, bei welchen Clients, inklusive der Domain(s) welche in remote_header_rewrite_domain aufgelistet sind, eine Umschreibung und eine Ergänzung bei unvollständigen e-Mail-Adressen um $myorigin oder $mydomain durchgeführt werden soll. Für alle anderen Clients, wird kein Umschreibung oder eine Ergänzung durchgeführt. |
interne Links | Postfix CentOS 7 - Basis-Konfiguration - mynetworks Postfix CentOS 7 - Maps-Konfigurationen - canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - recipient_canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - sender_canonical_maps Postfix CentOS 7 - Maps-Konfigurationen - remote_header_rewrite_domain |
Nachfolgende Tabelle stellt eine Auflistung der möglichen Parameter dar:
Parameter | Beschreibung |
---|---|
permit_inet_interfaces | e-Mails, welche durch den Server selbst erzeugt werden |
permit_mynetworks | e-Mails, welche durch einen Client aus $mynetworks stammen |
permit_sasl_authenticated | e-Mails, welche durch einen Client der sich via SMTP-Auth authentifiziert hat eingeliefert werden |
permit_tls_clientcerts | e-Mails, welche durch einen Client der sich mittels TLS-Zertifikat-Fingerprint oder mit einem Fingerprint eines öffentlichen Schlüssels ausweist |
permit_tls_all_clientcerts | e-Mails, welche durch einen Client der ein TLS-Zertifikat-Fingerprint präsentiert, welches erfolgreich überprüft werden kann, egal ob dieses dem Server bekannt ist noch ob dies aus einer bestimmten CA (Certificate Authority) stammt |
check_address_map | e-Mails, welche durch einen Client eingeliefert werden, der in einer Lookup Table enthalten ist Beispiel: check_address_map btree:/etc/postfix/pop-before-smtp 217.91.103.190 OK |
Beispiel:
Sollen alle e-Mails der Clients umgeschrieben oder Ergänzungen bei fehlenden Domain und Top-Level-Domain angaben gemacht werden, ist nachfolgende Konfiguration ausreichend:
local_header_rewrite_clients = permit_mynetworks, permit_sasl_authenticated, permit_tls_clientcerts, check_address_map btree:/etc/postfix/pop-before-smtp
remote_header_rewrite_domain
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#remote_header_rewrite_domain |
Defaultwert | remote_header_rewrite_domain = |
Beschreibung | Der Parameter bestimmt, bei welchen remote Clients eine Umschreibung und eine Ergänzung bei unvollständigen e-Mail-Adressen um die hier angegebenen Domain(s) erfolgen soll. Wenn der Parameter leer ist (Standard) erfolgt keine Umschreibung und eine Ergänzung bei unvollständigen e-Mail-Adressen für remote Clients |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - local_header_rewrite_clients |
smtp_generic_maps lmtp_generic_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/generic.5.html http://www.postfix.org/postconf.5.html#smtp_generic_maps http://www.postfix.org/postconf.5.html#lmtp_generic_maps |
Defaultwert | smtp_generic_maps =
lmtp_generic_maps = |
Neuer Wert | smtp_generic_maps = btree:/etc/postfix/smtp_generic_maps
lmtp_generic_maps = btree:/etc/postfix/lmtp_generic_maps |
Beschreibung | Die Map kann Absender e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen. Dabei werden die e-Mail-Adressen nicht nur im SMTP-ENVELOP, sondern auch im e-Mail-HEADER ausgetauscht. Dies jedoch erst beim verlassen von Postfix via smtp oder lmtp-Modul. |
HINWEIS - Das ist einer der wenigen Ausnahmen, in denen der MTA Postfix den e-Mail-HEADER verändert!
Als Beispiel soll das Absenden von e-Mails mit einer lokalen e-Mail-Adresse die auf den Subdomänen-, Domänen- und Top-Level-Domänen-Teil
@local
lauten, auf den Absender Domänen- und Top-Level-Domänen-Teil
@tachtler.net
ersetzt werden.
Dabei soll es völlig egal sein, welcher Absendername bzw. localpart
vor dem „@“-Zeichen steht, dieser wird einfach übernommen. Aus postmaster@local
wird dann postmaster@tachtler.net
.
Dafür können z.B. die neue Konfigurationsdateien
/etc/postfix/smtp_generic_maps
/etc/postfix/lmtp_generic_maps
mit folgenden Befehlen neu zu erstellen:
# touch /etc/postfix/smtp_generic_maps # touch /etc/postfix/lmtp_generic_maps
Danach sollte der Inhalt wie folgt aussehen:
@local @tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss müssen die Konfigurationsdateien in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgende Befehle zeigen:
# postmap btree:/etc/postfix/smtp_generic_maps # postmap btree:/etc/postfix/lmtp_generic_maps
Anschließend sollte zwei neue Dateien mit den Namen /etc/postfix/smtp_generic_maps.db
und /etc/postfix/lmtp_generic_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/*mtp_generic_maps* -rw-r--r-- 1 root root 0 Aug 19 09:27 /etc/postfix/lmtp_generic_maps -rw-r--r-- 1 root root 8192 Aug 19 09:27 /etc/postfix/lmtp_generic_maps.db -rw-r--r-- 1 root root 0 Aug 19 09:27 /etc/postfix/smtp_generic_maps -rw-r--r-- 1 root root 8192 Aug 19 09:27 /etc/postfix/smtp_generic_maps.db
relocated_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/relocated.5.html http://www.postfix.org/postconf.5.html#relocated_maps |
Defaultwert | relocated_maps = |
Neuer Wert | relocated_maps = btree:/etc/postfix/relocated_maps |
Beschreibung | Die Map kann, falls eine e-Mail mit einem dem eigenen Postfix nicht bekannten Empfänger z.B. verzogen@tachtler.net eingeliefert wird, NICHT wie es in diesem Fall üblich wäre, eine e-Mail mit der Fehlermeldung 554 oder einer Bounce-Mail zu quittieren, sondern eine Nachricht Bounce Meldung senden, die die neue e-Mail-Adresse dem einliefernden, mitteilt. |
Als Beispiel wird hier die e-Mail-Adresse verzogen@tachtler.net
nicht mit einer Fehlermeldung 554
quittiert
... <verzogen@tachtler.net>: unknown user: "verzogen"
sondern, wenn die e-Mail-Adresse sich lediglich geändert hat, wird dem Absender die neue e-Mail-Adresse mit einer Bounce-Nachricht mitgeteilt!
... <verzogen@tachtler.net>: user has moved to neueadresse@tachtler.net
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/relocated_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/relocated_maps
Danach sollte der Inhalt wie folgt aussehen:
verzogen@tachtler.net neueadresse@tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/relocated_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/relocated_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/relocated_maps* -rw-r--r-- 1 root root 0 Aug 19 10:41 /etc/postfix/relocated_maps -rw-r--r-- 1 root root 8192 Aug 19 10:41 /etc/postfix/relocated_maps.db
HINWEIS - Die Konfigurationsdatei /etc/postfix/relocated_maps
ist nahezu bedeutungslos, da
- die wenigsten Nutzer die Bounce-Antwort verstehen, oder gar lesen
- da es für die meisten Administratoren ein leichtes ist, die e-Mails einfach über einen Eintrag in der Konfigurationsdatei
/etc/postfix/virtual_alias_maps
weiterzuleiten! - Auf Bounce-Nachrichten möglichst verzichtet werden sollte, z.B. wegen der „Backscatter“-Problematik
transport_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/transport.5.html http://www.postfix.org/postconf.5.html#transport_maps |
Defaultwert | transport_maps = |
Neuer Wert | transport_maps = btree:/etc/postfix/transport_maps |
Beschreibung | Die Map kann ein vom Standard abweichendes Mailrouting realisieren. Relevant ist dies z.B. dann, wenn Postfix als Relay-Host vor einem anderen e-Mail-Server zum Einsatz kommt und dafür ein besonderes Routing erforderlich ist, welche vom DNS abweichend sind. |
interne Links | Postfix Echo-Mailer-Script installieren |
Als Beispiel soll der Transportweg von e-Mails mit einer e-Mail-Adresse
echo@tachtler.net
lautet, auf den Transportweg
echo:
umgeleitet werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/transport_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/transport_maps
Danach sollte der Inhalt wie folgt aussehen:
echo@tachtler.net echo:
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/transport_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/transport_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/transport_maps* -rw-r--r-- 1 root root 24 Aug 19 09:51 /etc/postfix/transport_maps -rw-r--r-- 1 root root 8192 Aug 19 09:51 /etc/postfix/transport_maps.db
virtual_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/virtual.5.html http://www.postfix.org/postconf.5.html#virtual_maps |
Defaultwert | virtual_maps = |
Beschreibung | Die Map kann als Erweiterung von /etc/aliases durch Postfix gesehen werden, ist aber wesentlich flexibler, da hier nicht nur lokale e-Mail Zuweisungen erfolgen können, sondern auch alle anderen, aus den Maps üblichen Zuweisungen, durchgeführt werden können. |
Hinweis | ACHTUNG - Ab Version 2.0 wird virtual_maps durch virtual_alias_domains und virtual_alias_maps abgelöst! |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - alias_maps Postfix CentOS 7 - Maps-Konfigurationen - virtual_alias_domains Postfix CentOS 7 - Maps-Konfigurationen - virtual_alias_maps |
HINWEIS - Der Einsatz von virtual_maps
soll zugunsten der beiden weiteren Maps
virtual_alias_domains
virtual_alias_maps
hier nicht durchgeführt werden!
virtual_alias_domains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/virtual.5.html http://www.postfix.org/postconf.5.html#virtual_alias_domains |
Defaultwert | virtual_alias_domains = $virtual_alias_maps |
Neuer Wert | virtual_alias_domains = btree:/etc/postfix/virtual_alias_domains |
Beschreibung | Die Map enthält Domains, für die e-Mails angenommen werden. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - virtual_maps Postfix CentOS 7 - Maps-Konfigurationen - virtual_alias_maps |
Als Beispiel sollen für die Domain
@example.com
angenommen werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/virtual_alias_domains
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/virtual_alias_domains
Danach sollte der Inhalt wie folgt aussehen:
example.com irgendwas
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/virtual_alias_domains
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/virtual_alias_domains.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/virtual_alias_domains* -rw-r--r-- 1 root root 0 Aug 19 12:51 /etc/postfix/virtual_alias_domains -rw-r--r-- 1 root root 8192 Aug 19 12:51 /etc/postfix/virtual_alias_domains.db
virtual_alias_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/virtual.5.html http://www.postfix.org/postconf.5.html#virtual_alias_maps |
Defaultwert | virtual_alias_maps = $virtual_maps |
Neuer Wert | virtual_alias_maps = btree:/etc/postfix/virtual_alias_maps |
Beschreibung | Die Map kann Empfänger e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen. Dabei werden die e-Mail-Adressen nur im SMTP-ENVELOP ausgetauscht. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - virtual_maps Postfix CentOS 7 - Maps-Konfigurationen - virtual_alias_domains |
Als Beispiel soll die e-Mail-Adresse
postmaster@tachtler.net
nach
root@tachtler.net
ausgetauscht werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/virtual_alias_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/virtual_alias_maps
Danach sollte der Inhalt wie folgt aussehen:
postmaster postmaster@tachtler.net postmaster@tachtler.net root@tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/virtual_alias_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/virtual_alias_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/virtual_alias_maps* -rw-r--r-- 1 root root 0 Aug 19 13:03 /etc/postfix/virtual_alias_maps -rw-r--r-- 1 root root 8192 Aug 19 13:03 /etc/postfix/virtual_alias_maps.db
virtual_mailbox_domains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/virtual.5.html http://www.postfix.org/postconf.5.html#virtual_mailbox_domains |
Defaultwert | virtual_mailbox_domains = $virtual_mailbox_maps |
Neuer Wert | virtual_mailbox_domains = btree:/etc/postfix/virtual_mailbox_domains |
Beschreibung | Die Map enthält Domains, für die e-Mails angenommen werden, ohne das ein lokales UNIX-Konto vorhanden sein muss. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - virtual_mailbox_maps |
Als Beispiel sollen für die Domain
@example.com
angenommen werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/virtual_mailbox_domains
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/virtual_mailbox_domains
Danach sollte der Inhalt wie folgt aussehen:
example.com irgendwas
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/virtual_mailbox_domains
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/virtual_mailbox_domains.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/virtual_mailbox_domains* -rw-r--r-- 1 root root 0 Aug 19 14:42 /etc/postfix/virtual_mailbox_domains -rw-r--r-- 1 root root 8192 Aug 19 14:42 /etc/postfix/virtual_mailbox_domains.db
virtual_mailbox_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#virtual_mailbox_maps |
Defaultwert | virtual_mailbox_maps = |
Neuer Wert | virtual_mailbox_maps = btree:/etc/postfix/virtual_mailbox_maps |
Beschreibung | Die Map kann Empfänger e-Mail-Adressen durch andere e-Mail-Adressen ersetzen und austauschen. Dabei werden die e-Mail-Adressen nur im SMTP-ENVELOP ausgetauscht, ohne das ein lokales UNIX-Konto vorhanden sein muss. |
interne Links | Postfix CentOS 7 - Maps-Konfigurationen - virtual_mailbox_domains |
Als Beispiel soll die e-Mail-Adresse
postmaster@example.com
nach
root@example.com
ausgetauscht werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/virtual_mailbox_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/virtual_mailbox_maps
Danach sollte der Inhalt wie folgt aussehen:
postmaster postmaster@example.com postmaster@example.com root@example.com
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/virtual_mailbox_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/virtual_mailbox_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/virtual_mailbox_maps* -rw-r--r-- 1 root root 0 Aug 19 14:59 /etc/postfix/virtual_mailbox_maps -rw-r--r-- 1 root root 8192 Aug 19 14:59 /etc/postfix/virtual_mailbox_maps.db
recipient_bcc_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#recipient_bcc_maps |
Defaultwert | recipient_bcc_maps = |
Neuer Wert | recipient_bcc_maps = btree:/etc/postfix/recipient_bcc_maps |
Beschreibung | Die Map erstellt eine Blindkopie (bcc = blind carbon copy) einer eingehenden e-Mail. |
Als Beispiel soll jede eingehende e-Mail für die e-Mail-Adresse
postmaster@tachtler.net
ebenfalls als Blindkopie (bcc = blind carbon copy) an
klaus@tachtler.net
ebenfalls weitergeleitet werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/recipient_bcc_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/recipient_bcc_maps
Danach sollte der Inhalt wie folgt aussehen:
postmaster@tachtler.net klaus@tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/recipient_bcc_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/recipient_bcc_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/recipient_bcc_maps* -rw-r--r-- 1 root root 72 Aug 19 13:42 /etc/postfix/recipient_bcc_maps -rw-r--r-- 1 root root 8192 Aug 19 13:43 /etc/postfix/recipient_bcc_maps.db
sender_bcc_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#sender_bcc_maps |
Defaultwert | sender_bcc_maps = |
Neuer Wert | sender_bcc_maps = btree:/etc/postfix/sender_bcc_maps |
Beschreibung | Die Map erstellt eine Blindkopie (bcc = blind carbon copy) einer ausgehenden e-Mail. |
Als Beispiel soll jede ausgehende e-Mail von der e-Mail-Adresse
support@tachtler.net
ebenfalls als Blindkopie (bcc = blind carbon copy) an
klaus@tachtler.net
ebenfalls weitergeleitet werden.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/sender_bcc_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/sender_bcc_maps
Danach sollte der Inhalt wie folgt aussehen:
support@tachtler.net klaus@tachtler.net
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/sender_bcc_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/sender_bcc_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/sender_bcc_maps* -rw-r--r-- 1 root root 72 Aug 19 13:42 /etc/postfix/sender_bcc_maps -rw-r--r-- 1 root root 8192 Aug 19 13:49 /etc/postfix/sender_bcc_maps.db
rbl_reply_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#rbl_reply_maps |
Defaultwert | rbl_reply_maps = |
Neuer Wert | rbl_reply_maps = btree:/etc/postfix/rbl_reply_maps |
Beschreibung | Die Map kann individuell angepasste Antworten auf RBL (RealTimeBlacklist) Abfragen anthalten. |
Nachfolgende Tabelle zeigt z.B., wie Antworten von der RBL (RealTimeBlacklist) spamhaus.org ausfallen können:
DNSBL | Zone to Query | Returns | |
---|---|---|---|
SBL | sbl.spamhaus.org | 127.0.0.2-3 | Statische UBE (Unsolicited Bulk E-Mail = Unverlangte Massen-E-Mail) Quelle, Nachgewiesene SPAM Server (hosting oder support) und ROKSO (Register of Known Spam Operations) Spammer |
XBL | xbl.spamhaus.org | 127.0.0.4-7 | Illegale Drittanbieter Exploits, inklusive Proxies, Würmer und Trojaner Exploits |
PBL | pbl.spamhaus.org | 127.0.0.10-11 | IP Adressbereich (meist dynamische IP-Adressen), aus denen unautorisierte e-Mail's via SMTP ausgeliefert werden (meist auch SPAM-Bot-Netze) |
ZEN | zen.spamhaus.org | 127.0.0.2-11 | Kombinierte Zone aus allen vorhergehenden Zonen (empfohlene Liste zur Verwendung) inkludiert SBL, XBL und PBL |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/rbl_reply_maps
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/rbl_reply_maps
Bei Verwendung von Restrcitions wie z.B. smtpd_recipient_restrictions
, in der Konfigurationsdatei /etc/postfix/main.cf
wie nachfolgendes Beispiel zeigt:
(Nur relevanter Ausschnitt):
... smtpd_recipient_restrictions = reject_rbl_client zen.spamhaus.org=127.0.0.10, reject_rbl_client zen.spamhaus.org=127.0.0.11, reject_rbl_client zen.spamhaus.org, ...
kann anschließend der Inhalt wie folgt aussehen:
zen.spamhaus.org=127.0.0.10 521 4.7.1 Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason} zen.spamhaus.org=127.0.0.11 521 4.7.1 Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}
HINWEIS - Das Standard-Template für RBL (RealTimeBlacklist) ist im Parameter
default_rbl_reply
definiert und kann mit nachfolgendem Befehl abgefragt werden:
# postconf -d default_rbl_reply default_rbl_reply = $rbl_code Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/rbl_reply_maps
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/rbl_reply_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/rbl_reply_maps* -rw-r--r-- 1 root root 270 Aug 20 11:29 /etc/postfix/rbl_reply_maps -rw-r--r-- 1 root root 8192 Aug 20 11:30 /etc/postfix/rbl_reply_maps.db
HIWNEIS - Siehe hierzu aus den externen Link: http://www.postfix.org/STRESS_README.html#hangup
Restrictions: Grundlagen
Mit der Definition von Restrictions (Einschränkungen), wird Postfix in die Lage versetzt, Entscheidungen zu treffen, was mit e-Mails passieren soll, die dem Mail-Server durchlaufen.
Für die Annahme von e-Mails via SMTP ist das Postfix-Modul
smtpd
zuständig.
Für jeden Schritt den der Client beim Einlieferungsprozess durchläuft, besitzt smtpd
eine eigene Restriction, die Postfix durchläuft, um entweder zu einem positiven oder negativen Ergebnis zu kommen.
Nachfolgende Tabelle zeigt eine Übersicht der Restrictions:
Name der Restriction | Beschreibung der Restriction |
---|---|
smtpd_client_restrictions | Prüfung, nach dem Connect |
smtpd_helo_restrictions | Prüfung, nach dem HELO/EHLO |
smtpd_sender_restrictions | Prüfung, nach MAIL FROM:… |
smtpd_relay_restrictions | Prüfung, vor RCPT TO:… |
smtpd_recipient_restrictions | Prüfung, nach RCPT TO:… |
smtpd_data_restrictions | Prüfung, nach DATA |
smtpd_end_of_data_restrictions | Prüfung, nach erfolgter e-Mail Übertragung |
smtpd_etrn_restrictions | Client leert via ETRN-Kommando die Mail-Queue |
WICHTIG - Die Restrictions werden nacheinander durchlaufen und ähnlich wie bei iptables
, gilt auch hier, falls ein Restriction einen Treffer erzielt, werden keine weiteren Überprüfungen innerhalb der entsprechenden Restriction mehr durchgeführt!
Beim durchlaufen aller Restrictions gelten nachfolgende Regeln - REJECT:
- Führt innerhalb einer Restriction eine Überprüfung zu einem REJECT, fährt Postfix zunächst im SMTP-Dialog scheinbar weiter fort, um den Client nicht zu verwirren.
- Erst nach der Angabe von RCPT TO:… würde bei einem vorhergehenden REJECT die Ablehnung der e-Mail erfolgen.
Beim durchlaufen aller Restrictions gelten nachfolgende Regeln - OK oder PERMIT:
- Führt innerhalb einer Restriction eine Überprüfung zu einem OK oder PERMIT, so gilt nur diese Restriction als bestanden und es werden keine weiteren Überprüfung innerhalb dieser Restriction durchgeführt.
- Anschließend fährt Postfix mit der nächsten Restriction und deren Überprüfung fort.
Beim durchlaufen aller Restrictions gelten nachfolgende Regeln - DUNNO:
- Führt innerhalb einer Restriction die Überprüfung weder zu einem REJECT noch zu einem OK - sprich zu einem DUNNO, wird die nächste Überprüfung innerhalb der Restriction durchgeführt.
WICHTIG - Erst nach dem der Client die smtpd_recipient_restrictions
erfolgreich hinter sich gelassen hat, darf die Übertragung des Inhalts der e-Mail mit dem DATA-Kommando erfolgen.
Falls nun auch die Überprüfungen der
header_checks
body_checks
mime_header_checks
nested_header_checks
erfolgreich abgeschlossen werden kann, wird die e-Mail angenommen.
Restrictions: Fazit
Aufgrund des vorhergehend beschrieben Verfahrens der e-Mail Annahme bzw. Ablehnung, sind folgende Erkenntnisse zu beachten und sollten zu nachfolgend dargestellten Ergebnis führen:
- Bei genauer Analyse der Prozedur ist festzustellen, dass die nachfolgend genannten ersten drei Restrictions, streng genommen keine Rolle spielen:
smtpd_client_restrictions
smtpd_helo_restrictions
smtpd_sender_restrictions
- Ein positives Ergebnis in den ersten drei Restrictions führt nicht automatisch zur Annahme der e-Mail, nur zur positiven Beendigung von einer der jeweiligen ersten drei Restrictions. Jede positive Überprüfung in einer der jeweiligen ersten drei Restrictions müsste in der jeweils nachfolgenden Restriction wiederholt werden - oder gleich in der vierten und fünften Restriction durchgeführt werden.
- Ein negatives Ergebnis in den ersten drei Restrictions führt nicht zu einer sofortigen Ablehnung der e-Mail. Es werden weiterhin alle Restrictions bis zur vierten oder fünften Restriction durchlaufen, auch wenn schon klar ist, das die e-Mail nicht angenommen wird ist dies der Fall um einen Client nicht zu verwirren.
WICHTIG - Da in jedem Fall immer bis zur fünften Restriction alle Prüfungen durchgeführt werden, sollten alle Prüfungen NUR in
smtpd_relay_restrictions
smtpd_recipient_restrictions
und anschließend ggf. noch in
smtpd_data_restrictions
statt finden !!!
Restrictions-Konfigurationen
disable_vrfy_command
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#disable_vrfy_command |
Defaultwert | disable_vrfy_command = no |
Neuer Wert | disable_vrfy_command = yes |
Beschreibung | Verhindert, das der Befehl SMTP VRFY verwendet werden kann. Dies verhindert die Anwendung einiger Techniken, die zum ermitteln von e-Mail-Adressen in großen Mengen genutzt werden können. |
smtpd_helo_required
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_helo_required |
Defaultwert | smtpd_helo_required = no |
Neuer Wert | smtpd_helo_required = yes |
Beschreibung | Erzwingt, dass eine Remote-SMTP-Client den Befehl HELO oder EHLO vor dem Senden der E-Mail Befehle oder andere Befehle, zu Beginn einer SMTP-Sitzung sendet. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - check_helo_access |
smtpd_relay_restrictions
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_relay_restrictions http://www.postfix.org/SMTPD_ACCESS_README.html |
Defaultwert | smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination |
Neuer Wert | smtpd_relay_restrictions = # Permit all SASL authenticated users or clients from mynetworks. # Tachtler - disabled - permit_sasl_authenticated, permit_mynetworks, # Permit Backup-MX server. # Tachtler - disabled - permit_mx_backup, # Reject relaying all others, to prevent to be an "open relay server". reject_unauth_destination |
Beschreibung | Diese Restrictions (Zugriffsbeschränkungen) dient der e-Mail-Relay-Steuerung, welche von Postfix im Rahmen der RCPT TO-Befehls, vor den smtpd_recipient_restrictions ausgewertet werden. |
Nachfolgend werden die einzelnen Parameter innerhalb von smtpd_relay_restrictions
erklärt:
Tachtler - disabled - permit_sasl_authenticated
Erlaubt allen Remote-SMTP-Clients die weitere Einlieferung von e-Mails, wenn diese sich via SASL authentifiziert haben.
HINWEIS - Abdeckung durch Port submission, siehe auch den internen Link:
permit_mynetworks
Erlaubt allen Remote-SMTP-Clients die weitere Einlieferung von e-Mails, wenn diese aus mynetworks
stammen.
Tachtler - disabled - permit_mx_backup
Erlaubt dem Backup-MX e-Mail-Server die Einlieferung von e-Mails.
HINWEIS - Abdeckung durch die smtpd_recipient_restrictions
!
reject_unauth_destination
Verweigert allen Remote-SMTP-Clients die weitere Einlieferung von e-Mails, wenn diese nicht in einer der vorhergehenden Gruppen enthalten sind, oder keine Definition in relay_domains
vorhanden ist oder Postfix sich nicht selbst als final destination für die einzuliefernde e-Mail sieht.
check_recipient_access_rfc
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions |
Defaultwert | [nicht definiert] |
Neuer Wert | check_recipient_access btree:/etc/postfix/check_recipient_access_rfc |
Beschreibung | Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Empfänger, um die entsprechende Aktion auszuführen. |
Nachfolgend müssen, um die Konformität zu RFC 2821 sicher zu stellen, nachfolgende e-Mail-Adresse immer erreichbar sein:
postmaster@
abuse@
zusätzlich können auch noch diese e-Mail-Adressen die Servicequalität erhöhen
webmaster@
hostmaster@
wobei der localpart@ den Domänenpart und den Top-Level-Domänenpart, für die Domänen für die Postfix bereit ist e-Mails anzunehmen, steht - was auch mehrere Domänen sein können, aber nur diese Definition erforderlich ist.
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/check_recipient_access_rfc
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/check_recipient_access_rfc
Danach sollte der Inhalt wie folgt aussehen:
postmaster@ OK abuse@ OK webmaster@ OK hostmaster@ OK
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/check_recipient_access_rfc
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/check_recipient_access_rfc.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/check_recipient_access_rfc* -rw-r--r-- 1 root root 55 Aug 21 20:15 /etc/postfix/check_recipient_access_rfc -rw-r--r-- 1 root root 8192 Aug 21 20:15 /etc/postfix/check_recipient_access_rfc.db
check_client_access
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_restrictions |
Defaultwert | [nicht definiert] |
Neuer Wert | check_client_access cidr:/etc/postfix/check_client_access |
Beschreibung | Ermittelt den Client-Hostnamen der übergeordneten Domänen, Client-IP-Adresse oder Netzwerke durch Strippen der signifikanten Oktetten, womit ein Black- oder Whitelisting auf Basis von z.B. IP-Adressen, oder IP-Netzen durchgeführt werden kann. |
Nachfolgend können hier Einträge in die cidr
-Map nach nachfolgendem Muster eingetragen werden:
192.168.0.1 OK 192.168.0.0/24 REJECT Mailing to us is unwanted!
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/check_client_access
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/check_client_access
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
check_helo_access
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_helo_restrictions |
Defaultwert | [nicht definiert] |
Neuer Wert | check_helo_access btree:/etc/postfix/check_helo_access |
Beschreibung | Ermittelt die HELO oder EHLO Hostnamen oder die übergeordnete Domänen um die entsprechende Aktion auszuführen. Hinweis - Um in vollem Umfang diese Restriction durchsetzen zu können, muss smtpd_helo_required = yes gesetzt werden, da ohne smtpd_helo_required = yes , ein Client diese Restriction, durch nicht senden eines HELO oder EHLO überspringen könnte. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_helo_required |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/check_helo_access
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/check_helo_access
Danach könnte der Inhalt wie folgt aussehen:
mx1.example.com 550 Currently, too much traffic!
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/check_helo_access
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/check_helo_access.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/check_helo_access* -rw-r--r-- 1 root root 0 Aug 21 20:59 /etc/postfix/check_helo_access -rw-r--r-- 1 root root 8192 Aug 21 20:59 /etc/postfix/check_helo_access.db
check_sender_access
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_sender_restrictions |
Defaultwert | [nicht definiert] |
Neuer Wert | check_sender_access btree:/etc/postfix/check_sender_access |
Beschreibung | Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Absender, um die entsprechende Aktion auszuführen. |
interner Link | Postfix CentOS 7 - TLS-Konfiguration - plaintext_reject_code |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/check_sender_access
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/check_sender_access
Danach könnte der Inhalt wie folgt aussehen:
spam@example.com 550 We don't want your SPAM! nausch.org reject_plaintext_session
ERKLÄRUNG - reject_plaintext_session
verhindert den Aufbau von unverschlüsselten Verbindungen, bei eingehenden e-Mails
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/check_sender_access
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/check_sender_access.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/check_sender_access* -rw-r--r-- 1 root root 0 Aug 21 21:17 /etc/postfix/check_sender_access -rw-r--r-- 1 root root 8192 Aug 21 21:17 /etc/postfix/check_sender_access.db
check_recipient_access
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions |
Defaultwert | [nicht definiert] |
Neuer Wert | check_recipient_access btree:/etc/postfix/check_recipient_access |
Beschreibung | Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Empfänger, um die entsprechende Aktion auszuführen. |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/check_recipient_access
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/check_recipient_access
Danach könnte der Inhalt wie folgt aussehen:
user@tachtler.net 550 User are not available!
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss muss die Konfigurationsdatei in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgender Befehl zeigt:
# postmap btree:/etc/postfix/check_recipient_access
Anschließend sollte eine neue Datei mit dem Namen /etc/postfix/check_recipient_access.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# # ls -l /etc/postfix/check_recipient_access* -rw-r--r-- 1 root root 0 Aug 21 21:22 /etc/postfix/check_recipient_access -rw-r--r-- 1 root root 8192 Aug 21 21:22 /etc/postfix/check_recipient_access.db -rw-r--r-- 1 root root 55 Aug 21 20:15 /etc/postfix/check_recipient_access_rfc -rw-r--r-- 1 root root 8192 Aug 21 20:15 /etc/postfix/check_recipient_access_rfc.db
smtpd_recipient_restrictions
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions http://www.postfix.org/SMTPD_ACCESS_README.html |
Defaultwert | smtpd_recipient_restrictions = |
Neuer Wert | smtpd_recipient_restrictions = # RFC or important ROLE-Accounts - Whitelisting - like: postmaster, abuse. check_recipient_access btree:/etc/postfix/check_recipient_access_rfc, # White- and Blacklisting. check_client_access cidr:/etc/postfix/check_client_access, check_helo_access btree:/etc/postfix/check_helo_access, check_sender_access btree:/etc/postfix/check_sender_access, check_recipient_access btree:/etc/postfix/check_recipient_access, # Reject unclean e-Mail. reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_invalid_helo_hostname, # Permit all SASL authenticated users, or clients from mynetworks. # Tachtler - disabled - permit_sasl_authenticated, permit_mynetworks, # RBL and RHSBL checks. reject_rbl_client zen.spamhaus.org=127.0.0.10, reject_rbl_client zen.spamhaus.org=127.0.0.11, reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client bl.spamcop.net, reject_rhsbl_client multi.uribl.com, # Check dynamicaly existing Relay-Recipient. reject_unverified_recipient, # Permit Backup-MX. permit_mx_backup, # Reject relaying all others, to prevent to be an "open relay server". # Tachtler - disabled - reject_unauth_destination, # Check dynamicaly the Quota-Status of the user against the dovecot imap server. check_policy_service inet:192.168.0.80:12340 |
Beschreibung | Diese Restrictions (Zugriffsbeschränkungen) dient der e-Mail-Annahme-Steuerung, welche von Postfix im Rahmen der RCPT TO-Befehls, nach den smtpd_relay_restrictions ausgewertet werden. |
interne Links | Postfix CentOS 7 - Basis-Konfiguration - /etc/postfix/main.cf - mynetworks Postfix CentOS 7 - Lookup Tables-Konfigurationen - rbl_reply_maps Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_helo_required Postfix CentOS 7 - Restrictions-Konfigurationen - check_recipient_access_rfc Postfix CentOS 7 - Restrictions-Konfigurationen - check_client_access Postfix CentOS 7 - Restrictions-Konfigurationen - check_helo_access Postfix CentOS 7 - Restrictions-Konfigurationen - check_sender_access Postfix CentOS 7 - Restrictions-Konfigurationen - check_recipient_access Dovecot Quotas - Konfiguration - Quota-Policy-Server |
Nachfolgend werden die einzelnen Parameter innerhalb von smtpd_recipient_restrictions
erklärt:
check_recipient_access btree:/etc/postfix/check_recipient_access_rfc
Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Empfänger, um die entsprechende Aktion, hier die Annahme der RCF-Role-Accounts postmaster
und abuse
ggf. auch webmaster
und hostmaster
, auszuführen.
check_client_access cidr:/etc/postfix/check_client_access
Ermittelt den Client-Hostnamen der übergeordneten Domänen, Client-IP-Adresse oder Netzwerke durch Strippen der signifikanten Oktetten, womit ein Black- oder Whitelisting auf Basis von z.B. IP-Adressen, oder IP-Netzen durchgeführt werden kann.
check_helo_access btree:/etc/postfix/check_helo_access
Ermittelt die HELO oder EHLO Hostnamen oder die übergeordnete Domänen um die entsprechende Aktion auszuführen.
Hinweis - Um in vollem Umfang diese Restriction durchsetzen zu können, muss smtpd_helo_required = yes
gesetzt werden, da ohne smtpd_helo_required = yes
, ein Client diese Restriction, durch nicht senden eines HELO oder EHLO überspringen könnte.
check_sender_access btree:/etc/postfix/check_sender_access
Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Absender, um die entsprechende Aktion auszuführen.
check_recipient_access btree:/etc/postfix/check_recipient_access
Ermittelt für die aufgelöste RCPT TO-Adresse, Domain, Top-Level-Domänen oder localpart @, für den Empfänger, um die entsprechende Aktion auszuführen.
reject_non_fqdn_sender
Abweisen der e-Mail, wenn die MAIL FROM-Adresse nicht in voll qualifizierter Domänenform (FQDN), wie sie in der RFC gefordert wird, angegeben wird.
HINWEIS - Der Parameter non_fqdn_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 504).
reject_non_fqdn_recipient
Abweisen der e-Mail, wenn die RCPT TO-Adresse nicht in voll qualifizierter Domänenform (FQDN), wie sie in der RFC gefordert wird, angegeben wird.
HINWEIS - Der Parameter non_fqdn_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 504).
reject_unknown_sender_domain
Abweisen der e-Mail, wenn Postfix nicht final destination
(final zuständig) für die Absenderadresse und die MAIL FROM-Domäne
- kein DNS-MX und kein DNS-A-Eintrag, oder
- ein fehlerhafter MX-Eintrag, wie beispielsweise einen Datensatz mit einer Länge Null hat
HINWEIS - Der Parameter unknown_address_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 450). Dieser sollte angepasst werden!
reject_unknown_recipient_domain
Abweisen der e-Mail, wenn Postfix nicht final destination
(final zuständig) für die Empfänger Domäne ist und die RCPT TO-Domäne
- kein DNS-MX und kein DNS-A-Eintrag, oder
- ein fehlerhafter MX-Eintrag, wie beispielsweise einen Datensatz mit einer Länge Null hat
HINWEIS - Der Parameter unknown_address_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 450). Dieser sollte angepasst werden!
reject_invalid_helo_hostname
Abweisen der e-Mail, wenn der HELO oder EHLO Hostname fehlerhaft ist.
Hinweis - Um in vollem Umfang diese Restriction durchsetzen zu können, muss smtpd_helo_required = yes
gesetzt werden, da ohne smtpd_helo_required = yes
, ein Client diese Restriction, durch nicht senden eines HELO oder EHLO überspringen könnte.
HINWEIS - Der Parameter invalid_hostname_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 501).
# Tachtler - disabeled - permit_sasl_authenticated
HINWEIS - Abgedeckt durch Port submission, siehe auch den internen Link:
Fortfahren mit der Annahme der e-Mail, wenn der Client erfolgreich über das RFC-4954 (AUTH) Protokoll authentifiziert ist.
permit_mynetworks
HINWEIS - Abgedeckt durch die smtpd_relay_restrictions
, ausser bei lokaler Einlieferung!
Fortfahren mit der Annahme der e-Mail, wenn die IP-Adresse des Clients in mynetworks
enthalten ist.
reject_rbl_client zen.spamhaus.org=127.0.0.10 reject_rbl_client zen.spamhaus.org=127.0.0.11 reject_rbl_client zen.spamhaus.org reject_rbl_client ix.dnsbl.manitu.net reject_rbl_client bl.spamcop.net reject_rhsbl_client multi.uribl.com
Abweisen der e-Mail, wenn die umgekehrte Client-Netzwerk-Adresse mit dem A-Record „dddd“ unter rbl_domain aufgeführt ist. Jedes „d“ stellt eine Zahl oder ein Muster im Inneren von „[]“ dar, welche durch ein oder mehrere „;“ - getrennte Zahlen oder Zahl..Zahl Bereiche sein können. Wenn keine „= dddd“ angegeben ist, dann soll die e-Mail abgewiesen werden, wenn für die umgekehrte Client-Netzwerk-Adresse ein A-Record Eintrag unter rbl_domain
aufgeführt ist.
HINWEIS - Der Parameter maps_rbl_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 554), der default_rbl_reply
Parameter setzt die Standard-Server-Antwort, und der Parameter rbl_reply_maps
enthält, bei gewünschten Abweichungen von der Standard Antwort, in einer Tabellen mit Server-Antworten diese fest, wenn diese in rbl_domain
indexiert sind.
reject_unverified_recipient
Abweisen der e-Mail, wenn für eine Nachricht an die RCPT TO-Adresse gerichtet ist, fest steht, das diese einen „Bounce“ bzw. eine Ablehnung erzeugen würde, da die Empfänger-Adresse nicht erreichbar ist.
HINWEIS - Der Parameter unverified_recipient_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 450). Dieser sollte angepasst werden!
Der Parameter unverified_recipient_defer_code
setzt den Response-Code für abgelehnte e-Mails, wenn die Zustellung aufgrund eines vorübergehenden Problems, fehlschlagen würde (Standard: 450).
permit_mx_backup
Fortfahren mit der Annahme der e-Mail, wenn das lokale Mail System als „Backup MX“ für die RCPT TO-Domäne definiert ist, oder wenn die Domäne ein autorisierter Ziel ist.
# Tachtler - disabled - reject_unauth_destination
HINWEIS - Abgedeckt durch die smtpd_relay_restrictions
.
Abweisen der e-Mail, wenn nicht mindestens eine der folgenden Bedingungen erfüllt wird:
- Postfix Mail-Forwarder: die aufgelöste RCPT TO-Domäne entspricht
relay_domains
oder eine Subdomain davon und enthält keine spezielles, für den Absender angegebenes Routing. - Postfix ist das endgültige Ziel (final destination): die aufgelöste RCPT TO-Domäne entspricht
mydestination
,inet_interfaces
,proxy_interfaces
,virtual_alias_domains
odervirtual_mailbox_domains
und enthält keine spezielles, für den Absender angegebenes Routing.
HINWEIS - Der Parameter relay_domains_reject_code
setzt den Response-Code für abgelehnte e-Mails (Standard: 554).
check_policy_service inet:192.168.0.80:12340
Abweisen der e-Mail, wenn eine Überprüfung gegen den Policy Service des dovecot imap servers ergibt, das das Postfach „over quota“ (voll) ist.
HINWEIS - Dies soll aktuell an dieser Stelle geschehen, da nur hier die Abweisung pro RCPT TO-Empfänger-Adresse erfolgen kann. Eine mögliche Überprüfung in der Reesctriction smptd_end_of_data_restriction
wäre ebenfalls denkbar und hätte auch den Vorteil, dass hier die exakte Größe der e-Mail ermittelbar wäre, jedoch auch den Nachteil, das eine Ablehnung nur für alle Empfänger durchgeführt werden kann und nicht mehr pro einzelner RCPT TO-Empfänger-Adresse.
Vielen Dank an dieser Stelle an Patrick Ben Koetter und Christian Boltz.
smtpd_data_restrictions
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_data_restrictions http://www.postfix.org/SMTPD_ACCESS_README.html |
Defaultwert | smtpd_data_restrictions = |
Neuer Wert | smtpd_data_restrictions = # Reject request commands ahead of time, where it is not allowed. reject_unauth_pipelining, # Reject when envelop sender is the null address, and the message has multiple # envelop recipients. reject_multi_recipient_bounce, # All else. permit |
Beschreibung | Diese Restrictions (Zugriffsbeschränkungen) dient der e-Mail-Annahme-Steuerung, welche von Postfix im Rahmen des DATA-Befehls, ausgewertet werden. |
Nachfolgend werden die einzelnen Parameter innerhalb von smtpd_data_restrictions
erklärt:
reject_unauth_pipelining
Ablehnung der e-Mail, wenn der Client SMTP-Befehle zu schnell sendet, bzw. an einer Stelle an der es nicht erlaubt ist, oder wenn der Client SMTP-Befehle zu schnell sendet, ohne zu wissen, dass Postfix tatsächlich de ESMTP-Befehl Pipelining unterstützt. Dies stoppt E-Mails von Bulk-Mail-Software, die keine ordnungsgemäße Verwendung des ESMTP-Befehl Pipelining durchführen, um die Einlieferung von e-Mails zu beschleunigen.
reject_multi_recipient_bounce
Ablehnung der e-Mail, wenn der ENVELOP-Sender die Null-Adresse ist und die Nachricht an mehrere ENVELOP-Empfänger gerichtet ist. Diese Nutzung der Null-Sender-Adresse ist selten, aber unter bestimmten Bedingungen legitim. Eine Multi-Empfänger-Mail, die mit der DSN-Option NOTIFY geschickt wurde, kann nie mit der Null-Sender-Adresse weitergeleitet werden.
Hinweis - Diese Restrcition kann nur angewandt werden, wenn diese in den smtpd_data_restrictions
oder smtpd_end_of_data_restrictions
verwendet wird, weil die Gesamtanzahl der Empfänger, nicht in früheren Phasen des SMTP-Dialogs, bekannt ist.
permit
Annahme der e-Mail. Dient nur dem besseren Verständnis, das die e-Mail letztendlich angenommen wird.
unknown_address_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unknown_address_reject_code |
Defaultwert | unknown_address_reject_code = 450 |
Neuer Wert | unknown_address_reject_code = 550 |
Beschreibung | Der numerische Response-Code, wenn Postfix die Absender- oder Empfängeradresse ablehnt, weil die Domäne nicht bekannt ist. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions |
unknown_client_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unknown_client_reject_code |
Defaultwert | unknown_client_reject_code = 450 |
Neuer Wert | unknown_client_reject_code = 550 |
Beschreibung | Der numerische Response-Code, wenn ein Client ohne gültige Adresse ⇔ Namenszuordnung durch die Restriction reject_unknown_client_hostname abgelehnt wird. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions |
unknown_hostname_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unknown_hostname_reject_code |
Defaultwert | unknown_hostname_reject_code = 450 |
Neuer Wert | unknown_hostname_reject_code = 550 |
Beschreibung | Der numerische Response-Code, wenn der mit dem Befehl HELO oder EHLO angegebenen Hostnamen durch die Restriction reject_unknown_helo_hostname abgelehnt wird. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions |
unverified_recipient_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unverified_recipient_reject_code |
Defaultwert | unverified_recipient_reject_code = 450 |
Neuer Wert | unverified_recipient_reject_code = 577 |
Beschreibung | Der numerische Response-Code, wenn eine Empfängeradresse durch die Restrcicion reject_unverified_recipient abgelehnt wird. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions |
unverified_sender_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unverified_sender_reject_code |
Defaultwert | unverified_sender_reject_code = 450 |
Neuer Wert | unverified_sender_reject_code = 577 |
Beschreibung | Der numerische Response-Code, wenn eine Absenderadresse durch die Restrcicion reject_unverified_sender abgelehnt wird. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions |
HINWEIS - Die zugrunde liegende Restriction wird zwar nicht angewandt, der Response-Code soll hier trotzdem gesetzt werde, da bei einer späteren, partiellen Verwendung der zugrunde liegenden Restriction, dieser Response-Code bereits schon gesetzt ist.
Mail Filter Checks-Konfigurationen
Mit nachfolgenden „Checks“ (Überprüfungen) ist Postfix in der Lage auch
- den
header
- den
mime_header
- die
nested_header
- den
body
zu überprüfen.
header_checks
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/header_checks.5.html |
Defaultwert | header_checks = |
Neuer Wert | header_checks = pcre:/etc/postfix/header_checks |
Beschreibung | Optionale Lookup-Tabellen für die Inhaltsprüfung der primären Nicht-MIME-Nachrichten-Header (Kopfzeilen). Die Checks werden auf die Nachrichten-Header angewandt. Hiervon ausgenommen sind die MIME-Header für die es eigene „Checks“ (Überprüfungen) gibt. |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/header_checks
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/header_checks
Danach könnte der Inhalt wie folgt aussehen:
/^Received: from localhost/ IGNORE # Weitere Beispiele If /^From:/i /^From:.*spam.org/ REJECT Header-Spamschutzregel FROM-1001 Endif If /^To:/i /^To:.*spam.net/ REJECT Header-Spamschutzregel TOTO-2001 Endif If /^Date:/i /^Date:.*[+-](1[4-9]|2\d)\d\d$/ REJECT Header-Spamschutzregel DATE-3001 Endif If /^Subject:/i /^Subject:.*Gratisaktion.*/ REJECT Header-Spamschutzregel SUBJ-4001 Endif # Spezielles Beispiel /^(To|From|Cc|Reply-To):.*@spam.gov/ REJECT Header-Spamschutzregel MULT-9001
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
HINWEIS - Die Regeln sollten im Perl-Kompatiblen RegExp-Syntax (PCRE) verfasst werden!
mime_header_checks
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/header_checks.5.html |
Defaultwert | mime_header_checks = $header_checks |
Neuer Wert | mime_header_checks = pcre:/etc/postfix/mime_header_checks |
Beschreibung | Optionale Lookup-Tabellen für die Inhaltsprüfung der primären MIME-Nachrichten-Header (Kopfzeilen). Die Checks werden auf die Nachrichten-Header angewandt. Hiervon ausgenommen sind die normalen Nachrichten Header für die es eigene „Checks“ (Überprüfungen) gibt. Es kommt hier die MIME encoded word lt. RFC 2047 zum Einsatz. |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/mime_header_checks
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/mime_header_checks
Danach könnte der Inhalt wie folgt aussehen:
# Viagra /^Subject:.*VmlhZ3Jh.*/ REJECT MIME-Header-Spamschutzregel SUBJ-4001
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
HINWEIS - Die Regeln sollten im Perl-Kompatiblen RegExp-Syntax (PCRE) verfasst werden!
nested_header_checks
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/header_checks.5.html |
Defaultwert | nested_header_checks = $header_checks |
Neuer Wert | nested_header_checks = pcre:/etc/postfix/nested_header_checks |
Beschreibung | Optionale Lookup-Tabellen für die Inhaltsprüfung der primären Nicht-MIME-Nachrichten-Header (Kopfzeilen) angehängter/in Anhang weitergeleitete Nachrichten. Die Checks werden auf die Nachrichten-Header angewandt. Hiervon ausgenommen sind die MIME-Header für die es eigene „Checks“ (Überprüfungen) gibt. |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/nested_header_checks
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/nested_header_checks
Danach könnte der Inhalt wie folgt aussehen:
/^Received: from spammer/ REJECT NESTED-Header-Spamschutzregel HEAD-5001
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
HINWEIS - Die Regeln sollten im Perl-Kompatiblen RegExp-Syntax (PCRE) verfasst werden!
body_checks
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/header_checks.5.html |
Defaultwert | body_checks = |
Neuer Wert | body_checks = pcre:/etc/postfix/nested_header_checks |
Beschreibung | Optionale Lookup-Tabelle für die Inhaltsprüfung der Nachricht. |
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/body_checks
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/body_checks
Danach könnte der Inhalt wie folgt aussehen:
/Sehr geehrter Sparkassen Kunde/ REJECT Body-Spamschutzregel BODY-1001
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
HINWEIS - Die Regeln sollten im Perl-Kompatiblen RegExp-Syntax (PCRE) verfasst werden!
Dynamische Adressen-Verifizierung
Unter dem Begriff Dynamic address verification (Dynamische Adressen-Verifizierung) ist die Möglichkeit von Postfix gemeint, das dieser sich im Hauptspeicher merkt, ob die e-Mail-Adresse existiert oder nicht. Nach einem Postfix reload
, restart
oder stop
würden diese Informationen jedoch nicht mehr Verfügbar sein.
Deshalb kann Postfix diese Informationen nicht nur im Hauptspeicher, sondern auch in einer Datei ablegen.
address_verify_map
/etc/postfix/main.cf
HINWEIS - Nachfolgende Änderungen sind in der Konfigurationsdatei /etc/postfix/main.cf
erforderlich.
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#address_verify_map |
Defaultwert | address_verify_map = btree:$data_directory/verify_cache |
Neuer Wert | address_verify_map = btree:$queue_directory/verify/verify_cache |
Beschreibung | Tabelle für die permanente Adressüberprüfungsstatus Auslagerung im Dateisystem, damit diese Informationen auch nach einem Postfix reload , restart oder stop weiterhin zur Verfügung stehen. WICHTIG - Erst die Restriction z.B. reject_unverified_recipient stößt den Verifizierungsprozess an, deshalb sind Tests aus mynetworks nicht zielführend! |
HINWEIS - Nachfolgend soll vom Standardspeicherort abgewichen werden, da unter einem anderen Pfad eine Auslagerung logischer und ggf. praktikabler erscheint.
Der Standardspeicherort für die address_verify_map
ist
data_directory = /var/lib/postfix
erweitert um eine Mapverify_cache
Nachfolgend soll der neue Speicherort unter
queue_directory = /var/spool/postfix
erweitert um ein Verzeichnis und eine Map/verify/verify_cache
gesetzt werden.
Dieser beinhaltet die Variable $queue_directory, welche auf das Verzeichnis /var/spool/postifx
zeigt und alle Queues von Postfix beinhaltet und oft auf einem anderen Datenträger oder Partition wie Postfix selbst liegt und dadurch ggf. besser geeignet ist, da hier ein Dateisystemüberlauf besser abgefangen werden kann.
Dazu muss in diesem Beispiel ein neues Verzeichnis mit nachfolgendem Befehl angelegt werden:
# mkdir /var/spool/postfix/verify
Anschließend müssen für das neu angelegte Verzeichnis, mit nachfolgenden Befehlen, die entsprechenden Besitzrechte
# chown -R postfix:root /var/spool/postfix/verify
und die entsprechenden Dateirechte
# chmod -R 700 /var/spool/postfix/verify
gesetzt werden.
WICHTIG - Die Konfigurationsdatei wird direkt von Postfix verwaltet und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
/etc/postfix/master.cf
HINWEIS - Nachfolgende Überprüfungen sind in der Konfigurationsdatei /etc/postfix/main.cf
durchzuführen.
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/verify.8.html |
Um Dynamische Adress-Verifizierung (Dynamic address verification) nutzen zu können, muss zusätzlich das Modul
verify
in der Konfigurationsdatei /etc/postfix/master.cf
, aktiviert sein, was standardmäßig der Fall ist und wie folgt aussehen sollte:
(Nur relevanter Ausschnitt)
... # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== ... verify unix - - n - 1 verify ...
WICHTIG - Damit Änderungen allen Konfigurationsdateien wirksam werden, ist ein Postfix restart
erforderlich!
WICHTIG - Nachfolgende beide Befehle können bzw. sollten nicht im laufenden Betrieb ausgeführt werden! (Evtl. zur Inhalt Einsicht die Datei vorher an einen anderen Speicherort kopieren)
Um den Inhalt der address_verify_map
einsehen zu können, kann nachfolgender Befehl genutzt werden:
# postmap -s btree:/var/spool/postfix/verify/verify_cache _LAST_CACHE_CLEANUP_COMPLETED_ 1440530931 klaus@tachtler.net 0:0:1440530931:delivers to mailbox
Um e-Mail-Adressen aus der address_verify_map
entfernen zu können, kann nachfolgender Befehl genutzt werden:
# postmap -d klaus@tachtler.net btree:/var/spool/postfix/verify/verify_cache
HINWEIS - Falls keine ungültigen Adressen, also negative Ergebnisse gespeichert werden sollen, kann nachfolgender Parameter verändert werden
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#address_verify_negative_cache |
Defaultwert | address_verify_negative_cache = yes |
Möglicher Wert | address_verify_negative_cache = no |
Beschreibung | Aktivieren oder Deaktiviert das Zwischenspeichern von gescheiterten Adressprüfung (ungültigen Adressen). Wenn diese Funktion aktiviert ist, kann der Cache schnell mit Müll verschmutzen. Wenn diese Funktion deaktiviert ist, führt dies zu vermehrt Anfragen durch Postfix. |
Eigene Bounce Templates
Eine Auflistung der Möglichen Meldungen, sprich die Originalmeldungen, können mit nachfolgendem Befehl zur Anzeige gebracht werden:
# postconf -b expanded_failure_text = <<EOF This is the mail system at host mx1.tachtler.net. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF expanded_delay_text = <<EOF This is the mail system at host mx1.tachtler.net. #################################################################### # THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. # #################################################################### Your message could not be delivered for more than 0 hour(s). It will be retried until it is 5 day(s) old. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF expanded_success_text = <<EOF This is the mail system at host mx1.tachtler.net. Your message was successfully delivered to the destination(s) listed below. If the message was delivered to mailbox you will receive no further notifications. Otherwise you may still receive notifications of mail delivery errors from other systems. The mail system EOF expanded_verify_text = <<EOF This is the mail system at host mx1.tachtler.net. Enclosed is the mail delivery report that you requested. The mail system EOF
und beinhaltet nur englischsprachige Textbausteine für nachfolgende Meldungen:
undeliverable mail
- unzustellbare Postdelayed mail
- verzögerte Mailsuccessful delivery
- erfolgreiche Zustellungdelivery verification
- Auslieferung Verifikation.
Die Anpassung der von Meldungen, die Postfix bei nachfolgenden Ereignissen ausgibt, bietet die Möglichkeit auch deutsche Texte oberhalb der originalen englischsprachigen Meldungen anzubringen.
Eine bereits vorgefertigte Konfigurationsdatei, kann unter nachfolgendem externen Link heruntergeladen werden:
/etc/postfix/bounce.de-DE.cf
Nachfolgende Konfigurationsdatei wurde von mir erstellt:
# Erstellt von Klaus Tachtler am 2015-08-26. # ------------------------------------------ # e-Mail : klaus@tachtler.net # Homepage: http://www.tachtler.net # DokuWiki: http://www.dokuwiki.tachtler.net # ------------------------------------------ # # The failure template is used when mail is returned to the sender; # either the destination rejected the message, or the destination # could not be reached before the message expired in the queue. # failure_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Mail Delivery System) Subject: Unzustellbare Nachricht =?utf-8?b?UsO8Y2tnYWJl?= an den Abesender / Undelivered Mail Returned to Sender Postmaster-Subject: Postmaster Copy: Undelivered Mail Dies ist eine automatisiert erstellte Nachricht von $myhostname. Es tut mir leid, Ihnen mitteilen zu müssen, dass Ihre Nachricht an einen oder mehrere Empfänger nicht zugestellt werden konnte. Die unzustellbare Nachricht befindet sich am Ende dieser Nachricht. Für Rückfragen, senden Sie bitte eine E-Mail an postmaster@$mydomain Bei Rückfragen, fügen Sie bitte diesen Problembericht an, wobei Sie den Inhalt Ihrer ursprünglichen Nachricht entfernen können. Erstellt von $mail_name auf $myhostname. INTERNATIONAL VERSION This is the mail system at host $myhostname. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster@$mydomain If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF # # The delay template is used when mail is delayed. Note a neat trick: # the default template displays the delay_warning_time value as hours # by appending the _hours suffix to the parameter name; it displays # the maximal_queue_lifetime value as days by appending the _days # suffix. # # Other suffixes are: _seconds, _minutes, _weeks. There are no other # main.cf parameters that have this special behavior. # # You need to adjust these suffixes (and the surrounding text) if # you have very different settings for these time parameters. # delay_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Mail Delivery System) Subject: =?utf-8?b?VmVyesO2Z2VydGU=?= Nachricht (Zustellung in Bearbeitung) / Delayed Mail (still being retried) Postmaster-Subject: Postmaster Warning: Delayed Mail Dies ist eine automatisiert erstellte Nachricht von $myhostname. #################################################################### # INFORMATION: IHRE NACHRICHT, MUSS NICHT ERNEUT VERSENDET WERDEN. # #################################################################### Ihre Nachricht konnte seit mehr als $delay_warning_time_hours Stunde(n) nicht zugestellt werden. Eine Zustellung wird, bis Ihre Nachricht $maximal_queue_lifetime_days Tag(e) alt ist, weiterhin versucht. Für Rückfragen, senden Sie bitte eine E-Mail an postmaster@$mydomain Bei Rückfragen, fügen Sie bitte diesen Problembericht an, wobei Sie den Inhalt Ihrer ursprünglichen Nachricht entfernen können. Erstellt von $mail_name auf $myhostname. INTERNATIONAL VERSION This is the mail system at host $myhostname. #################################################################### # THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. # #################################################################### Your message could not be delivered for more than $delay_warning_time_hours hour(s). It will be retried until it is $maximal_queue_lifetime_days day(s) old. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF # # The success template is used when mail is delivered to mailbox, # when an alias or list is expanded, or when mail is delivered to a # system that does not announce DSN support. It is an error to specify # a Postmaster-Subject: here. # success_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Mail Delivery System) Subject: Benachrichtigung =?utf-8?b?w7xiZXI=?= erfolgreiche Zustellung / Successful Mail Delivery Report Dies ist eine automatisiert erstellte Nachricht von $myhostname. Ihre Nachricht konnte erfolgreich an nachfolgend(e) aufgeführte(n) E-Mail-System(e) zugestellt werden. Bei der Zustellung in das Postfach erfolgt keine weitere Benachrichtigung. Falls es jedoch bei der Zustellung in das Postfach zu Fehlern kommen sollte, erfolgt eine gesonderte Benachrichtigung des entsprechenden E-Mail-Systems. Erstellt von $mail_name auf $myhostname. INTERNATIONAL VERSION This is the mail system at host $myhostname. Your message was successfully delivered to the destination(s) listed below. If the message was delivered to mailbox you will receive no further notifications. Otherwise you may still receive notifications of mail delivery errors from other systems. The mail system EOF # # The verify template is used for address verification (sendmail -bv # address...) or for verbose mail delivery (sendmail -v address...). # It is an error to specify a Postmaster-Subject: here. # verify_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Mail Delivery System) Subject: Zustellungsbericht / Mail Delivery Status Report Dies ist eine automatisiert erstellte Nachricht von $myhostname. Mit dieser Nachricht erhalten Sie den von Ihnen angeforderten Zustellungsbericht. Erstellt von $mail_name auf $myhostname. INTERNATIONAL VERSION This is the mail system at host $myhostname. Enclosed is the mail delivery report that you requested. The mail system EOF
bounce_template_file
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#bounce_template_file |
Defaultwert | bounce_template_file |
Neuer Wert | bounce_template_file = /etc/postfix/bounce.de-DE.cf |
Beschreibung | Pfad- und Dateiname einer Konfigurationsdatei mit Bounce-Nachricht Vorlagen. Diese überschreiben die integrierten Vorlagen von Delivery Status Notification (DSN) Meldungen für nachfolgende Auflistung |
undeliverable mail
- unzustellbare Postdelayed mail
- verzögerte Mailsuccessful delivery
- erfolgreiche Zustellungdelivery verification
- Auslieferung Verifikation.
Eine Überprüfung, wie die Meldungen nach erfolgreicher Einbindung einer eigenen Konfigurationsdatei aussehen, kann wiederum durch Aufruf des nachfolgenden Befehl, durchgeführt werden:
# postconf -b expanded_failure_text = <<EOF Dies ist eine automatisiert erstellte Nachricht von mx1.tachtler.net. Es tut mir leid, Ihnen mitteilen zu müssen, dass Ihre Nachricht an einen oder mehrere Empfänger nicht zugestellt werden konnte. Die unzustellbare Nachricht befindet sich am Ende dieser Nachricht. Für Rückfragen, senden Sie bitte eine E-Mail an postmaster@tachtler.net Bei Rückfragen, fügen Sie bitte diesen Problembericht an, wobei Sie den Inhalt Ihrer ursprünglichen Nachricht entfernen können. Erstellt von Postfix auf mx1.tachtler.net. INTERNATIONAL VERSION This is the mail system at host mx1.tachtler.net. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster@tachtler.net If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF expanded_delay_text = <<EOF Dies ist eine automatisiert erstellte Nachricht von mx1.tachtler.net. #################################################################### # INFORMATION: IHRE NACHRICHT, MUSS NICHT ERNEUT VERSENDET WERDEN. # #################################################################### Ihre Nachricht konnte seit mehr als 0 Stunde(n) nicht zugestellt werden. Eine Zustellung wird, bis Ihre Nachricht 5 Tag(e) alt ist, weiterhin versucht. Für Rückfragen, senden Sie bitte eine E-Mail an postmaster@tachtler.net Bei Rückfragen, fügen Sie bitte diesen Problembericht an, wobei Sie den Inhalt Ihrer ursprünglichen Nachricht entfernen können. Erstellt von Postfix auf mx1.tachtler.net. INTERNATIONAL VERSION This is the mail system at host mx1.tachtler.net. #################################################################### # THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. # #################################################################### Your message could not be delivered for more than 0 hour(s). It will be retried until it is 5 day(s) old. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF expanded_success_text = <<EOF Dies ist eine automatisiert erstellte Nachricht von mx1.tachtler.net. Ihre Nachricht konnte erfolgreich an nachfolgend(e) aufgeführte(n) E-Mail-System(e) zugestellt werden. Bei der Zustellung in das Postfach erfolgt keine weitere Benachrichtigung. Falls es jedoch bei der Zustellung in das Postfach zu Fehlern kommen sollte, erfolgt eine gesonderte Benachrichtigung des entsprechenden E-Mail-Systems. Erstellt von Postfix auf mx1.tachtler.net. INTERNATIONAL VERSION This is the mail system at host mx1.tachtler.net. Your message was successfully delivered to the destination(s) listed below. If the message was delivered to mailbox you will receive no further notifications. Otherwise you may still receive notifications of mail delivery errors from other systems. The mail system EOF expanded_verify_text = <<EOF Dies ist eine automatisiert erstellte Nachricht von mx1.tachtler.net. Mit dieser Nachricht erhalten Sie den von Ihnen angeforderten Zustellungsbericht. Erstellt von Postfix auf mx1.tachtler.net. INTERNATIONAL VERSION This is the mail system at host mx1.tachtler.net. Enclosed is the mail delivery report that you requested. The mail system EOF
Erweiterte Konfiguration
Neben den Basis-Konfigurationen, welche unter nachfolgendem internen Link, durchgeführt wurden:
sowie nachfolgende Konfigurationen, unter ebenfalls nachfolgenden Links
können noch weitere tiefgreifender Konfigurationen durchgeführt werden.
default_database_type
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#default_database_type |
Defaultwert | default_database_type = hash |
Neuer Wert | default_database_type = btree |
Beschreibung | Der Parameter regelt, welcher der Standard Datentyp sein soll, wenn der Postfix-Befehl postmap , ohne Angabe eines Datentyps ausgeführt wird. |
HINWEIS - Da die der Datentyp btree
schneller als der Datentyp hash
auswertbar ist und dieser in den vorherig gezeigten Konfigurationen häufiger zu Einsatz kommt, soll hier auch btree
zum Standard Datentyp gemacht werden, da diese Angabe dann bei der Anwendung des Postfix-Befehl postmap
weggelassen werden kann.
masquerade_domains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#masquerade_domains |
Defaultwert | masquerade_domains = |
Neuer Wert | masquerade_domains = $mydomain |
Beschreibung | Optionale Liste von Domains, deren Sub-Domain-Struktur welche sich in einer e-Mail-Adressen befindet, entfernt wird. |
Nachfolgendes Beispiel demonstriert die Funktionsweise:
Die e-Mail-Adresse wird von links nach rechts verarbeitet und die Verarbeitung hält an dem ersten Übereinstimmung an. Somit würde bei einer Definition von
masquerade_domains = foo.example.com example.com
aus
user@any.thing.foo.example.com
–>user@foo.example.com
werden, und aususer@any.thing.else.example.com
–>user@example.com
werden.
masquerade_exceptions
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#masquerade_exceptions |
Defaultwert | masquerade_domains = |
Neuer Wert | masquerade_domains = root, mailer-daemon |
Beschreibung | Optionale Liste von localpart Angaben, die von masquerade_domains ausgenommen werden, auch wenn der domainpart bzw. subdomainpart in masquerade_domains aufgelistet ist. |
HINWEIS - Typischerweise ist dies oft bei den lokalen Benutzerkonten wie root
oder den localpart der e-Mail-Adresse mit mailer-deamon
der Fall.
parent_domain_matches_subdomains
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#parent_domain_matches_subdomains |
Defaultwert | parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks, permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps |
Neuer Wert | parent_domain_matches_subdomains = debug_peer_list, fast_flush_domains, mynetworks, permit_mx_backup_networks, qmqpd_authorized_clients |
Beschreibung | Der Parameter regelt, in welchen Lookup Tabellen Postfix bei der Angabe von z.B. tachtler.net ohne zusätzliche Definition auch Subdomänen, wie .tachtler.net , diese in seine Auswertung mit einfließen lassen soll. |
HINWEIS - Nachfolgende Einträge wurden aus der Liste entfernt:
relay_domains
Für welche Zieldomänen (und Subdomänen davon) sich Postfix als System Mail-Relay zuständig fühlt. Hier soll keine automatische Zuständigkeit für Subdomänen gelten, sonder diese müssen explizit definiert werden, um unerwünschten Weiterleitungen vorzubeugen.
smtpd_access_maps
Postfix soll nicht bei Lookup Tabellen eine automatische Zuständigkeit für Subdomänen ausführen, sonder diese müssen ebenfalls explizit definiert werden, um unerwünschten Weiterleitungen vorzubeugen.
recipient_delimiter
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#recipient_delimiter |
Defaultwert | recipient_delimiter = |
Neuer Wert | recipient_delimiter = + |
Beschreibung | Optionale Mail address extensions (e-Mail Adressenerweiterung) welche durch ein bestimmtes Zeichen getrennt, weitere Informationen zwischen dem localpart und dem @-Zeichen erlauben. |
Nachfolgendes Beispiel demonstriert die Funktionsweise:
Die e-Mail-Adresse wird wie folgt um eine Mail address extensions (e-Mail Adressenerweiterung) ergänzt:
user+irgendwas@example.com
HINWEIS - Die so erweiterte e-Mail-Adresse kann in verschiedenen Lookup Tabellen ebenfalls nun ausgewertet werden z.B. virtual
.
show_user_unknown_table_name
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#show_user_unknown_table_name |
Defaultwert | show_user_unknown_table_name = yes |
Neuer Wert | show_user_unknown_table_name = no |
Beschreibung | Rückgabe des Tabellennamens bei der Fehlermeldung „User unknown“ in der Antworten an den einliefernden e-Mail Server, in der der Empfänger nicht gefunden wurde. Die zusätzliche Angabe der Tabelle, macht die Fehlersuche einfacher, enthüllt aber auch Informationen, über die interne Benutzerverwaltung. |
smtpd_reject_footer
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_reject_footer |
Defaultwert | smtpd_reject_footer = |
Neuer Wert | smtpd_reject_footer = \c. (smtpd) For assistance, contact YOUR postmaster or administrator. He can achieve OUR postmaster via email: <postmaster@tachtler.net>. In any case, please provide the following information in your problem report: This error message, time ($localtime), client ($client_address), port ($client_port) and server ($server_name). |
Beschreibung | Optionale zusätzliche Angaben, die an jede Postfix SMTP-Server 4xx oder 5xx-Antwort angehängt werden. HINWEIS - Der obige Text dient dazu, in der Postfix LOG-Datei, leichter Datensätze für eine fehlgeschlagene SMTP-Sitzung zu finden. Der Text selbst ist nicht in der eigenen LOG-Datei des Postfix SMTP-Server protokolliert. |
Nachfolgende Tabelle zeigt optionale Variablen, welche in den Text mit eingebaut werden können:
Variable | Beschreibung |
---|---|
client_address | Die Client-IP-Adresse, die in der LOG-Datei protokolliert wird. |
client_port | Der Client-TCP-Port, der in der LOG-Datei protokolliert wird. |
localtime | Die lokale Server Zeit (Mmm dd hh:mm:ss), die in der LOG-Datei protokolliert wird. |
server_name | Der Hostname (aus myhostname ) des Servers. |
unverified_recipient_reject_reason
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unverified_recipient_reject_reason |
Defaultwert | unverified_recipient_reject_reason = |
Neuer Wert | unverified_recipient_reject_reason = Recipient address lookup failed |
Beschreibung | Antwort des Postfix SMTP-Servers, wenn die Einlieferung einer e-Mail mit reject_unverified_recipient abgelehnt wird. Unterdrückt den numerischen SMTP-Antwort-Code und/oder den erweiterten Statuscode. Standardmäßig enthält die Antwort die tatsächlichen Adressprüfungsdetails. |
unverified_sender_reject_reason
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#unverified_sender_reject_reason |
Defaultwert | unverified_sender_reject_reason = |
Neuer Wert | unverified_sender_reject_reason = Sender address lookup failed |
Beschreibung | Antwort des Postfix SMTP-Servers, wenn die Einlieferung einer e-Mail mit reject_unverified_sender abgelehnt wird. Unterdrückt den numerischen SMTP-Antwort-Code und/oder den erweiterten Statuscode. Standardmäßig enthält die Antwort die tatsächlichen Adressprüfungsdetails. |
SASL-Konfiguration
SMTP-Authentifizierung bietet Die Möglichkeit, mit der sich Clients identifizieren können, wenn diese nicht aus dem eigenen Netzwerk kommen, trotzdem aber Postfix zum Versand von e-Mails nutzen sollen. Ein Beispiel hierfür sind Smartphones.
Postfix kann bei einer SMTP-Authentifizierung dem Client gestatten, dass dieser über Postfix e-Mails verschicken (relay) darf, obwohl dieser nicht aus einem vertrauenswürdigen Netz (mynetworks) stammt.
Es gibt zwei gebräuchliche Möglichkeiten SMTP-Authentifizierung zu realisieren
HINWEIS - Nachfolgend soll die Konfiguration über Cyrus-SASL durchgeführt werden.
Cyrus-SASL
Beim Einsatz von Cyrus-SASL gibt es verschiedene Möglichkeiten, wie die SMTP-Authentifizierung Server seitig implementiert werden kann:
saslauthd
- Zugriffsmethoden:
getpwent
,shadow
,pam
,sasldb
,ldap
,rimap
undkerberos
.
- Vorteil:
- mächtiger Daemon, der mit
root
-Rechten gestartet, Zugriff auf viele „Backends“ hat
- Nachteil:
- beherrscht nur
PLAINTEXT
-Mechanismen zur Authentifizierung
authdaemond
- Zugriffsmethoden:
authuserdb
,authpam
,authpgsql
,authmysql
,authldap
undauthcustom
- Vorteil:
- Zugriff auf alle Backends, via
authlib
, auch solche diesaslauthd
nicht unterstützt
- Nachteil:
- beherrscht nur
PLAINTEXT
-Mechanismen zur Authentifizierung
auxprop
- Zugriffsmethoden:
sasldb
,sql
undldap
- Vorteil:
- modularer Aufbau (
auxprop-plugins
) - beherrscht umfangreiche Mechanismen zur Authentifizierung
- Nachteil:
- kein Zugriff auf Authentifizierungsmöglichkeiten, welche über die Rechte des
auxprop
-Benutzers hinausgehen und die höhere Dateisystemrechte erfordern
HINWEIS - Nachfolgend soll die Konfiguration über auxprop
- sql
durchgeführt werden.
cyrus-sasl-plain
Postfix beherrscht verschiedene Methoden zur SMTP-Authentifizierung. Einer dieser Methoden ist die Authentifizierung durch PLAINTEXT - „Klartext“-Passwörter (welche die Übertragungsart des Passworts bezeichnet).
Hierdurch werden die SMTP-Authentifizierungsmethoden:
PLAIN
LOGIN
angeboten!
Zur Installation der SMTP-Authentifizierungsmethoden in Postfix wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Paket cyrus-sasl-plain
installiert:
# yum install cyrus-sasl-plain Loaded plugins: changelog, priorities 130 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-plain.x86_64 0:2.1.26-17.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-plain x86_64 2.1.26-17.el7 base 38 k Transaction Summary ================================================================================ Install 1 Package Total download size: 38 k Installed size: 39 k Is this ok [y/d/N]: y Downloading packages: cyrus-sasl-plain-2.1.26-17.el7.x86_64.rpm | 38 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : cyrus-sasl-plain-2.1.26-17.el7.x86_64 1/1 Verifying : cyrus-sasl-plain-2.1.26-17.el7.x86_64 1/1 Installed: cyrus-sasl-plain.x86_64 0:2.1.26-17.el7 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-plain
installiert wurden.
# rpm -qil cyrus-sasl-plain Name : cyrus-sasl-plain Version : 2.1.26 Release : 17.el7 Architecture: x86_64 Install Date: Thu 27 Aug 2015 08:58:59 AM CEST Group : System Environment/Libraries Size : 39968 License : BSD with advertising Signature : RSA/SHA256, Fri 04 Jul 2014 03:05:21 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : cyrus-sasl-2.1.26-17.el7.src.rpm Build Date : Tue 10 Jun 2014 06:15:13 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : PLAIN and LOGIN authentication support for Cyrus SASL Description : The cyrus-sasl-plain package contains the Cyrus SASL plugins which support PLAIN and LOGIN authentication schemes. /usr/lib64/sasl2/liblogin.so /usr/lib64/sasl2/liblogin.so.3 /usr/lib64/sasl2/liblogin.so.3.0.0 /usr/lib64/sasl2/libplain.so /usr/lib64/sasl2/libplain.so.3 /usr/lib64/sasl2/libplain.so.3.0.0
cyrus-sasl-md5
Postfix beherrscht verschiedene Methoden zur SMTP-Authentifizierung. Einer dieser Methoden ist die Authentifizierung durch Shared Secret-Machanismen - „MD5“-Verschlüssslete-Passwörter (welche die Übertragungsart des Passworts bezeichnet).
Hierdurch werden die SMTP-Authentifizierungsmethoden:
CRAM-MD5
DIGEST-MD5
angeboten!
Zur Installation der Authentifizierungsmethode plain in Postfix wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete cyrus-sasl-plain
installiert:
# yum install cyrus-sasl-md5 Loaded plugins: changelog, priorities 130 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-md5.x86_64 0:2.1.26-17.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-md5 x86_64 2.1.26-17.el7 base 55 k Transaction Summary ================================================================================ Install 1 Package Total download size: 55 k Installed size: 80 k Is this ok [y/d/N]: y Downloading packages: cyrus-sasl-md5-2.1.26-17.el7.x86_64.rpm | 55 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : cyrus-sasl-md5-2.1.26-17.el7.x86_64 1/1 Verifying : cyrus-sasl-md5-2.1.26-17.el7.x86_64 1/1 Installed: cyrus-sasl-md5.x86_64 0:2.1.26-17.el7 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-md5
installiert wurden.
# rpm -qil cyrus-sasl-md5 Name : cyrus-sasl-md5 Version : 2.1.26 Release : 17.el7 Architecture: x86_64 Install Date: Thu 27 Aug 2015 09:13:58 AM CEST Group : System Environment/Libraries Size : 82048 License : BSD with advertising Signature : RSA/SHA256, Fri 04 Jul 2014 03:05:14 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : cyrus-sasl-2.1.26-17.el7.src.rpm Build Date : Tue 10 Jun 2014 06:15:13 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : CRAM-MD5 and DIGEST-MD5 authentication support for Cyrus SASL Description : The cyrus-sasl-md5 package contains the Cyrus SASL plugins which support CRAM-MD5 and DIGEST-MD5 authentication schemes. /usr/lib64/sasl2/libcrammd5.so /usr/lib64/sasl2/libcrammd5.so.3 /usr/lib64/sasl2/libcrammd5.so.3.0.0 /usr/lib64/sasl2/libdigestmd5.so /usr/lib64/sasl2/libdigestmd5.so.3 /usr/lib64/sasl2/libdigestmd5.so.3.0.0
cyrus-sasl-sql
HINWEIS - Aufgrund von Kompatibilitätsproblemen, sollten nachfolgende Pakete
cyrus-sasl-sql
cyrus-sasl-ldap
nicht gemeinsam installiert sein !
Postfix soll mit einer Anbindung an eine SQL-Datenbank zur SMTP-Authentifizierung als Backend betrieben werden.
Zur Installation der SQL-Datenbank-Anbindung von Postfix, wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete cyrus-sasl-sql
installiert:
# yum install cyrus-sasl-sql Loaded plugins: changelog, priorities 130 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-sql.x86_64 0:2.1.26-17.el7 will be installed --> Processing Dependency: libpq.so.5()(64bit) for package: cyrus-sasl-sql-2.1.26-17.el7.x86_64 --> Running transaction check ---> Package postgresql-libs.x86_64 0:9.2.13-1.el7_1 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-sql x86_64 2.1.26-17.el7 base 37 k Installing for dependencies: postgresql-libs x86_64 9.2.13-1.el7_1 updates 230 k Transaction Summary ================================================================================ Install 1 Package (+1 Dependent package) Total download size: 267 k Installed size: 692 k Is this ok [y/d/N]: y Downloading packages: (1/2): postgresql-libs-9.2.13-1.el7_1.x86_64.rpm | 230 kB 00:00 (2/2): cyrus-sasl-sql-2.1.26-17.el7.x86_64.rpm | 37 kB 00:00 -------------------------------------------------------------------------------- Total 814 kB/s | 267 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : postgresql-libs-9.2.13-1.el7_1.x86_64 1/2 Installing : cyrus-sasl-sql-2.1.26-17.el7.x86_64 2/2 Verifying : cyrus-sasl-sql-2.1.26-17.el7.x86_64 1/2 Verifying : postgresql-libs-9.2.13-1.el7_1.x86_64 2/2 Installed: cyrus-sasl-sql.x86_64 0:2.1.26-17.el7 Dependency Installed: postgresql-libs.x86_64 0:9.2.13-1.el7_1 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-sql
installiert wurden.
# rpm -qil cyrus-sasl-sql Name : cyrus-sasl-sql Version : 2.1.26 Release : 17.el7 Architecture: x86_64 Install Date: Thu 27 Aug 2015 09:24:11 AM CEST Group : System Environment/Libraries Size : 28320 License : BSD with advertising Signature : RSA/SHA256, Fri 04 Jul 2014 03:05:28 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : cyrus-sasl-2.1.26-17.el7.src.rpm Build Date : Tue 10 Jun 2014 06:15:13 AM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : SQL auxprop support for Cyrus SASL Description : The cyrus-sasl-sql package contains the Cyrus SASL plugin which supports using a RDBMS for storing shared secrets. /usr/lib64/sasl2/libsql.so /usr/lib64/sasl2/libsql.so.3 /usr/lib64/sasl2/libsql.so.3.0.0
/etc/sasl2/smtpd.conf
Nachfolgende Konfigurationsdatei
/etc/sasl2/smtpd.conf
regelt, welches Modul und welches Backend-System für die Authentifizierung durch Postfix verwendet werden soll.
Voraussetzungen für die nachfolgende Konfiguration, ist die Installation von Postfix Admin wie unter nachfolgendem internen Link dargestellt:
Hier sollen nachfolgend genanntes Modul und ebenfalls nachfolgend genanntes Backend zum Einsatz kommen:
- Modul:
auxprop
- Backend:
sql
pwcheck_method: auxprop auxprop_plugin: sql mech_list: DIGEST-MD5 CRAM-MD5 PLAIN LOGIN sql_engine: mysql sql_hostnames: db.tachtler.net sql_user: postfixuser sql_passwd: geheim sql_database: postfix sql_select: SELECT %p FROM mailbox WHERE username = '%u@%r' AND active = 1
Erklärung:
%p
=password
%u
= localpart@domain.tld%r
= localpart@domain.tld (realm
oderdomain-part
)
smtpd_sasl_auth_enable
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_sasl_auth_enable http://www.postfix.org/SASL_README.html |
Defaultwert | smtpd_sasl_auth_enable = no |
Neuer Wert | smtpd_sasl_auth_enable = yes |
Beschreibung | Aktiviert die Nutzung der SASL-Authentifizierung. |
WICHTIG - Falls die SASL-Authentifizierung nicht auf allen Ports angeboten werden soll, ist folgendes Vorgehen möglich!
Der Parameter smtpd_sasl_auth_enable
wird
- nicht in der Konfigurationsdatei
/etc/postfix/main.cf
- sondern in der Konfigurationsdatei
/etc/postfix/master.cf
durchgeführt.
Beispiel könnte hierfür sein, dies nur auf dem submission
-Port 587
anzubieten, wie nachfolgende mögliche Konfiguration zeigt:
(Nur relevanter Ausschnitt)
... # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== ... # Tachtler - enabled - submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING ...
smtpd_sasl_local_domain
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_sasl_local_domain http://www.postfix.org/SASL_README.html |
Defaultwert | smtpd_sasl_local_domain = |
Neuer Wert | smtpd_sasl_local_domain = $mydomain |
Beschreibung | Der Name des lokalen SASL-Authentifizierungsbereich. |
smtpd_sasl_security_options
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_sasl_security_options http://www.postfix.org/SASL_README.html |
Defaultwert | smtpd_sasl_security_options = noanonymous |
Neuer Wert | smtpd_sasl_security_options = noanonymous, noplaintext |
Beschreibung | Die SMTP-Server SASL Sicherheitsoptionen. HINWEIS - Diese sind jedoch Abhängig davon, welche SASL-Authentifizierungsmethode genutzt wird |
interne Links | Postfix CentOS 7 - SASL-Konfiguration |
Nachfolgende Tabelle zeigt die Möglichkeiten:
Option | Beschreibung |
---|---|
noplaintext | Verbietet Methoden, die Klartext-Passwörter zu verwenden. |
noactive | Verbietet Methoden die einem aktiven (nicht-Wörterbuch) Angriff unterliegen. |
nodictionary | Verbietet Methoden die einem passiven (Wörterbuch) Angriff unterliegen. |
noanonymous | Verbietet Methoden, die anonyme Authentifizierung ermöglichen. |
forward_secrecy | Erlauben nur Methoden, die „Forward Secrecy“ unterstützen (nur Dovecot). |
mutual_auth | Erlauben nur Methoden, die gegenseitige Authentifizierung zur Verfügung stellen. (nicht in Cyrus SASL-Version 1) |
smtpd_sasl_tls_security_options
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_sasl_tls_security_options http://www.postfix.org/SASL_README.html |
Defaultwert | smtpd_sasl_tls_security_options = $smtpd_sasl_security_options |
Neuer Wert | smtpd_sasl_tls_security_options = noanonymous |
Beschreibung | Die SMTP-Server SASL Sicherheitsoptionen. HINWEIS - Diese sind jedoch Abhängig davon, welche SASL-Authentifizierungsmethode genutzt wird |
interne Links | Postfix CentOS 7 - SASL-Konfiguration Postfix CentOS 7 - SASL-Konfiguration - smtpd_sasl_security_options |
Nachfolgende Tabelle zeigt die Möglichkeiten:
Option | Beschreibung |
---|---|
noplaintext | Verbietet Methoden, die Klartext-Passwörter zu verwenden. |
noactive | Verbietet Methoden die einem aktiven (nicht-Wörterbuch) Angriff unterliegen. |
nodictionary | Verbietet Methoden die einem passiven (Wörterbuch) Angriff unterliegen. |
noanonymous | Verbietet Methoden, die anonyme Authentifizierung ermöglichen. |
forward_secrecy | Erlauben nur Methoden, die „Forward Secrecy“ unterstützen (nur Dovecot). |
mutual_auth | Erlauben nur Methoden, die gegenseitige Authentifizierung zur Verfügung stellen. (nicht in Cyrus SASL-Version 1) |
HINWEIS - Die Nutzung von „Klartext“-Passwörtern soll hier bei einer TLS-Verschlüsselten Verbindung gestattet sein.
broken_sasl_auth_clients
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#broken_sasl_auth_clients http://www.postfix.org/SASL_README.html |
Defaultwert | broken_sasl_auth_clients = no |
Neuer Wert | broken_sasl_auth_clients = yes |
Beschreibung | Aktiviert die Interoperabilität mit Remote-SMTP-Clients, die eine veraltete Version der Befehle zu SMTP-AUTH (RFC 4954) implementiert haben. Beispiele für solche Clients sind Microsoft Outlook Express inklusive Version 6, Microsoft Outlook inklusive Version 2003 und Microsoft Exchange Version 5.0. |
SASL-Test via Telnet und OpenSSL
Unverschlüsselte Verbindung
Um einen Test der SASL-Authnetifizierung via Telnet durchzuführen, kann folgender Aufruf von telnet
genutzt werden:
# telnet mx1.tachtler.net 25 Trying 88.217.171.167... Connected to mx1.tachtler.net. Escape character is '^]'. 220 mx1.tachtler.net ESMTP Postfix ehlo mx1.tachtler.net 250-mx1.tachtler.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-AUTH DIGEST-MD5 CRAM-MD5 250-AUTH=DIGEST-MD5 CRAM-MD5 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.
Erforderliche Eingaben:
telnet mx1.tachtler.net 25
ehlo mx1.tachtler.net
quit
Nachfolgende Zeilen zeigen, welche SASL-Authentifizierungsmöglichkeiten von Postfix bei einem unverschlüsselten Verbindungsaufbau akzeptiert werden:
(Nur relevanter Ausschnitt):
250-AUTH DIGEST-MD5 CRAM-MD5 250-AUTH=DIGEST-MD5 CRAM-MD5
Verschlüsselte Verbindung
Um einen Test der SASL-Authnetifizierung via OpenSSL durchzuführen, kann folgender Aufruf von openssl
genutzt werden:
# openssl s_client -starttls smtp -connect mx1.tachtler.net:25 CONNECTED(00000003) depth=2 O = Root CA, OU = http://www.cacert.org, CN = CA Cert Signing Authority, emailAddress = support@cacert.org verify return:1 depth=1 O = CAcert Inc., OU = http://www.CAcert.org, CN = CAcert Class 3 Root verify return:1 depth=0 CN = *.tachtler.net verify return:1 --- Certificate chain 0 s:/CN=*.tachtler.net i:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root 1 s:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org 2 s:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org --- Server certificate -----BEGIN CERTIFICATE----- MIIE6jCCAtKgAwIBAgIDAi2HMA0GCSqGSIb3DQEBDQUAMFQxFDASBgNVBAoTC0NB Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTQwNDEwMTg1MjI5WhcNMTYwNDA5 MTg1MjI5WjAZMRcwFQYDVQQDFA4qLnRhY2h0bGVyLm5ldDCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPIpr+FMiLXlHD+z6n/Uc0GRVZs3HcYKpj4puYWp i/vgkZzJM7+YBgL8qXSeoAGRXttzk9s0LdjclLjF995ZKKsgcpVfWdF5GH97wzCY ZStQR19PWtSXauKVzTvWC8Kh2ZZkanr/0t7MtqBdJdxXHJhZIuA4Q9jiSWVggzx/ XoAbxdJNZHnZsyG3fptkwXFK/nyjEyBL+Z7kYObXcUP7psh3EZzn1bn6oss95oyr LQyubzRhJArEo9Josqtyh1cAgnvoesPQlbA+BxtJ9LoO94BfKwFw9Mw5Gnbhwbjx sgruuh+Ml8CZyFfbF9HsWRuRa1syRxIEzA+U01Lp3p0/uhUCAwEAAaOB/zCB/DAM BgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDA0BgNVHSUELTArBggrBgEFBQcD AgYIKwYBBQUHAwEGCWCGSAGG+EIEAQYKKwYBBAGCNwoDAzAzBggrBgEFBQcBAQQn MCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmNhY2VydC5vcmcvMDgGA1UdHwQx MC8wLaAroCmGJ2h0dHA6Ly9jcmwuY2FjZXJ0Lm9yZy9jbGFzczMtcmV2b2tlLmNy bDA3BgNVHREEMDAugg4qLnRhY2h0bGVyLm5ldKAcBggrBgEFBQcIBaAQDA4qLnRh Y2h0bGVyLm5ldDANBgkqhkiG9w0BAQ0FAAOCAgEAZqJtMOD7OVEb6VYhG6y8XEKg 9zgrvw+jDyAD6ehagA9SESCwFyfAsFYDe/2yclEqsmdAaBlRXY66pIZ98y/3vmZQ U1+TZ8TK6XoOku9TL1gZE/AOELdvMlFihtgnzj9mSaacEWgmvOoY9ELdDNpKQfHp JBEpOJcVvYpboFt2+LB0xlSCbz8+9ZCplOTX/awD395OMFuDFLNobglrDJwXpD94 AZfTRUN2jOhXV2EUe+yyjVVVr2WhGM07pIafHhYhQalXzLIIY416O/NtCfOl9lCT tzojDyeVdqtyeBMcDObPKCrOMy7dwQoF2EifcieCODS/7CCihVOz/cIV6j9mCL6I d/HblAQnUzGnYmUAfLje79t6PA/BVOOg2TE27rDqsmDxfj6+DbjiR8WRquzmBgda pp5I/mu7KB7ch4vnUJvMsAu5yvQ178syBUbadhRy3lsldpcTgwajMCyev2+7csRK dyKFk9l+FPxtu0frGm6CSKsxL+773PN7DTooYG2451hNBnQvk/SKt5AbknMQt3FV tqmIE4n7zenrehItSZocMdd3FHA6K6OKkWeDv1O6qL0bgVY7Yb8pCn2+/O2jux3z uZweHc6zFhfg8IfTL6MOlfZSWlMU+q452vIXnoLVIWyLgmLGcZyVgXaumCVXopMv 1L95vruMaWTlXcGVYQg= -----END CERTIFICATE----- subject=/CN=*.tachtler.net issuer=/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root --- No client certificate CA names sent Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 5924 bytes and written 410 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: 4D02CDDD12340CE6232BF5BAE267C1A3DBB43E6713DE452A33202DD8CF2FE837 Session-ID-ctx: Master-Key: 1DCE8AA00C4D1B52E334EBDD97993C8D89316FAEB87A4F51D76899B7799EF98A9D5279633C42E89AF4007C64FEFA4F85 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - ef d8 83 8f c6 d5 25 a7-ac 37 a2 b4 bd 0d 82 6d ......%..7.....m 0010 - 8d 0e 46 ae fb d9 9a c9-dc db ba 7c 00 a5 f6 a8 ..F........|.... 0020 - cd 89 47 d3 69 cf 0c 25-c1 0f 41 09 09 6c 6f 67 ..G.i..%..A..log 0030 - f8 34 62 54 5a bf 32 6e-43 7c 51 44 fe 5c 5a 37 .4bTZ.2nC|QD.\Z7 0040 - a3 91 ad 02 21 87 15 b1-4e 9f e2 dc 47 4f 21 30 ....!...N...GO!0 0050 - b9 23 52 08 08 00 af f8-ed 87 11 49 67 c0 37 4c .#R........Ig.7L 0060 - 49 78 4d 0b 7a 03 15 15-8d 26 e8 13 58 4b 92 66 IxM.z....&..XK.f 0070 - 3c 51 4f 65 ab f1 cf 99-1c 3d 47 ef aa 6a 3b ac <QOe.....=G..j;. 0080 - 48 66 4a d0 b3 9b 8e 38-d9 18 0e 93 84 ca b7 28 HfJ....8.......( 0090 - 0c 2f 6f 3b b4 08 76 39-cf e4 04 86 7c 2f 60 dd ./o;..v9....|/`. Start Time: 1440689713 Timeout : 300 (sec) Verify return code: 0 (ok) --- 250 DSN ehlo mx1.tachtler.net 250-mx1.tachtler.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN 250-AUTH=DIGEST-MD5 CRAM-MD5 PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye closed
Erforderliche Eingaben:
openssl s_client -starttls smtp -connect mx1.tachtler.net:25
ehlo mx1.tachtler.net
quit
Nachfolgende Zeilen zeigen, welche SASL-Authentifizierungsmöglichkeiten von Postfix bei einem verschlüsselten Verbindungsaufbau akzeptiert werden:
(Nur relevanter Ausschnitt):
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN 250-AUTH=DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
TLS-Konfiguration
Nachfolgend soll die Verwendung eines self-signed-certificates durchgeführt werden, was grundsätzlich zur Verschlüsselten Kommunikation ausreichend ist.
Falls höhere Ansprüche an die Güte des Zertifikats gestellt werden, sprich wenn dies überprüfbar sein soll, dann ist ggf. die Verwendung eines Zertifikates von einer offiziellen Zertifikzierungsstelle, welche auch entsprechend in den Betriebssystemen standardmäßig hinterlegt sind, erforderlich.
WICHTIG - Für nachfolgende Konfigurationsparameter gilt
smtp
d
_tls_
'… Konfigurationen stehen für den eingehenden (incoming) Verkehrsmtp_tls_
'… Konfigurationen stehen für den ausgehenden (outgoing) Verkehrlmtp_tls_
'… Konfigurationen stehen für den ausgehenden (outgoing) lokalen Verkehr
Zertifikat erstellen
Zuerst soll in aller Kürze ein Self-signed Certificate erstellt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj /CN=mail.tachtler.net -keyout /tmp/mail.tachtler.net.key -out /tmp/mail.tachtler.net.crt
Anschließend sollten im Verzeichnis /tmp
die nachfolgend genannten beiden Dateien liegen
/tmp/mail.tachtler.net.key
- SSL/TLS-Schlüssel-Datei/tmp/mail.tachtler.net.crt
- SSL/TLS-Zertifikats-Datei
Ob die Datein richtig erstellt worden sind, kann mit nachfolgendem Befehl überprüft werden:
# ll /tmp/mail.tachtler.net.* -rw-r--r-- 1 root root 1115 Mar 24 15:20 /tmp/mail.tachtler.net.crt -rw-r--r-- 1 root root 1708 Mar 24 15:20 /tmp/mail.tachtler.net.key
Wie das Zertifikat inhaltlich ausgestellt wurde, kann mit dem folgenden Befehl überprüft werden:
# openssl x509 -noout -text -in /tmp/mail.tachtler.net.crt Certificate: Data: Version: 3 (0x2) Serial Number: 11521682945659409234 (0xa008d4934c7avaa2) Signature Algorithm: sha1WithRSAEncryption Issuer: CN=mail.tachtler.net Validity Not Before: Mar 23 14:20:59 2014 GMT Not After : Mar 20 14:20:59 2024 GMT Subject: CN=mail.tachtler.net Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:d3:f2:34:76:ee:75:b4:b0:b2:92:a0:7e:53:3b: cc:b2:c5:3d:d5:b0:42:20:16:29:a1:96:f5:d6:47: d7:dd:1c:9a:9a:33:b6:f0:67:8e:15:f8:ca:b3:16: 9f:85:1a:b8:e5:72:a0:30:c7:12:0a:58:f9:60:d0: 15:0a:38:87:17:5a:41:d7:c3:70:04:5e:77:a0:bf: 50:2b:11:8d:fa:2b:3b:1c:da:e0:2a:16:79:5b:54: ac:c3:9e:a9:52:78:50:5a:6c:bb:09:79:64:47:de: ef:41:91:f8:dc:b7:a6:3f:12:02:9e:d8:28:60:e1: dd:d7:5b:9a:e5:84:bb:c0:40:62:fb:bb:e5:87:17: 71:d4:39:5a:43:32:ed:2d:13:41:73:73:7d:2c:71: a2:da:de:51:83:bd:70:18:65:37:6a:3e:75:43:d9: 4e:1d:36:34:1f:c3:4a:b6:4e:8d:32:da:b0:04:a3: df:c5:b9:3a:6f:85:84:93:96:a2:e4:34:75:70:a2: 30:99:46:8e:cd:cf:da:7e:09:6e:b3:89:a1:dd:43: af:ff:0a:8d:94:e4:1d:2b:3b:95:23:4c:b5:f8:77: 7a:e3:60:46:a8:d2:f6:e8:dc:db:36:f5:ae:47:f9: dd:68:25:bd:80:ac:dd:6f:c4:d6:3d:9e:0d:78:79: 1f:d5 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: F6:5E:43:5D:CB:BB:BE:6C:EE:D8:46:B1:13:3A:27:5E:14:4B:F1:25 X509v3 Authority Key Identifier: keyid:F6:5E:48:5D:CB:BC:BE:6C:BD:D8:76:B1:13:3A:27:5E:14:4B:F1:25 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 65:cc:20:e9:cc:01:fd:8e:d9:4d:61:f4:70:f3:c7:5e:ef:9b: 7f:d8:db:4c:d6:46:40:34:da:b4:b0:9a:12:05:02:df:3b:37: ea:09:7d:8e:c0:c0:ca:f7:4e:59:20:63:d8:26:b2:81:ed:85: f5:1d:9e:7b:28:59:42:1d:8a:f5:e1:a7:a8:ad:81:dc:93:46: 85:c8:2b:4f:05:c9:64:77:b1:76:39:d5:8d:91:b8:65:03:a4: 50:c0:19:a8:03:48:4d:70:33:81:45:a4:12:6b:c6:06:39:98: 92:1f:4c:ec:40:97:22:a7:8e:17:ce:19:53:47:6f:05:0e:f5: cb:e6:a5:a2:a9:3a:61:b1:0a:07:f2:51:b1:d1:19:2c:b5:82: 95:3f:a7:8e:3c:e7:01:0f:ad:60:c3:7e:a5:bf:a8:11:6b:73: 84:0d:e2:06:f1:01:48:e1:72:f8:30:58:09:66:20:c1:a4:ce: c0:3d:23:12:7f:4f:35:2a:f2:54:01:5e:99:06:c5:77:45:e5: 00:da:4a:28:b2:fd:b0:62:77:eb:05:fe:2a:53:30:ce:de:4f: dd:18:8f:9d:3c:27:8f:e6:22:f4:ec:fd:f5:15:81:af:5e:53: d5:a7:31:52:16:90:e0:e8:00:21:7d:53:d0:64:60:23:99:23: 8e:92:51:77
Anschließend sollte der Speicherort für die SSL/TLS-Schlüssel-Datei und die SSL/TLS-Zertifikats-Datei gewählt werden, welcher die Verzeichnisse
/etc/pki/postfix/certs/
und/etc/pki/postfix/private
sein könnten und mit nachfolgendem Befehl erstellt werden können:
mkdir -p /etc/pki/postfix/{certs,private}
Mit nachfolgenden Befehlen können nun die Dateien in das jeweils richtige Verzeichnis kopiert werden:
# mv /tmp/mail.tachtler.net.crt /etc/pki/postfix/certs/ # mv /tmp/mail.tachtler.net.key /etc/pki/postfix/private/
Anschließend sollten nun die Dateirechte der SSL/TLS-Schlüssel-Datei wie nachfolgend beschrieben durchgeführt werden:
# chmod 400 /etc/pki/postfix/private/mail.tachtler.net.key
Zum Abschluß kann mit nachfolgendem Befehl berprüft werden, ob die Dateien im jeweils richtigen Verzeichnis gelandet sind und die richtigen dateirechte haben:
# ls -l /etc/pki/postfix/* /etc/pki/postfix/certs: total 8 -rw-r--r-- 1 root root 1115 Mar 23 15:20 mail.tachtler.net.crt /etc/pki/postfix/private: total 8 -r-------- 1 root root 1708 Mar 23 15:20 mail.tachtler.net.key
plaintext_reject_code
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#plaintext_reject_code |
Defaultwert | plaintext_reject_code = 450 |
Neuer Wert | plaintext_reject_code = 550 |
Beschreibung | Der numerische Postfix SMTP-Server-Antwortcode, wenn eine Anforderung von der reject_plaintext_session Einschränkung abgelehnt wird. |
interner Link | Postfix CentOS 7 - Restrictions-Konfigurationen - check_sender_access |
smtpd_tls_ask_ccert
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_ask_ccert |
Defaultwert | smtpd_tls_ask_ccert = no |
Neuer Wert | smtpd_tls_ask_ccert = yes |
Beschreibung | Aktiviert die Nachfrage an einen Remote-SMTP-Client, ob dieser ein Client-Zertifikat präsentieren kann. Diese Informationen kommt bei zertifikatsbasierte Mail-Verkehr zum Einsatz. |
(l|s)mtp(d)_tls_CAfile
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_CAfile http://www.postfix.org/postconf.5.html#smtp_tls_CAfile http://www.postfix.org/postconf.5.html#lmtp_tls_CAfile |
Defaultwert | smtpd_tls_CAfile = smtp_tls_CAfile = lmtp_tls_CAfile = |
Neuer Wert | smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt lmtp_tls_CAfile = $smtp_tls_CAfile |
Beschreibung | Eine Datei mit im (PEM-Format) abgelegten ROOT-CA-Zertifikate der vertrauenswürdigen Stammzertifizierungsstellen, entweder Remote-SMTP-Client-Zertifikate oder Zwischen ROOT-CA-Zertifikate. |
smtpd_tls_cert_file
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_cert_file |
Defaultwert | smtpd_tls_cert_file = |
Neuer Wert | smtpd_tls_cert_file = /etc/pki/postfix/certs/mail.tachtler.net.crt |
Beschreibung | Die Datei mit dem Zertifikat im PEM-Format. |
smtpd_tls_key_file
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_key_file |
Defaultwert | smtpd_tls_key_file = $smtpd_tls_cert_file |
Neuer Wert | smtpd_tls_key_file = /etc/pki/postfix/private/mail.tachtler.net.key |
Beschreibung | Die Datei mit dem Schlüssel im PEM-Format. |
(l|s)mtp(d)_tls_ciphers
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_ciphers http://www.postfix.org/postconf.5.html#smtp_tls_ciphers http://www.postfix.org/postconf.5.html#lmtp_tls_ciphers |
Defaultwert | smtpd_tls_ciphers = medium smtp_tls_ciphers = medium lmtp_tls_ciphers = medium |
Neuer Wert | smtpd_tls_ciphers = high smtp_tls_ciphers = high lmtp_tls_mandatory_ciphers = $smtp_tls_ciphers |
Beschreibung | Der Standard TLS Verschlüsselungsgrad. |
Nachfolgende Tabelle spezifiziert die einzelnen Verschlüsselungsgrad Einstellungen:
Verschlüsselungsgrad | Parameter |
---|---|
export | tls_export_cipherlist = aNULL:-aNULL:ALL:+RC4:@STRENGTH |
low | tls_low_cipherlist = aNULL:-aNULL:ALL:!EXPORT:+RC4:@STRENGTH |
medium | tls_medium_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH |
high | tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH |
null | tls_null_cipherlist = eNULL:!aNULL |
Alle Verschlüsselungsgrad Einstellungen haben eine Parameter in dem die verschiedenen Verschlüsselungsarten festgelegt werden können, diese sollten jedoch nicht abgeändert werden!
smtpd_tls_dh512_param_file smtpd_tls_dh1024_param_file
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_dh1024_param_file http://www.postfix.org/postconf.5.html#smtpd_tls_dh512_param_file |
Defaultwert | smtpd_tls_dh512_param_file = smtpd_tls_dh1024_param_file = |
Neuer Wert | smtpd_tls_dh512_param_file = /etc/pki/postfix/private/dh_512.pem smtpd_tls_dh1024_param_file = /etc/pki/postfix/private/dh_2048.pem |
Beschreibung | Datei mit DH Parameter, welche mit nicht-Export EDH Chiffren verwenden werden. |
HINWEIS - Es ist kein Schreibfehler
smtpd_tls_dh1024_param_file = /etc/pki/postfix/private/dh_2048.pem
smtpd_tls_eecdh_grade
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_eecdh_grade |
Defaultwert | smtpd_tls_eecdh_grade = strong |
Neuer Wert | smtpd_tls_eecdh_grade = ultra |
Beschreibung | Die Sicherheitsstufe für ephemere Ellipsenkurven- Diffie-Hellman (EECDH) Schlüsselaustausch. |
Stufe | Beschreibung |
---|---|
none | Deaktiviert die Nutzung von EECDH Chiffren basierend auf einem EECDH Schlüsselaustausch. |
strong | Verwenden EECDH mit 128 Bit. Dies ist der „Best-Practice“-Kompromiss zwischen Sicherheit und Recheneffizienz. |
ultra | Verwenden EECDH mit 192 Bit. Der Rechenaufwand beträgt etwa das doppelte wie bei 128 Bit. Abgesehen von den erheblichen Fortschritten, bei Angriffen auf elliptischen Kurven Kryptosysteme, ist die „starke“ Kurve ausreichend, für die meisten Anwender. |
(l|s)mtp(d)_tls_exclude_ciphers
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers http://www.postfix.org/postconf.5.html#smtp_tls_exclude_ciphers http://www.postfix.org/postconf.5.html#lmtp_tls_exclude_ciphers |
Defaultwert | smtpd_tls_exclude_ciphers = smtp_tls_mandatory_exclude_ciphers = lmtp_tls_mandatory_exclude_ciphers = |
Neuer Wert | smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA smtp_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA lmtp_tls_mandatory_exclude_ciphers = $smtp_tls_exclude_ciphers |
Beschreibung | Liste der Chiffren oder Verschlüsselungstypen die von den SMTP-Server Sicherheitsstufen auszuschließen sind. |
HINWEIS - Siehe auch nachfolgenden externen Link:
(l|s)mtp(d)_tls_loglevel
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_loglevel http://www.postfix.org/postconf.5.html#smtp_tls_loglevel http://www.postfix.org/postconf.5.html#lmtp_tls_loglevel |
Defaultwert | smtpd_tls_loglevel = 0 smtp_tls_loglevel = 0 lmtp_tls_loglevel = 0 |
Neuer Wert | smtpd_tls_loglevel = 1 smtp_tls_loglevel = 1 lmtp_tls_loglevel = $smtp_tls_loglevel |
Beschreibung | Setzen des LOG-Ausgabe Tiefe. |
Nachfolgende Tabelle spezifiziert die einzelnen LOG-Ausgabe Tiefen:
LOG-Ausgabe Tiefe | Beschreibung |
---|---|
0 | Protokollierung von TLS-Aktivität ist deaktiviert. |
1 | Zusammenfassung nach dem der TLS-Handshake abgeschlossen ist - keine Protokollierung von Client-Zertifikat oder Verifikationsfehlern in der Zertifikatskette, wenn keine Überprüfung des Client-Zertifikat erforderlich ist. |
2 | Ausgabe zusätzlicher Informationen, die während des TLS-Handshake entstehen. |
3 | Ausgabe zusätzlicher Informationen, die während des TLS-Handshake entstehen inklusive eines hexadezimalen ASCII-Dumps. |
4 | Ausgabe zusätzlicher Informationen, über den kompletten Verbindunsgaufbau, inklusive eines hexadezimalen ASCII-Dumps. |
(l|s)mtp(d)_tls_mandatory_ciphers
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_ciphers http://www.postfix.org/postconf.5.html#smtp_tls_mandatory_ciphers http://www.postfix.org/postconf.5.html#lmtp_tls_mandatory_ciphers |
Defaultwert | smtpd_tls_mandatory_ciphers = medium smtp_tls_mandatory_ciphers = medium lmtp_tls_mandatory_ciphers = medium |
Neuer Wert | smtpd_tls_mandatory_ciphers = high smtp_tls_mandatory_ciphers = high lmtp_tls_mandatory_ciphers = $smtp_tls_mandatory_ciphers |
Beschreibung | Der Standard TLS Verschlüsselungsgrad. |
interne Links | Postfix CentOS 7 - TLS-Konfiguration - (l|s)mtp(d)_tls_mandatory_exclude_ciphers |
Nachfolgende Tabelle spezifiziert die einzelnen Verschlüsselungsgrad Einstellungen:
Verschlüsselungsgrad | Parameter |
---|---|
export | tls_export_cipherlist = aNULL:-aNULL:ALL:+RC4:@STRENGTH |
low | tls_low_cipherlist = aNULL:-aNULL:ALL:!EXPORT:+RC4:@STRENGTH |
medium | tls_medium_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH |
high | tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH |
null | tls_null_cipherlist = eNULL:!aNULL |
Alle Verschlüsselungsgrad Einstellungen haben eine Parameter in dem die verschiedenen Verschlüsselungsarten festgelegt werden können, diese sollten jedoch nicht abgeändert werden!
(l|s)mtp(d)_tls_mandatory_exclude_ciphers
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_exclude_ciphers http://www.postfix.org/postconf.5.html#smtp_tls_mandatory_exclude_ciphers http://www.postfix.org/postconf.5.html#lmtp_tls_mandatory_exclude_ciphers |
Defaultwert | smtpd_tls_mandatory_exclude_ciphers = smtp_tls_mandatory_exclude_ciphers = lmtp_tls_mandatory_exclude_ciphers = |
Neuer Wert | smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA smtp_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA lmtp_tls_mandatory_exclude_ciphers = $smtp_tls_mandatory_exclude_ciphers |
Beschreibung | Liste der Chiffren oder Verschlüsselungstypen die von den obligatorischen TLS Sicherheitsstufen auszuschließen sind. |
interne Links | Postfix CentOS 7 - TLS-Konfiguration - (l|s)mtp(d)_tls_mandatory_ciphers |
HINWEIS - Siehe auch nachfolgenden externen Link:
(l|s)mtp(d)_tls_mandatory_protocols
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_protocols http://www.postfix.org/postconf.5.html#smtp_tls_mandatory_protocols http://www.postfix.org/postconf.5.html#lmtp_tls_mandatory_protocols |
Defaultwert | smtpd_tls_mandatory_protocols = !SSLv2 smtp_tls_mandatory_protocols = !SSLv2 lmtp_tls_mandatory_protocols = !SSLv2 |
Neuer Wert | smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3 smtp_tls_mandatory_protocols = !SSLv2,!SSLv3 lmtp_tls_mandatory_protocols = $smtp_tls_mandatory_protocols |
Beschreibung | Die SSL/TLS-Protokolle welche verbindlichen zur TLS-Verschlüsselung akzeptiert werden. |
(l|s)mtp(d)_tls_protocols
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_protocols http://www.postfix.org/postconf.5.html#smtp_tls_protocols http://www.postfix.org/postconf.5.html#lmtp_tls_protocols |
Defaultwert | smtpd_tls_protocols = !SSLv2 smtp_tls_protocols = !SSLv2 lmtp_tls_protocols = !SSLv2 |
Neuer Wert | smtpd_tls_protocols = !SSLv2,!SSLv3 smtp_tls_protocols = !SSLv2,!SSLv3 lmtp_tls_protocols = $smtp_tls_protocols |
Beschreibung | Die TLS-Protokolle, die ausschließen oder mit opportunistischen TLS-Verschlüsselung verwendet werden sollen. |
smtpd_tls_received_header
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_received_header |
Defaultwert | smtpd_tls_received_header = no |
Neuer Wert | smtpd_tls_received_header = yes |
Beschreibung | Aktiviert das Nachrichtenkopfzeilen, Informationen über das Protokoll und Verschlüsselung als auch der Remote-SMTP-Client CommonName und der Client-Zertifikat Aussteller mit in den Received-Zeilen ausgegeben werden. |
(l|s)mtp(d)_tls_security_level
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_tls_security_level http://www.postfix.org/postconf.5.html#smtp_tls_security_level http://www.postfix.org/postconf.5.html#lmtp_tls_security_level |
Defaultwert | smtpd_tls_security_level = smtp_tls_security_level = lmtp_tls_security_level = |
Neuer Wert | smtpd_tls_security_level = may smtp_tls_security_level = may lmtp_tls_security_level = $smtp_tls_security_level |
Beschreibung | Diese Angabe sorgt erst überhaupt dafür, das die TLS-Verschlüsselung aktiviert wird! Nachfolgender Grad der geforderten TLS-Verschlüsselung kann hierbei angegeben werden. |
Nachfolgende Tabelle spezifiziert die geforderte TLS-Verschlüsselung:
Verschlüsselung | Beschreibung |
---|---|
none | TLS-Verschlüsselung ist deaktiviert. |
may | Opportunistisches TLS-Verschlüsselung: Fordert Clients auf STARTTLS zu nutzen, aber besteht nicht daruf, dass Clients die TLS-Verschlüsselung verwenden. |
encrypt | Verpflichtende TLS-Verschlüsselung: Fordert Clients auf STARTTLS zu nutzen und besteht darauf, dass Clients die TLS-Verschlüsselung verwenden. |
(l|s)mtp_tls_note_starttls_offer
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtp_tls_note_starttls_offer http://www.postfix.org/postconf.5.html#lmtp_tls_note_starttls_offer |
Defaultwert | smtp_tls_note_starttls_offer = no lmtp_tls_note_starttls_offer = no |
Neuer Wert | smtp_tls_note_starttls_offer = yes lmtp_tls_note_starttls_offer = $smtp_tls_note_starttls_offer |
Beschreibung | Erzeugt eine LOG-Meldung über den Hostnamen des Remote-SMTP-Server, der STARTTLS anbietet, falls TLS nicht bereits für diesen Server aktiviert wurde. |
tls_preempt_cipherlist
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#tls_preempt_cipherlist |
Defaultwert | tls_preempt_cipherlist = no |
Neuer Wert | tls_preempt_cipherlist = yes |
Beschreibung | Ab SSLv3 und höher verwenden Chiffre Präferenzordnung von Postfix und nicht die Cipher Präferenzordnung des entfernten Clients. |
tls_random_bytes
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#tls_random_bytes |
Defaultwert | tls_random_bytes = 32 |
Neuer Wert | tls_random_bytes = 128 |
Beschreibung | Die Anzahl der Bytes, die tlsmgr aus tls_random_source beim (Wieder-)generieren der In-Memory-Pseudozufallszahlengenerator (PRNG) Pool verwendet. |
TLS-Policies-Konfiguration
Die Konfiguration von TLS kann nicht nur golobal Konfiguriert werden, sondern auch Client/Host bezogen durchgeführt werden, z.B.
- Bei ausgehenden e-Mails an Host A muss zwingend TLS genutzt werden
- Bei ausgehenden e-Mails an Host B darf nicht TLS genutzt werden (weil dieser die nicht kann)
- Bei ausgehenden e-Mails an C soll, muss aber nicht TLS genutzt werden
(l|s)mtp_tls_policy_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps http://www.postfix.org/postconf.5.html#lmtp_tls_policy_maps |
Defaultwert | smtp_tls_policy_maps = lmtp_tls_policy_maps = |
Neuer Wert | smtp_tls_policy_maps = btree:/etc/postfix/smtp_tls_policy_maps lmtp_tls_policy_maps = btree:/etc/postfix/lmtp_tls_policy_maps |
Beschreibung | Legt für die Kommunikation von Postfix mit anderen Clients/Host die Art der Verschlüsselung fest, die für diesen Client/Host gelten sollen. |
interner Link | Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_fingerprint_digest |
Als Beispiel soll der Austausch von e-Mails mit dem Host 217.91.103.190
nur noch verschlüsselt, oder gar nicht statt finden.
Nachfolgende Tabelle zeigt die möglichen Arten der Verschlüsselung, welche konfiguriert werden können:
Art der Verschlüsselung | Beschreibung |
---|---|
none | Keine Verschlüsselung |
may | Opportunistisches TLS. Hierbei wäre das Senden einer e-Mail als Klartext akzeptabel, jedoch würde versucht werden eine e-Mail via TLS-Verschlüsselung auszutauschen. Mögliche optionale Attribute wie „Chiffren“, „Ausschlüsse von Chriffren“ und „Protokolle“ (beim opportunistischen TLS mit Postfix ≥ 2.6) überschreiben die Konfigurationsparameter smtp_tls_ciphers , smtp_tls_exclude_ciphers und smtp_tls_protocols . Wenn ein opportunistischer TLS-Handshake fehlschlägt, versucht Postfix die Verbindung via deaktiviert TLS durchzuführen. Dies ermöglicht den Postversand auch mit nicht-interoperablen TLS-Implementierungen. |
encrypt | Pflicht TLS-Verschlüsselung. Hierbei wäre das Senden einer e-Mail als Klartext inakzeptabel. Mögliche optionale Attribute wie „Chiffren“, „Ausschlüsse von Chriffren“ und „Protokolle“ (beim opportunistischen TLS mit Postfix ≥ 2.6) überschreiben die Konfigurationsparameter smtp_tls_ciphers , smtp_tls_exclude_ciphers und smtp_tls_protocols . Wenn ein opportunistischer TLS-Handshake fehlschlägt, findet auch kein Postversand statt. |
dane | Opportunistische DANE TLS. Die TLS-Vorgaben für das Ziel, werden über TLSA Datensätze via DNSSEC ermittelt. Wenn keine TLSA Datensätze gefunden werden, ist die effektive Sicherheitsstufe welche verwendet werden kann may . Wenn TLSA Datensätze gefunden werden, aber keine verwendbar sind, wird die effektive Sicherheitsstufe welche verwendet werden kann encrypt . Werden nutzbare TLSA Datensätze für den Remote-SMTP-Server gefunden, muss das Server-Zertifikat mit den TLSA Datensätze übereinstimmen. RFC 6698 (DANE) TLS-Authentifizierung und DNSSEC-Unterstützung ab Postfix 2.11 und höher. |
dane-only | Pflicht DANE TLS. Die TLS-Vorgaben für das Ziel, werden über TLSA Datensätze via DNSSEC ermittelt. Wenn keine TLSA Datensätze gefunden werden oder keine verwendbaren zu finden sind, wird keine Verbindung zu dem Server hergestellt. Werden nutzbare TLSA Datensätze für den Remote-SMTP-Server gefunden, muss das Server-Zertifikat mit den TLSA Datensätze übereinstimmen. RFC 6698 (DANE) TLS-Authentifizierung und DNSSEC-Unterstützung ab Postfix 2.11 und höher. |
fingerprint | Zertifikatsüberprüfung anhand des Zertifikats Fingerabdrucks (fingerprint). Ab Postfix 2.5 und höher. Bei dieser Sicherheitsstufe gibt es keine vertrauenswürdigen Zertifizierungsstellen. Der Zertifikatsvertrauenskette, Ablaufdatum, usw. werden nicht überprüft. Stattdessen wird der fingerprint, oder aber der Parameter smtp_tls_fingerprint_cert_match herangezogen, um die gültigen des Serverzertifikat zu überprüfen. Welcher Digest-Algorithmus verwendet wird, um den Fingerabdruck zu berechnen, wird im Parameter smtp_tls_fingerprint_digest gesetzt. |
verify | Pflicht TLS Verifikation. Bei dieser Sicherheitsstufe, bei der DNS-MX-Lookups vertraut wird, um sicher genug zu sein, wird der Name im Serverzertifikat überprüft, welcher in der Regel indirekt über authentifizierten DNS-MX-Lookups ermitelt wird. Das optionale „match“ Attribut überschreibt die im Parameter smtp_tls_verify_cert_match genannten Attribute. In der Richtlinientabelle, müssen mehrere Match-Muster und Strategien durch Doppelpunkte getrennt werden. |
secure | Sichere-Kanal-TLS. Bei dieser Sicherheitsstufe, werden DNS MX-Lookups verwendet, um die Client-Next-Hop-Gateway-IP-Adressen zu bestimmen. Ist dies nicht vertrauenswürdig bzw. sicher genug um einen TLS Peername sicher zu ermittel, wird stattdessen der Standardnamen im Serverzertifikat überprüft, welcher direkt aus dem nächsten Hop ermittelt wurde, oder explizit über das optionale Attribut „match“ überschreibt die im Parameter smtp_tls_secure_cert_match genannten Attribute. In der Richtlinientabelle, müssen mehrere Match-Muster und Strategien durch Doppelpunkte getrennt werden. |
Dafür können z.B. die neue Konfigurationsdateien
/etc/postfix/smtp_tls_policy_maps
/etc/postfix/lmtp_tls_policy_maps
mit folgenden Befehlen neu zu erstellen:
# touch /etc/postfix/smtp_tls_policy_maps # touch /etc/postfix/lmtp_tls_policy_maps
Danach könnte der Inhalt wie folgt aussehen (hier nur /etc/postfix/smtp_tls_policy_maps
):
nausch.org fingerprint match=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Zum Abschluss müssen die Konfigurationsdateien in ein Datenbank-Format, z.B. das Format btree
mithilfe des Postfix eigenen Befehls postmap
umgewandelt werden, wie nachfolgende Befehle zeigen:
# postmap btree:/etc/postfix/smtp_tls_policy_maps # postmap btree:/etc/postfix/lmtp_tls_policy_maps
Anschließend sollte zwei neue Dateien mit den Namen /etc/postfix/smtp_tls_policy_maps.db
und /etc/postfix/lmtp_tls_policy_maps.db
entstanden sein, was mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/postfix/*mtp_tls_policy_maps* -rw-r--r-- 1 root root 0 Oct 4 14:51 /etc/postfix/lmtp_tls_policy_maps -rw-r--r-- 1 root root 8192 Oct 4 14:52 /etc/postfix/lmtp_tls_policy_maps.db -rw-r--r-- 1 root root 94 Oct 4 14:52 /etc/postfix/smtp_tls_policy_maps -rw-r--r-- 1 root root 8192 Oct 4 14:52 /etc/postfix/smtp_tls_policy_maps.db
HINWEIS - Um den fingerprint
eines Zertifikats zu ermitteln, welches von einem e-Mail-Server angeboten wird, kann nachfolgender Befehl genutzt werden:
# openssl s_client -starttls smtp -connect mx01.nausch.org:25 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin SHA1 Fingerprint=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2
(l|s)mtp_dns_support_level
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtp_dns_support_level http://www.postfix.org/postconf.5.html#smtp_dns_support_level |
Defaultwert | smtp_dns_support_level = lmtp_dns_support_level = |
Neuer Wert | smtp_dns_support_level = dnssec lmtp_dns_support_level = dnssec |
Beschreibung | Legt für die Kommunikation von Postfix mit anderen Clients/Host fest, ob die Verschlüsselung dane, dane-only , die für diesen Client/Host geprüft werden kann. |
interner Link | Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_policy_maps Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_fingerprint_digest |
Falls in den neue Konfigurationsdateien
/etc/postfix/smtp_tls_policy_maps
/etc/postfix/lmtp_tls_policy_maps
ein Eintrag mit
dane
oderdane-only
enthalten ist, wie nachfolgend dargestellt (hier nur /etc/postfix/smtp_tls_policy_maps
):
# nausch.org fingerprint match=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2 nausch.org dane-only
MUSS zwingend auch
smtp_dns_support_level = dnssec
bzw.lmtp_dns_support_level = dnssec
gesetzt werden, da sonst nachfolgende Fehlermeldung im LOG erscheint (nur relevanter Ausschnitt):
... ...warning: nausch.org: dane-only configured with dnssec lookups disabled ...warning: TLS policy lookup for nausch.org/mx01.nausch.org: client TLS configuration problem ...
(l|s)mtp_tls_fingerprint_digest
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtp_tls_fingerprint_digest http://www.postfix.org/postconf.5.html#lmtp_tls_fingerprint_digest |
Defaultwert | smtp_tls_fingerprint_digest = md5 lmtp_tls_fingerprint_digest = md5 |
Neuer Wert | smtp_tls_fingerprint_digest = sha1 lmtp_tls_fingerprint_digest = sha1 |
Beschreibung | Angabe des Algorithmus welcher verwendet werden soll, um bei einem Remote-SMTP-Server-Zertifikat den fingerprint (Fingerabdruck) zu ermitteln. |
interner Link | Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_policy_maps |
dh_param_file-update-Skript
Zur Erstellung und Aktualisieren der drei Schlüssel-Dateien
/etc/pki/postfix/private/dh_512.pem
/etc/pki/postfix/private/dh_1024.pem
/etc/pki/postfix/private/dh_2048.pem
kann nachfolgendes Skript verwendet werden, welches z.B. täglich, oder einmal in der Woche laufen sollte:
#!/bin/bash ############################################################################## # Script-Name : dh_param_file-update.sh # # Description : Renew the Diffie-Hellman parameter file for Postfix under # # the path # # - dh_512.pem # # - dh_1024.pem # # - dh_2048.pem # # # # Last update : 28.08.2015 # # Version : 1.00 # ############################################################################## ############################################################################## # H I S T O R Y # ############################################################################## # Version : x.xx # # Description : <Description> # # -------------------------------------------------------------------------- # # Version : x.xx # # Description : <Description> # # -------------------------------------------------------------------------- # ############################################################################## # Source function library. . /etc/init.d/functions # Variable declarations. ############################################################################## # >>> Please edit following lines for personal command and/or configuration! # ############################################################################## # CUSTOM - Script-Name. SCRIPT_NAME='dh_param_file_update.sh' # CUSTOM - PATH/FILE/PARAMETER variables. PARAM_DIR="/etc/pki/postfix/private" PARAM_DH512_FILE="dh_512.pem" PARAM_DH1024_FILE="dh_1024.pem" PARAM_DH2048_FILE="dh_2048.pem" # CUSTOM - Binary. BINARY_POSTFIX_PATH="postfix.service" BINARY_OPENSSL_PATH='/usr/bin/openssl' # CUSTOM - Mail-Recipient. MAIL_RECIPIENT='postmaster@tachtler.net' # CUSTOM - Status-Mail [Y|N]. MAIL_STATUS='N' ############################################################################## # >>> Normaly there is no need to change anything below this comment line. ! # ############################################################################## # Variables. TOUCH_COMMAND=`command -v touch` MV_COMMAND=`command -v mv` RM_COMMAND=`command -v rm` CAT_COMMAND=`command -v cat` DATE_COMMAND=`command -v date` MKDIR_COMMAND=`command -v mkdir` PROG_SENDMAIL=`command -v sendmail` CHOWN_COMMAND=`command -v chown` CHMOD_COMMAND=`command -v chmod` FILE_LOCK='/tmp/'$SCRIPT_NAME'.lock' FILE_LOG='/var/log/'$SCRIPT_NAME'.log' FILE_LAST_LOG='/tmp/'$SCRIPT_NAME'.log' FILE_MAIL='/tmp/'$SCRIPT_NAME'.mail' VAR_HOSTNAME=`uname -n` VAR_SENDER='root@'$VAR_HOSTNAME VAR_EMAILDATE=`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%Z)'` # Functions. function log() { echo $1 echo `$DATE_COMMAND '+%Y/%m/%d %H:%M:%S'` " INFO:" $1 >>${FILE_LAST_LOG} } function retval() { if [ "$?" != "0" ]; then case "$?" in *) log "ERROR: Unknown error $?" ;; esac fi } function movelog() { $CAT_COMMAND $FILE_LAST_LOG >> $FILE_LOG $RM_COMMAND -f $FILE_LAST_LOG $RM_COMMAND -f $FILE_LOCK } function sendmail() { case "$1" in 'STATUS') MAIL_SUBJECT='Status execution '$SCRIPT_NAME' script.' ;; *) MAIL_SUBJECT='ERROR while execution '$SCRIPT_NAME' script !!!' ;; esac $CAT_COMMAND <<MAIL >$FILE_MAIL Subject: $MAIL_SUBJECT Date: $VAR_EMAILDATE From: $VAR_SENDER To: $MAIL_RECIPIENT MAIL $CAT_COMMAND $FILE_LAST_LOG >> $FILE_MAIL $PROG_SENDMAIL -f $VAR_SENDER -t $MAIL_RECIPIENT < $FILE_MAIL $RM_COMMAND -f $FILE_MAIL } # Main. log "" log "+-----------------------------------------------------------------+" log "| Start update generating the Diffie-Hellman dh_param_file files. |" log "+-----------------------------------------------------------------+" log "" log "Run script with following parameter:" log "" log "SCRIPT_NAME...........: $SCRIPT_NAME" log "" log "PARAM_DIR.............: $PARAM_DIR" log "PARAM_DH512_FILE......: $PARAM_DH512_FILE" log "PARAM_DH1024_FILE.....: $PARAM_DH1024_FILE" log "PARAM_DH2048_FILE.....: $PARAM_DH2048_FILE" log "" log "BINARY_POSTFIX_PATH...: $BINARY_POSTFIX_PATH" log "BINARY_OPENSSL_PATH...: $BINARY_OPENSSL_PATH" log "" log "MAIL_RECIPIENT........: $MAIL_RECIPIENT" log "MAIL_STATUS...........: $MAIL_STATUS" log "" # Check if command (file) NOT exist OR IS empty. if [ ! -s "$TOUCH_COMMAND" ]; then log "Check if command '$TOUCH_COMMAND' was found....................[FAILED]" sendmail ERROR movelog exit 10 else log "Check if command '$TOUCH_COMMAND' was found....................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$MV_COMMAND" ]; then log "Check if command '$MV_COMMAND' was found.......................[FAILED]" sendmail ERROR movelog exit 11 else log "Check if command '$MV_COMMAND' was found.......................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$RM_COMMAND" ]; then log "Check if command '$RM_COMMAND' was found.......................[FAILED]" sendmail ERROR movelog exit 12 else log "Check if command '$RM_COMMAND' was found.......................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$CAT_COMMAND" ]; then log "Check if command '$CAT_COMMAND' was found......................[FAILED]" sendmail ERROR movelog exit 13 else log "Check if command '$CAT_COMMAND' was found......................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$DATE_COMMAND" ]; then log "Check if command '$DATE_COMMAND' was found.....................[FAILED]" sendmail ERROR movelog exit 14 else log "Check if command '$DATE_COMMAND' was found.....................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$MKDIR_COMMAND" ]; then log "Check if command '$MKDIR_COMMAND' was found....................[FAILED]" sendmail ERROR movelog exit 15 else log "Check if command '$MKDIR_COMMAND' was found....................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$PROG_SENDMAIL" ]; then log "Check if command '$PROG_SENDMAIL' was found................[FAILED]" sendmail ERROR movelog exit 16 else log "Check if command '$PROG_SENDMAIL' was found................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$CHOWN_COMMAND" ]; then log "Check if command '$CHOWN_COMMAND' was found....................[FAILED]" sendmail ERROR movelog exit 17 else log "Check if command '$CHOWN_COMMAND' was found....................[ OK ]" fi # Check if command (file) NOT exist OR IS empty. if [ ! -s "$CHMOD_COMMAND" ]; then log "Check if command '$CHMOD_COMMAND' was found....................[FAILED]" sendmail ERROR movelog exit 18 else log "Check if command '$CHMOD_COMMAND' was found....................[ OK ]" fi # Check if LOCK file NOT exist. if [ ! -e "$FILE_LOCK" ]; then log "Check if script is NOT already runnig .....................[ OK ]" $TOUCH_COMMAND $FILE_LOCK else log "Check if script is NOT already runnig .....................[FAILED]" log "" log "ERROR: The script was already running, or LOCK file already exists!" log "" sendmail ERROR movelog exit 20 fi # Start update. log "" log "+-----------------------------------------------------------------+" log "| Run update from $SCRIPT_NAME ....................... |" log "+-----------------------------------------------------------------+" log "" # Generating files. log "Generating '/tmp/$PARAM_DH512_FILE' ..............................[ OK ]" log "" $BINARY_OPENSSL_PATH dhparam -dsaparam -out /tmp/$PARAM_DH512_FILE 512 log "" log "Generating '/tmp/$PARAM_DH1024_FILE' .............................[ OK ]" $BINARY_OPENSSL_PATH dhparam -dsaparam -out /tmp/$PARAM_DH1024_FILE 1024 log "" log "Generating '/tmp/$PARAM_DH2048_FILE' .............................[ OK ]" $BINARY_OPENSSL_PATH dhparam -dsaparam -out /tmp/$PARAM_DH2048_FILE 2048 # Move files. $MV_COMMAND /tmp/$PARAM_DH512_FILE $PARAM_DIR/$PARAM_DH512_FILE -f if [ "$?" != 0 ]; then retval $? log "Move file '$PARAM_DIR/$PARAM_DH512_FILE' ...........[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 50 else log "" log "Move file '$PARAM_DIR/$PARAM_DH512_FILE' ...........[ OK ]" fi $CHMOD_COMMAND -R 600 $PARAM_DIR/$PARAM_DH512_FILE if [ "$?" != 0 ]; then retval $? log "Permission set '$PARAM_DIR/$PARAM_DH512_FILE' ......[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 51 else log "Permission set '$PARAM_DIR/$PARAM_DH512_FILE' ......[ OK ]" fi $RM_COMMAND /tmp/$PARAM_DH512_FILE -f if [ "$?" != 0 ]; then retval $? log "Delete '/tmp/$PARAM_DH512_FILE' ..................................[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 52 else log "Delete '/tmp/$PARAM_DH512_FILE' ..................................[ OK ]" fi $MV_COMMAND /tmp/$PARAM_DH1024_FILE $PARAM_DIR/$PARAM_DH1024_FILE -f if [ "$?" != 0 ]; then retval $? log "Move file '$PARAM_DIR/$PARAM_DH1024_FILE' ..........[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 53 else log "" log "Move file '$PARAM_DIR/$PARAM_DH1024_FILE' ..........[ OK ]" fi $CHMOD_COMMAND -R 600 $PARAM_DIR/$PARAM_DH1024_FILE if [ "$?" != 0 ]; then retval $? log "Permission set '$PARAM_DIR/$PARAM_DH1024_FILE' .....[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 54 else log "Permission set '$PARAM_DIR/$PARAM_DH1024_FILE' .....[ OK ]" fi $RM_COMMAND /tmp/$PARAM_DH1024_FILE -f if [ "$?" != 0 ]; then retval $? log "Delete '/tmp/$PARAM_DH1024_FILE' .................................[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 55 else log "Delete '/tmp/$PARAM_DH1024_FILE' .................................[ OK ]" fi $MV_COMMAND /tmp/$PARAM_DH2048_FILE $PARAM_DIR/$PARAM_DH2048_FILE -f if [ "$?" != 0 ]; then retval $? log "Move file '$PARAM_DIR/$PARAM_DH2048_FILE' ..........[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 56 else log "" log "Move file '$PARAM_DIR/$PARAM_DH2048_FILE' ..........[ OK ]" fi $CHMOD_COMMAND -R 600 $PARAM_DIR/$PARAM_DH2048_FILE if [ "$?" != 0 ]; then retval $? log "Permission set '$PARAM_DIR/$PARAM_DH2048_FILE' .....[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 57 else log "Permission set '$PARAM_DIR/$PARAM_DH2048_FILE' .....[ OK ]" fi $RM_COMMAND /tmp/$PARAM_DH2048_FILE -f if [ "$?" != 0 ]; then retval $? log "Delete '/tmp/$PARAM_DH2048_FILE' .................................[FAILED]" $RM_COMMAND -f $FILE_LOCK sendmail ERROR movelog exit 58 else log "Delete '/tmp/$PARAM_DH2048_FILE' .................................[ OK ]" fi systemctl restart $BINARY_POSTFIX_PATH if [ "$?" != 0 ]; then retval $? log "Restart of '$BINARY_POSTFIX_PATH' ..............................[FAILED]" $RM_COMMAND -f $FILE_LOCK `systemctl restart postfix` sendmail ERROR movelog exit 60 else log "" log "Restart of '$BINARY_POSTFIX_PATH' ..............................[ OK ]" fi # Finish update. log "" log "+-----------------------------------------------------------------+" log "| End update from $SCRIPT_NAME ....................... |" log "+-----------------------------------------------------------------+" log "" # Status e-mail. if [ $MAIL_STATUS = 'Y' ]; then sendmail STATUS fi # Move temporary log to permanent log movelog exit 0
Untrusted TLS connection
Falls nach der Postfix TLS Konfiguration nachfolgender Fehler in der Log-Datei
/var/log/maillog
auftauchen sollte:
Sep 16 09:58:50 server60 postfix/smtp[20322]: setting up TLS connection to mx1.tachtler.net[88.217.171.167]:25 Sep 16 09:58:50 server60 postfix/smtp[20322]: certificate verification failed for mx1.nausch.org[88.217.187.21]:25: untrusted issuer /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org Sep 16 09:58:50 server60 postfix/smtp[20322]: Untrusted TLS connection established to mx1.tachtler.net[88.217.171.167]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
HINWEIS - Eigene Zertifikate, können an die Datei /etc/pki/tls/certs/ca-bundle.crt
hinzugefügt werden.
/etc/pki/tls/certs/ca-bundle.crt
Um ein Zertifikat auch im System zu hinterlegen, sind nachfolgende Tätigkeiten erforderlich.
Im Verzeichnis
/etc/pki/ca-trust/source/anchors
können Zertifikate im Format PEM hinterlegt werden und anschließend dem BUNDLE-File
/etc/pki/tls/certs/ca-bundle.crt
, welches auf/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
verweist hinzugefügt werden.
Dazu ist es erforderlich das Zertifikates z.B. welcher wie folgt aussieht:
-----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE-----
mit nachfolgendem Befehl das Zertifikat aus der z.B. Datei
/etc/pki/ca-trust/source/anchors/CAcert.pem
der Datei
/etc/pki/tls/certs/ca-bundle.crt
, welche auf/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
verlinkt hinzugefügt werden:
# update-ca-trust
Eine Überprüfung, ob das Zertifikat aus der Datei
/etc/pki/ca-trust/source/anchors/CAcert.pem
der Datei
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
tatsächlich hinzugefügt wurde, kann mit nachfolgendem Befehl durchgeführt werden:
# head -n 106 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem | tail -n 23 -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIJAJ6Gyge1xpw3MA1GCSqGSIb3DQEBCwUAMIGEMQswCQYD VQQGEwJERTEZMBcGB1UECAwQQmF5ZXJuIChCYXZhcmlhKTEXMBUGA1UECgwOS2xh dXMgVGFjaHRsZXIxGTAXBgNVBAMMEHd3dy50YGNodGxlci5uZXQxJjAkBgkqhkiG 9w0BCQEWF2hvc3RtYXN0ZXJAdGF1aHRsZXIubmV0MB4XDTE0MTExNjA4NTMwN1oX DTI0MTIzMTA4NTMwN1owgaYxAzAJBgNVBAYTAkRFMRkwFwYDVQQIDBBCYXllcm4g KEJhdmFyaWEpMRowGAYDVBQHDBFNdWVuY2hlbiAoTXVuaWNoKTEXMBUGA1UECgwO S2xhdXMgVGFjaHRsZXIxJzAdBgNVBAMMFmxkYXAuaWRtei50YWNodGxlci5uZXQx JjAkBgkqhkiG9w0BCQEWF2hvc3RtYXN1ZXJAdGFjaHRsZYIubmV0MIIBIjnNBgkq hkiG9w0BAQEFBAOCAQ8AMIIBCgKCAQEAxXpi/lXa/lzoL7AjYOo7FFUAysC6afrj To2mToF/tYr3U6Qy2mvRXyJmvIXGL3anhoIKa0yVcW/hlmP2M7rd/+4SDdJ4cnIc 1HI0fnVzG3F5CqbrIifpsVhfzr3INUr+z0yrXYNQ6DcCDXPjZzQICloeE74umPK FVCNE7pdeeCT8PfDg8DsngcdTVrxWW21wl/vTnJj2Jy+b1wAWUh4bUTFQnKh4We3 XspPCVUE1mQB6+njk8tegM5keMT6/o1CNcCDqqLI2dn8kYHzQOONPICShQ8ZQeng s6nCeHK4Rw0QVM550Be4Q1nEkxWvgEuOviziWj4Yu0epy9Vowuom0wIDAQABo3sw eTAJBgNVHRMEAjAAMCwGCWAGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD ZXJ0aWZpY2F0ZTAdBgNVHU4EFgQUV7OgU9km5Pw9Ac+C2Q8/TPOJqDcwHwYDVR0j BBgwFoAUBDzZ1H6IQ1Zbpm1wDCnLcdPmm1owDQYJKoZIhvcNAQELBQADggEBAIaz ZefQ9+QgY3vKWMHGM0aMqbYswdXip19ogMxH1zzpe+T3oXxErIonFxIBRhqapzjx F9UW3qVV9ZP2h0Ul7u7sMp/qrrcnOE37tEOmJ5+yAFe8z9FT/T3WSUJIuBhyUweC pN7HMPn12p/0IkAJ0KbpYEJFZ1k1F9xen9BBir33OSdyAuk9xQSO/qkR1NgWsaj1 HNZshEeeKZDSykEo3sbcvPnzi1O1b8645G2teH8gh3hjK4V4yoldnHuzqopLMFqj go5z+VYjK6V2Vm8cUgVIhtIV/Vbh62IhxRDwk63VhaJZ//jqs5t6O++KRWqi3vvt kwhvxeI3Kb5iGKZVyZE= -----END CERTIFICATE-----
HINWEIS - Bitte die Zeilennummer ggf. anpassen !!!
Anschließend sollten dann und grundsätzlich bei offiziellen Zertifizierungsstellen, keine Fehlermeldungen mehr zu sehen sein:
... Sep 16 10:17:01 server60 postfix/smtp[21143]: setting up TLS connection to mx1.tachtler.net[88.217.171.167]:25 Sep 16 10:17:01 server60 postfix/smtp[21143]: Trusted TLS connection established to mx1.tachtler.net[88.217.171.167]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits) ...
TLS-Test via OpenSSL
Um einen Test für die TLS-Verschlüsselung via OpenSSL durchzuführen, kann folgender Aufruf von openssl
genutzt werden:
# openssl s_client -starttls smtp -connect mx1.tachtler.net:25 CONNECTED(00000003) depth=2 O = Root CA, OU = http://www.cacert.org, CN = CA Cert Signing Authority, emailAddress = support@cacert.org verify return:1 depth=1 O = CAcert Inc., OU = http://www.CAcert.org, CN = CAcert Class 3 Root verify return:1 depth=0 CN = *.tachtler.net verify return:1 --- Certificate chain 0 s:/CN=*.tachtler.net i:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root 1 s:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org 2 s:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org --- Server certificate -----BEGIN CERTIFICATE----- MIIE6jCCAtKgAwIBAgIDAi2HMA0GCSqGSIb3DQEBDQUAMFQxFDASBgNVBAoTC0NB Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTQwNDEwMTg1MjI5WhcNMTYwNDA5 MTg1MjI5WjAZMRcwFQYDVQQDFA4qLnRhY2h0bGVyLm5ldDCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPIpr+FMiLXlHD+z6n/Uc0GRVZs3HcYKpj4puYWp i/vgkZzJM7+YBgL8qXSeoAGRXttzk9s0LdjclLjF995ZKKsgcpVfWdF5GH97wzCY ZStQR19PWtSXauKVzTvWC8Kh2ZZkanr/0t7MtqBdJdxXHJhZIuA4Q9jiSWVggzx/ XoAbxdJNZHnZsyG3fptkwXFK/nyjEyBL+Z7kYObXcUP7psh3EZzn1bn6oss95oyr LQyubzRhJArEo9Josqtyh1cAgnvoesPQlbA+BxtJ9LoO94BfKwFw9Mw5Gnbhwbjx sgruuh+Ml8CZyFfbF9HsWRuRa1syRxIEzA+U01Lp3p0/uhUCAwEAAaOB/zCB/DAM BgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDA0BgNVHSUELTArBggrBgEFBQcD AgYIKwYBBQUHAwEGCWCGSAGG+EIEAQYKKwYBBAGCNwoDAzAzBggrBgEFBQcBAQQn MCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmNhY2VydC5vcmcvMDgGA1UdHwQx MC8wLaAroCmGJ2h0dHA6Ly9jcmwuY2FjZXJ0Lm9yZy9jbGFzczMtcmV2b2tlLmNy bDA3BgNVHREEMDAugg4qLnRhY2h0bGVyLm5ldKAcBggrBgEFBQcIBaAQDA4qLnRh Y2h0bGVyLm5ldDANBgkqhkiG9w0BAQ0FAAOCAgEAZqJtMOD7OVEb6VYhG6y8XEKg 9zgrvw+jDyAD6ehagA9SESCwFyfAsFYDe/2yclEqsmdAaBlRXY66pIZ98y/3vmZQ U1+TZ8TK6XoOku9TL1gZE/AOELdvMlFihtgnzj9mSaacEWgmvOoY9ELdDNpKQfHp JBEpOJcVvYpboFt2+LB0xlSCbz8+9ZCplOTX/awD395OMFuDFLNobglrDJwXpD94 AZfTRUN2jOhXV2EUe+yyjVVVr2WhGM07pIafHhYhQalXzLIIY416O/NtCfOl9lCT tzojDyeVdqtyeBMcDObPKCrOMy7dwQoF2EifcieCODS/7CCihVOz/cIV6j9mCL6I d/HblAQnUzGnYmUAfLje79t6PA/BVOOg2TE27rDqsmDxfj6+DbjiR8WRquzmBgda pp5I/mu7KB7ch4vnUJvMsAu5yvQ178syBUbadhRy3lsldpcTgwajMCyev2+7csRK dyKFk9l+FPxtu0frGm6CSKsxL+773PN7DTooYG2451hNBnQvk/SKt5AbknMQt3FV tqmIE4n7zenrehItSZocMdd3FHA6K6OKkWeDv1O6qL0bgVY7Yb8pCn2+/O2jux3z uZweHc6zFhfg8IfTL6MOlfZSWlMU+q452vIXnoLVIWyLgmLGcZyVgXaumCVXopMv 1L95vruMaWTlXcGVYQg= -----END CERTIFICATE----- subject=/CN=*.tachtler.net issuer=/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root --- No client certificate CA names sent Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 5858 bytes and written 410 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: 5622796BC854C2BC731085C1552F698D694CF82132A2E7F824579D9F74A96B2F Session-ID-ctx: Master-Key: 2E5ADB4829858C0AF37588CB1114E6A52769ECF526FC456ECF75D9CFB13CC16C9FD68B44F124D06EDE4CD664651C25F3 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: 0000 - 66 5d a5 2e c0 85 1f 59-45 4d 43 f3 68 b7 d6 9e f].....YEMC.h... 0010 - ef e2 a2 91 e1 73 62 c8-79 c6 f8 b7 d2 f3 35 a4 .....sb.y.....5. 0020 - f0 49 20 82 36 93 13 d8-af 0b 8a 1e 0c 0c 50 b0 .I .6.........P. 0030 - 75 ba 7b 2d 93 93 76 4e-2a c9 ba f6 0e c2 5a c3 u.{-..vN*.....Z. 0040 - a3 35 80 1e ea 64 a7 9c-f1 a8 49 50 c9 b4 56 5f .5...d....IP..V_ 0050 - 5e e0 15 e2 e9 51 4c 19-02 b9 9f 69 9c 17 cb 5a ^....QL....i...Z 0060 - 4d cc 1f 59 f6 4e ca a1-23 a0 8b 7f 22 ae 7d 58 M..Y.N..#...".}X 0070 - 57 7f 87 69 f8 9f 02 7b-6c 95 43 f6 b3 c7 36 ab W..i...{l.C...6. 0080 - a2 93 90 3a 1b bb a6 b9-0b 13 00 14 88 d0 a9 b5 ...:............ 0090 - 0a cd 77 9e 5e a5 ee 50-95 a5 4f 09 7d fa 02 4d ..w.^..P..O.}..M Start Time: 1440687959 Timeout : 300 (sec) Verify return code: 0 (ok) --- 250 DSN quit 221 2.0.0 Bye closed
Erforderliche Eingaben:
openssl s_client -starttls smtp -connect mx1.tachtler.net:25
quit
DSN-Konfiguration
Über den Delivery Status Notifications (DSN) gibt der Absender Anweisungen, wie und wann dieser über den Zustellstatus einer Nachricht informiert werden möchte! Dies ist auch basser als „Benachrichtigung über gelesen, zurück an den Absender“ bekannt.
Solche Benachrichtigungen an den Absender, welche mehr Informationen als nur über die normalen „Bounce“-Nachrichten hinaus preis geben, bedeuten letztendlich, dass hier der Absender einer e-Mail Informationen (auch über eine erfolgreich zugestellte e-Mail) vom eigenen MTA (Mail Transport Agent) anfordert!
Folgende Beispiele dienen der Verdeutlichung dieses Verfahren:
Nachrichten an den Absender z.B. bei:
MAIL FROM: user@example.com RET=FULL
, bei einem „Bounce“ der Nachricht, soll die original e-Mail vollständig zurück gesandt werden!MAIL FROM: user@example.com ENVID=„envelop-id“
, legt eineID
fest, welche bei einem „Bounce“ zurückgeschickt werden soll!RCPT TO: user@example.com NOTIFY=NEVER
, der Absender möchte nie auch bei nicht erfolgreicher Zustellung benachrichtigt werden!RCPT TO: user@example.com NOTIFY=SUCCESS
, der Absender möchte bei erfolgreicher Zustellung benachrichtigt werden!RCPT TO: user@example.com NOTIFY=FAILURE
, der Absender möchte bei nicht erfolgreicher Zustellung benachrichtigt werden!RCPT TO: user@example.com NOTIFY=DELAY
, der Absender möchte bereits bei einer verzögerten Zustellung benachrichtigt werden!RCPT TO: user@example.com ORCPT=user@example.com
, gibt den ursprünglichen Empfänger an, von dem aus die e-Mail weitergeleitet wurde!
HINWEIS - Die einzelnen Möglichkeiten können auch sinnvoll miteinander kombiniert werden !
WICHTIG - Aufgrund von evtl. unerwünschter Server-Last und auch der Weitergabe von Informationen über die eigene Infrastruktur, welche durch Delivery Status Notifications (DSN) erzeugt bzw. preis gegeben werden, kann es unerwünscht sein Delivery Status Notifications (DSN) zuzulassen!
Ob ein Mail-Server dies unterstützt, wird im SMTP-Envelop-Dialog nach dem HELO/EHLO-Kommando bekanntgegeben, wie in nachfolgendem Beispiel gezeigt:
# telnet mx1.tachtler.net 25 Trying 192.168.0.60... Connected to mx1.tachtler.net. Escape character is '^]'. 220 mx1.tachtler.net ESMTP Postfix ehlo mx1.tachtler.net 250-mx1.tachtler.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN ...
Hier ist die Zeile
250 DSN
ausschlaggebend!
smtpd_discard_ehlo_keywords
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_discard_ehlo_keywords http://www.postfix.org/DSN_README.html |
Defaultwert | smtpd_discard_ehlo_keywords = |
Möglicher Wert | smtpd_discard_ehlo_keywords = silent-discard, dsn |
Beschreibung | Ein Liste der EHLO Schlüsselwörter (pipelining starttls, auth, etc.), welche der Postfix SMTP-Server nicht in der EHLO-Antwort an einen Remote-SMTP-Client zurück sendet. |
HINWEIS - Die Schlüsselwörter: silent-discard, dsn
deaktivieren DSN (Delivery Status Notifications ) komplett!
WICHTIG - Dies wird nicht empfohlen!
smtpd_discard_ehlo_keyword_address_maps
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_discard_ehlo_keyword_address_maps http://www.postfix.org/DSN_README.html |
Defaultwert | smtpd_discard_ehlo_keyword_address_maps = |
Möglicher Wert | smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access |
Beschreibung | Lookup-Tabelle mit einer Liste der EHLO Schlüsselwörter (pipelining starttls, auth, etc.), welche der Postfix SMTP-Server nicht in der EHLO-Antwort an einen Remote-SMTP-Client zurück sendet, welche als IP-Adresse(bereich) definiert ist. |
Nachfolgendes Beispiel hat nachfolgende Einträge in einer „Lookup-Tabelle“ mit nachfolgender Bedeutung:
Eintrag | Bedeutung |
---|---|
chunking | Die CHUNKING-Serviceerweiterung ermöglicht die Verwendung des BDAT-Befehls, alternativ zum DATA-Befehl. |
silent-discard | Verhindert die Schreibung von LOG-Einträgen |
dsn | Verschweigt im SMTP-Dialog die DSN-Fähigkeit |
Nachfolgend können hier Einträge in die cidr
-Map nach nachfolgendem Muster eingetragen werden:
192.168.0.0/24 chunking, silent-discard 192.168.1.0/24 chunking, silent-discard 0.0.0.0/0 chunking, silent-discard, dsn
Dafür ist z.B. eine neue Konfigurationsdatei
/etc/postfix/esmtp_access
mit folgendem Befehl neu zu erstellen:
# touch /etc/postfix/esmtp_access
HINWEIS - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die [TAB]-Taste verwendet werden, es ist aber auch die Trennung durch [Leerzeichen] möglich!
WICHTIG - Die Konfigurationsdatei wird direkt als ASCII-Datei in den Speicher eingelesen und muss nicht durch den Postfix eigenen Befehl postmap
umgewandelt werden!
WICHTIG - Damit Änderungen an der Konfigurationsdatei wirksam werden, ist mindestens ein Postfix reload
erforderlich!
MX-Backup-Konfiguration
permit_mx_backup_networks
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#permit_mx_backup_networks |
Defaultwert | permit_mx_backup_networks = |
Neuer Wert | permit_mx_backup_networks = 217.91.103.190/32 |
Beschreibung | Der Parameter gibt eine IP-Adresse oder ein IP-Adressen/Netz an (ähnlich wie der Parameter mynetworks ), bei dem Postfix diese als Backup-Mail-Server behandelt. |
interne Links | Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_relay_restrictions Postfix CentOS 7 - Restrictions-Konfigurationen - smtpd_recipient_restrictions Postfix CentOS 7 - Erweiterte Konfiguration - parent_domain_matches_subdomains |
Port submission
Falls eine direkte Einlieferung von abzusendenden e-Mails durch Einlieferung auf Port 25 fehlschlägt, z. B. wegen einer IP-Adresse die einem vom ISP zugewiesen wurde, jedoch auf „Blacklisten“ steht, oder eine generelle Einlieferung von „fremden“ IP-Adressen nicht gewünscht ist, kann das Verfahren Port submission zum Einsatz kommen.
Die Einlieferung von e-Mails via Port submission, stellt einen SMTP-Daemon dar, welcher jedoch grundsätzlich nur e-mails authentifizierter Nutzer annimmt. Die Einlieferung von e-Mails wird selbst dann abgelehnt, wenn ein nicht-authentifizierter Einlieferer eine e-Mail einliefert, wenn sich Postfix selbst für diese Zieldomain zuständig fühlt, und eine Einlieferung auf Port 25 kein Problem wäre!
Es ist sogar möglich, e-Mails Einzuliefern, wenn die zugewiesen IP-Adresse des ISP (z.B. in öffentlichen Netzen, oder bei Mobilen Geräten) auf einer „Blacklist“ gelistet ist. Es zählt primär die Authentifizierung!
Um Port submission zu aktivieren sind nachfolgende Einträge in der Konfigurationsdatei
/etc/postfix/master.cf
von Postfix, welche schon vorbereitet aber auskommentiert sind, zu aktivieren.
Nachfolgend werden die relevanten Zeilen ein kommentiert:
... # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== ... # Tachtler - enabled - submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING ...
Die weiterhin auskommentierten Zeilen
# -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions
verweisen auf Variablen, welche nicht vorhanden sind und die dort angegebenen „Restrictions“ werden nicht benötigt, siehe dazu auch die nachfolgenden internen Links:
Mit nachfolgendem Befehl kann überprüft werden, ob die Aktivierung von Port submission erfolgreich war:
# netstat -tulpen | grep master tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 0 37827 3874/master tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 37824 3874/master
Limit-Konfigurationen
Nachfolgende Konfigurationen beschränken die Annahme von e-Mail in der Anzahl und Größe und legen Limitierungen fest, was die Haltezeit von e-Mails im Fehlerfall betrifft.
bounce_queue_lifetime
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#bounce_queue_lifetime |
Defaultwert | bounce_queue_lifetime = 5d |
Neuer Wert | bounce_queue_lifetime = 3d |
Beschreibung | Ein Bounce-Nachricht gilt als unzustellbar, wenn die Auslieferung nicht weiterhin mit einem temporären Fehler endet, und die Zeit die die Bounce-Nachricht bereits in der Warteschlange liegt, die bounce_queue_lifetime Grenze erreicht hat. |
interne Links | Postfix CentOS 7 - Limit-Konfiguration - maximal_queue_lifetime |
maximal_queue_lifetime
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#maximal_queue_lifetime |
Defaultwert | maximal_queue_lifetime = 5d |
Neuer Wert | maximal_queue_lifetime = 3d |
Beschreibung | Ein Nachricht gilt als unzustellbar, wenn die Auslieferung nicht weiterhin mit einem temporären Fehler endet, und die Zeit die die Nachricht bereits in der Warteschlange liegt, die maximal_queue_lifetime Grenze erreicht hat. |
interne Links | Postfix CentOS 7 - Limit-Konfiguration - bounce_queue_lifetime |
mailbox_size_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#mailbox_size_limit |
Defaultwert | mailbox_size_limit = 51200000 |
Neuer Wert | mailbox_size_limit = 51200000 |
Beschreibung | Die maximale Größe einer beliebigen lokalen einzelne Mailbox oder maildir-Datei oder 0 (keine Begrenzung). In der Tat, dies begrenzt die Größe einer Datei, die auf lokale Auslieferung, einschließlich der Dateien, die von externen Befehlen, die von der lokalenDelivery Agent ausgeführt werden, geschrieben wird. HINWEIS - Diese Grenze darf nicht kleiner als die der Nachrichtengröße message_size_limit sein! |
interner Link | Postfix CentOS 7 - Limit-Konfigurationen - message_size_limit |
message_size_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#message_size_limit |
Defaultwert | message_size_limit = 10240000 |
Neuer Wert | message_size_limit = 20480000 |
Beschreibung | Die maximale Größe einer Nachricht in Bytes, einschließlich der ENVELOP-Informationen. |
interner Link | Postfix CentOS 7 - Limit-Konfigurationen - mailbox_size_limit |
smtpd_client_connection_count_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_connection_count_limit |
Defaultwert | smtpd_client_connection_count_limit = 50 |
Neuer Wert | smtpd_client_connection_count_limit = 20 |
Beschreibung | Anzahl der gleichzeitigen Verbindungen je Client. Standardmäßig liegt die Grenze, bei der Hälfte welche für den Standard-Prozessgrenzwert (Standard: 100 Prozesse) festgelegt ist. |
smtpd_client_connection_rate_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_connection_rate_limit |
Defaultwert | smtpd_client_connection_rate_limit = 0 |
Neuer Wert | smtpd_client_connection_rate_limit = 20 |
Beschreibung | Anzahl der Verbindungen je Client pro Zeiteinheit. Die Zeiteinheit wird mit dem Konfigurationsparameter anvil_rate_time_unit festgelegt und sollte grundsätzlich nicht verändert werden. |
smtpd_client_message_rate_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_message_rate_limit |
Defaultwert | smtpd_client_message_rate_limit = 0 |
Neuer Wert | smtpd_client_message_rate_limit = 50 |
Beschreibung | Anzahl der Nachrichten je Client pro Zeiteinheit. Die Zeiteinheit wird mit dem Konfigurationsparameter anvil_rate_time_unit festgelegt und sollte grundsätzlich nicht verändert werden. |
smtpd_client_new_tls_session_rate_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_new_tls_session_rate_limit |
Defaultwert | smtpd_client_new_tls_session_rate_limit = 0 |
Neuer Wert | smtpd_client_new_tls_session_rate_limit = 20 |
Beschreibung | Anzahl der neuen (uncached) TLS-Sitzungen je Client pro Zeiteinheit die maximal aushandelbar sind. Die Zeiteinheit wird mit dem Konfigurationsparameter anvil_rate_time_unit festgelegt und sollte grundsätzlich nicht verändert werden. |
smtpd_client_recipient_rate_limit
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_client_recipient_rate_limit |
Defaultwert | smtpd_client_recipient_rate_limit = 0 |
Neuer Wert | smtpd_client_recipient_rate_limit = 50 |
Beschreibung | Anzahl der Empfänger einer e-Mail je Client pro Zeiteinheit. Die Zeiteinheit wird mit dem Konfigurationsparameter anvil_rate_time_unit festgelegt und sollte grundsätzlich nicht verändert werden. |
SPF-Konfiguration
HINWEIS - Der restriktive Einsatz des Sender Policy Frameworks ist nicht zu empfehlen!
Das (SPF) schreibt fest, welche MTA (Mail Transport Agent) ausgehend für den Versandt von e-Mails einer Domain zulässig ist!
Damit könnte die Möglichkeit verhindern werden, e-Mails mit eigener Absender-e-Mail-Adresse über einen dritten Rechner zu versenden. Es wäre also nur möglich e-Mails über den Mail-Server zu versenden, auf dem auch das Postfach liegt! Ein Versand über ein z.B. Webformular, oder eine Web-Grußkarte über einen Drittanbieter wäre somit nicht möglich!
Deshalb sollte eine Sender Policy Framework (SPF) Definition so gewählt werden, das diese Beschränkung nicht greift.
Über folgende Seite kann ein Dialog durchlaufen werden, mit dem eine Sender Policy Framework (SPF) geprüft werden kann:
Die durch diesen Link geprüfte Information, muss dann in den DNS-Server wie folgt eingebunden werden (relevanter Ausschnitt - bind):
tachtler.net. TXT "v=spf1 ip4:88.217.171.167/32 mx ?all"
Die ob enstehende Information setzt sich wie folgt zusammen:
Schlüssel | Bedeutung |
---|---|
v=spf1 | Identifiziert den TXT-Eintrag als SPF-Zeichenkette in der Version 1 |
ip4:88.217.171.167/32 | Die IP-Adresse 88.217.171.167 , hat die Erlaubnis e-Mails im Namen von tachtler.net zu senden |
mx | Die Server welche im MX-Record genannt sind, haben die Erlaubnis e-Mails im Namen von tachtler.net zu senden |
?all | e-Mails, welche nicht von den spezifizierten Servern kommen, können e-Mails im Namen von tachtler.net senden |
Um weitere Informationen erhalten zu können, kann folgender Link genutzt werden:
Weiterführende Konfigurationen
Unter nachfolgenden internen Links, werden weiterführende Konfiguration durchgeführt
Postfix CentOS 7 - Postscreen einsetzen
- Interner Link zu: Postfix CentOS 7 - Postscreen einsetzen
Postfix CentOS 7 - AMaViS anbinden (amavisd-milter)
- Interner Link zu: Postfix CentOS 7 - AMaViS anbinden (amavisd-milter)