Inhaltsverzeichnis
Postfix CentOS 7 - OpenDKIM anbinden (opendkim-milter)
OpenDKIM dient zur Sicherstellung der Authentizität von E-Mail-Absendern wurde in 2004 von Yahoo ein Identifikationsprotokoll entwickelt, mit welchem die Authentizität von e-Mail-Absendern sichergestellt werden kann. Dies wurde vor allem mit dem Wunsch zur Eindämmung unerwünschter eMail wie Phishing und/oder Spam konzipiert.
DKIM basiert auf asymmetrischer Verschlüsselung, bei der e-Mails mit zwei Signaturen versehen werden, eine in den e-Mail-Header-Zeilen der Nachricht und die zweite über den e-Mail-Body. Die zugehörigen Prüfsummen werden in standardisierten DKIM-Signature-Headern in der e-Mail eingetragen.
Der empfangende e-Mail-Server ist somit in der Lage, an Hand des öffentlichen Schlüssels diese Daten, der im TXT-Record des Domain Name System (DNS) der Domäne abrufbar ist, die Daten zu verifizieren. Ist diese Signatur gültig, ist der Absender Server der e-Mail zweifelsfrei festgestellt. Bei einem negativen Ergebnis hat nun der empfangende e-Mail-Server die Möglichkeit, die Annahme der e-Mail zu verweigern bzw. die empfangene Nachricht auszusortieren. Wie bereits erwähnt ist dies möglich, da der sendende e-Mail-Server jede versendete e-Mail im sogenannten „DomainKey-Signature-Header“ mit einer digitalen Signatur des Inhaltes der e-Mail versieht. Der Domaininhaber (Sender) kann mit Hilfe von festlegen, was der Empfänger beim Eingang einer e-Mail tun soll, sofern die DKIM-Signatur gebrochen wurde.
Beschreibung | Externer Link |
---|---|
Homepage | http://www.opendkim.org/ |
Dokumentation | http://www.opendkim.org/docs.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 sollen das Drittanbieter-Repository von EPEL, welches wie unter nachfolgendem internen Link dargestellt, eingebunden werden:
Installation
Nachfolgendes rpm
-Paket ist zur Installation erforderlich:
Zusätzlich wird nachfolgendes rpm
-Paket als Abhängigkeit zusätzlich installiert:
Die Installation von opendkim
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# yum install opendkim Loaded plugins: changelog, priorities 149 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package opendkim.x86_64 0:2.10.3-1.el7 will be installed --> Processing Dependency: libopendkim(x86-64) = 2.10.3-1.el7 for package: opendkim-2.10.3-1.el7.x86_64 --> Processing Dependency: libbsd.so.0(LIBBSD_0.0)(64bit) for package: opendkim-2.10.3-1.el7.x86_64 --> Processing Dependency: libopendkim.so.10()(64bit) for package: opendkim-2.10.3-1.el7.x86_64 --> Processing Dependency: libopendbx.so.1()(64bit) for package: opendkim-2.10.3-1.el7.x86_64 --> Processing Dependency: libbsd.so.0()(64bit) for package: opendkim-2.10.3-1.el7.x86_64 --> Running transaction check ---> Package libbsd.x86_64 0:0.6.0-3.el7 will be installed ---> Package libopendkim.x86_64 0:2.10.3-1.el7 will be installed ---> Package opendbx.x86_64 0:1.4.6-6.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: opendkim x86_64 2.10.3-1.el7 epel 213 k Installing for dependencies: libbsd x86_64 0.6.0-3.el7 epel 66 k libopendkim x86_64 2.10.3-1.el7 epel 71 k opendbx x86_64 1.4.6-6.el7 epel 46 k Transaction Summary ================================================================================ Install 1 Package (+3 Dependent packages) Total download size: 397 k Installed size: 1.0 M Is this ok [y/d/N]: y Downloading packages: (1/4): libopendkim-2.10.3-1.el7.x86_64.rpm | 71 kB 00:00 (2/4): libbsd-0.6.0-3.el7.x86_64.rpm | 66 kB 00:00 (3/4): opendbx-1.4.6-6.el7.x86_64.rpm | 46 kB 00:00 (4/4): opendkim-2.10.3-1.el7.x86_64.rpm | 213 kB 00:00 -------------------------------------------------------------------------------- Total 998 kB/s | 397 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : libbsd-0.6.0-3.el7.x86_64 1/4 Installing : libopendkim-2.10.3-1.el7.x86_64 2/4 Installing : opendbx-1.4.6-6.el7.x86_64 3/4 Installing : opendkim-2.10.3-1.el7.x86_64 4/4 Verifying : libbsd-0.6.0-3.el7.x86_64 1/4 Verifying : opendkim-2.10.3-1.el7.x86_64 2/4 Verifying : opendbx-1.4.6-6.el7.x86_64 3/4 Verifying : libopendkim-2.10.3-1.el7.x86_64 4/4 Installed: opendkim.x86_64 0:2.10.3-1.el7 Dependency Installed: libbsd.x86_64 0:0.6.0-3.el7 libopendkim.x86_64 0:2.10.3-1.el7 opendbx.x86_64 0:1.4.6-6.el7 Complete!
Die Installation von opendkim
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# rpm -qil opendkim Name : opendkim Version : 2.10.3 Release : 1.el7 Architecture: x86_64 Install Date: Mon 19 Oct 2015 04:04:19 PM CEST Group : System Environment/Daemons Size : 574565 License : BSD and Sendmail Signature : RSA/SHA256, Wed 13 May 2015 11:46:55 PM CEST, Key ID 6a2faea2352c64e5 Source RPM : opendkim-2.10.3-1.el7.src.rpm Build Date : Wed 13 May 2015 04:04:02 AM CEST Build Host : buildvm-25.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://opendkim.org/ Summary : A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail Description : OpenDKIM allows signing and/or verification of email through an open source library that implements the DKIM service, plus a milter-based filter application that can plug in to any milter-aware MTA, including sendmail, Postfix, or any other MTA that supports the milter protocol. /etc/opendkim /etc/opendkim.conf /etc/opendkim/KeyTable /etc/opendkim/SigningTable /etc/opendkim/TrustedHosts /etc/opendkim/keys /etc/sysconfig/opendkim /etc/tmpfiles.d/opendkim.conf /usr/lib/systemd/system/opendkim.service /usr/sbin/opendkim /usr/sbin/opendkim-default-keygen /usr/sbin/opendkim-genkey /usr/sbin/opendkim-genzone /usr/sbin/opendkim-reportstats /usr/sbin/opendkim-testkey /usr/sbin/opendkim-testmsg /usr/share/doc/opendkim-2.10.3 /usr/share/doc/opendkim-2.10.3/FEATURES /usr/share/doc/opendkim-2.10.3/INSTALL /usr/share/doc/opendkim-2.10.3/KNOWNBUGS /usr/share/doc/opendkim-2.10.3/README /usr/share/doc/opendkim-2.10.3/README.fedora /usr/share/doc/opendkim-2.10.3/RELEASE_NOTES /usr/share/doc/opendkim-2.10.3/RELEASE_NOTES.Sendmail /usr/share/doc/opendkim-2.10.3/authheaders-check-setup-hook.lua /usr/share/doc/opendkim-2.10.3/convert_keylist.sh /usr/share/doc/opendkim-2.10.3/final.lua.sample /usr/share/doc/opendkim-2.10.3/opendkim.conf.sample /usr/share/doc/opendkim-2.10.3/opendkim.conf.simple /usr/share/doc/opendkim-2.10.3/opendkim.conf.simple-verify /usr/share/doc/opendkim-2.10.3/screen.lua.sample /usr/share/doc/opendkim-2.10.3/setup.lua.sample /usr/share/licenses/opendkim-2.10.3 /usr/share/licenses/opendkim-2.10.3/LICENSE /usr/share/licenses/opendkim-2.10.3/LICENSE.Sendmail /usr/share/man/man5/opendkim.conf.5.gz /usr/share/man/man8/opendkim-genkey.8.gz /usr/share/man/man8/opendkim-genzone.8.gz /usr/share/man/man8/opendkim-testkey.8.gz /usr/share/man/man8/opendkim-testmsg.8.gz /usr/share/man/man8/opendkim.8.gz /var/run/opendkim /var/spool/opendkim
iptables Regel
Damit der SPF auch über den Postfix - spf-milter
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
-Regel dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 10012 -j ACCEPT
und hier der Befehl:
# iptables -I INPUT 5 -p tcp --dport 10012 -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:10012 state NEW 6 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 neue Zeile ist an Position 5 (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:10012 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
Konfiguration: OpenDKIM
WICHTIG - Nachfolgende Konfiguration dient nur ausschließlich der Überprüfung (verify) von DKIM-Signaturen bei eingehenden e-Mails von externen/anderen und nicht eigenen e-Mail-Servern, falls AMaViS dafür verwendet werden soll!
Die Erstellung von DKIM-Signaturen für ausgehende eigene e-Mails, kann später im Ablauf der e-Mail-Verarbeitung, auch durch AMaViS erfolgen, wie unter nachfolgendem internen Link beschrieben:
HINWEIS - Falls AMaViS nicht zum signieren verwendet werden soll, sind zusätzliche Konfigurationen erforderlich!
/etc/opendkim/keys
Falls AMaViS nicht zum signieren verwendet werden soll, muss ein Schlüsselpaar erstellt werden.
Dies soll gleich im späteren Zielverzeichnis durchgeführt, deswegen kann mit nachfolgendem gleich in das Zielverzeichnis
/etc/opendkim/keys
gewechselt werden:
# cd /etc/opendkim/keys
Anschließend wird durch nachfolgende Befehl ein Schlüsselpaar erstellt:
# /usr/sbin/opendkim-genkey -s main -d tachtler.net
Nachfolgende Erklärung zu den Parametern:
Parameter | Erklärung |
---|---|
-s | Bezeichnet den selector |
-d | Bezeichnet die domain |
Abschließend müssen noch die Besitzrechte mit nachfolgendem Befehl gesetzt werden:
# chown opendkim:opendkim /etc/opendkim/keys/*
Nachfolgende Dateien sollten nun entstanden sein, was mit nachfolgendem Befehl überprüft werden kann:
# ls -l /etc/opendkim/keys total 8 -rw------- 1 opendkim opendkim 887 Oct 13 13:20 main.private -rw------- 1 opendkim opendkim 310 Mar 22 03:16 main.txt
Der Inhalt der beiden Dateien kann mit nachfolgendem Befehlen angezeigt werden und sollte in etwa wie folgt aussehen:
# cat /etc/opendkim/keys/main.private -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDWypzomx/COZmYML/9j/MRNH9Chw652qzbHjM4RdzpeWzainKC +kyYP+VuoJWMtUX2KSo+kTuWaH4AUgwWSxKq4IBq34MgWsDi3h/mFekOqtnIHTZM 16CLtzQUHAEwCUZqouQkDzQUHAEwCUZq2F9qbRFRB4WWJyuCF6GNQLX9jQIDAQAB AoGAFgSC/R0ZrlE1O3KT26wr4HGfMfSiP874tSVtXrFaqdw2mlhi0KZTv6+dFzAC 5H+YgllJ6Uv97bccY3AFqStc6FMuEnbZBzQUHAEwCUZqMUvln1Hm+pt9nKmc2T1d 4NZFpm9wdghEolGgdQUJtqaKiClSJGAW28qne4TxQ/4s8skCQQDx07HAUveFk7dN zHdO+LYDyXGW/Z4/Hd/+N1ckI$twIRkl1chNeFAULeSAU+/Gyi8P8TTpIIeCFhao /R0euJY/AkEA42FJITBi3W8D4i1ifVZUnCFdBUHiZx2wpWNmkFHbMBGSddmLq1SD o0FkSK2yUUSQr+y2C6ksJ2ULbGyI+imndrRwmd63qPdmvd+84GD5dfsddDfgg7dx 5Kcimm3a1RXTenwsD1lvVM46tmfa83vIKzgM2oI8SnZijjXqOEbMfudf1QJBAIG8 E261XeN8IRoezRA4fsQqoRmL0vME1LI4+d8kZUyS6h8FxhQ2f3lZqS9ys8h8yqzN guSfl3OAyWCTvWXwyFMCQFb0t7soo/mHoS5EP+Q7/TRyjdzUzRrVZO5sO0HUMyhL SPfoF9go3M+8jZ2ac/kbs6iUlQT/zS4/T4DVScoPgCs= -----END RSA PRIVATE KEY-----
und
# cat /etc/opendkim/keys/main.txt main._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCW697RxGpSmHUxXFMgirRcDKJRRxoDuuIxlH/69QsHeee+hBC0Uwg72tcQ8dkmQfJwpcHAIt8nP/0VQnRc2uyRr+lnSp89Diahd3frfgnPnyKjhoNglJNlsinEksKnsQ40G6rki1kH3Sf0mq+Hn0RYozkYiJw8V1oSoafME1WklQIDAQAB" ) ; ----- DKIM key main for tachtler.net
WICHTIG - Nachfolgender DNS-Eintrag muss zum DNS hinzugefügt werden, um den öffentlichen Schlüssel via DNS abfragbar zu machen (nur relevanter Ausschnitt) und könnte wie folgt aussehen und besteht aus dem Inhalt der Datei
/etc/opendkim/keys/main.txt
bzw. kann durch die Ergänzung der Domain und einem Punkt erweitert werden:
... main._domainkey.tachtler.net. IN TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCW697RxGpSmHUxXFMgirRcDKJRRxoDuuIxlH/69QsHeee+hBC0Uwg72tcQ8dkmQfJwpcHAIt8nP/0VQnRc2uyRr+lnSp89Diahd3frfgnPnyKjhoNglJNlsinEksKnsQ40G6rki1kH3Sf0mq+Hn0RYozkYiJw8V1oSoafME1WklQIDAQAB" ...
/etc/sysconfig/opendkim
Nachfolgende Konfigurationsdatei von OpenDKIM setzt Standardparameter für den Start des OpenDKIM Dienst/Daemons.
HINWEIS - Änderungen an dieser Konfigurationsdatei sind grundsätzlich nicht erforderlich, aber durchaus sinnvoll!
# Set the necessary startup options OPTIONS="-x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid" # Set the default DKIM selector # Tachtler # default: DKIM_SELECTOR=default DKIM_SELECTOR=main # Set the default DKIM key location DKIM_KEYDIR=/etc/opendkim/keys
/etc/opendkim.conf
Standardmäßig wird nach der Installation von OpenDKIM - opendkim-milter
in nachfolgendem Verzeichnis mit nachfolgendem Namen die Hauptkonfigurationsdatei für den OpenDKIM - opendkim-milter
hinterlegt:
/etc/opendkim.conf
Nachfolgende Änderungen sind an der Konfigurationsdatei /etc/opendkim.conf
durchzuführen:
(Komplette Konfigurationsdatei)
## BASIC OPENDKIM CONFIGURATION FILE ## See opendkim.conf(5) or /usr/share/doc/opendkim/opendkim.conf.sample for more ## BEFORE running OpenDKIM you must: ## - make your MTA (Postfix, Sendmail, etc.) aware of OpenDKIM ## - generate keys for your domain (if signing) ## - edit your DNS records to publish your public keys (if signing) ## See /usr/share/doc/opendkim/INSTALL for detailed instructions. ## DEPRECATED CONFIGURATION OPTIONS ## ## The following configuration options are no longer valid. They should be ## removed from your existing configuration file to prevent potential issues. ## Failure to do so may result in opendkim being unable to start. ## ## Removed in 2.10.0: ## AddAllSignatureResults ## ADSPAction ## ADSPNoSuchDomain ## BogusPolicy ## DisableADSP ## LDAPSoftStart ## LocalADSP ## NoDiscardableMailTo ## On-PolicyError ## SendADSPReports ## UnprotectedPolicy ## CONFIGURATION OPTIONS ## Specifies the path to the process ID file. PidFile /var/run/opendkim/opendkim.pid ## Selects operating modes. Valid modes are s (sign) and v (verify). Default is v. ## Must be changed to s (sign only) or sv (sign and verify) in order to sign outgoing ## messages. Mode v ## Log activity to the system log. Syslog yes ## Log additional entries indicating successful signing or verification of messages. SyslogSuccess yes ## If logging is enabled, include detailed logging about why or why not a message was ## signed or verified. This causes an increase in the amount of log data generated ## for each message, so set this to No (or comment it out) if it gets too noisy. LogWhy yes ## Attempt to become the specified user before starting operations. UserID opendkim:opendkim ## Create a socket through which your MTA can communicate. # Tachtler # default: Socket inet:8891@localhost Socket inet:10012@10.7.0.70 ## Required to use local socket with MTAs that access the socket as a non- ## privileged user (e.g. Postfix) Umask 002 ## This specifies a text file in which to store DKIM transaction statistics. ## OpenDKIM must be manually compiled with --enable-stats to enable this feature. # Statistics /var/spool/opendkim/stats.dat ## Specifies whether or not the filter should generate report mail back ## to senders when verification fails and an address for such a purpose ## is provided. See opendkim.conf(5) for details. SendReports yes ## Specifies the sending address to be used on From: headers of outgoing ## failure reports. By default, the e-mail address of the user executing ## the filter is used (executing_user@hostname). # ReportAddress "Example.com Postmaster" <postmaster@example.com> ## Add a DKIM-Filter header field to messages passing through this filter ## to identify messages it has processed. SoftwareHeader yes ## SIGNING OPTIONS ## Selects the canonicalization method(s) to be used when signing messages. # Tachtler # default: Canonicalization relaxed/relaxed Canonicalization relaxed/simple ## Domain(s) whose mail should be signed by this filter. Mail from other domains will ## be verified rather than being signed. Uncomment and use your domain name. ## This parameter is not required if a SigningTable is in use. # Tachtler # default: # Domain example.com # Domain tachtler.net ## Defines the name of the selector to be used when signing messages. # Tachtler # default: Selector default #Selector main ## Specifies the minimum number of key bits for acceptable keys and signatures. # Tachtler # default: MinimumKeyBits 1024 #MinimumKeyBits 1024 ## Gives the location of a private key to be used for signing ALL messages. This ## directive is ignored if KeyTable is enabled. # Tachtler # default: KeyFile /etc/opendkim/keys/default.private #KeyFile /etc/opendkim/keys/main.private ## Gives the location of a file mapping key names to signing keys. In simple terms, ## this tells OpenDKIM where to find your keys. If present, overrides any KeyFile ## directive in the configuration file. Requires SigningTable be enabled. # KeyTable /etc/opendkim/KeyTable ## Defines a table used to select one or more signatures to apply to a message based ## on the address found in the From: header field. In simple terms, this tells ## OpenDKIM how to use your keys. Requires KeyTable be enabled. # SigningTable refile:/etc/opendkim/SigningTable ## Identifies a set of "external" hosts that may send mail through the server as one ## of the signing domains without credentials as such. # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ## Identifies a set "internal" hosts whose mail should be signed rather than verified. # Tachtler # default: # InternalHosts refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts ## Contains a list of IP addresses, CIDR blocks, hostnames or domain names ## whose mail should be neither signed nor verified by this filter. See man ## page for file format. # PeerList X.X.X.X ## Always oversign From (sign using actual From and a null From to prevent ## malicious signatures header fields (From and/or others) between the signer ## and the verifier. From is oversigned by default in the Fedora package ## because it is often the identity key used by reputation systems and thus ## somewhat security sensitive. OversignHeaders From
Nachfolgende Änderungen sollten vorgenommen werden:
Socket inet:10012@192.168.0.70
Socket auf dem der OpenDKIM erreichbar ist und antwortet.
#Selector default
Deaktivieren eines möglichen Standard Selectors für das Erstellen von DKIM-Signaturen.
#MinimumKeyBits 1024
Deaktivieren einer Mindestlänge bei DKIM-Signaturschlüsseln, da dies zum Erstellen von DKIM-Signaturen benötigt wird und bei einer Prüfung ebenfalls zweitrangig ist.
#KeyFile /etc/opendkim/keys/default.private
Deaktivieren der Hinterlegung eines privaten Schlüssel, da dieser nur bei der Erstellen von DKIM-Signaturen benötigt wird.
InternalHosts refile:/etc/opendkim/TrustedHosts
Angabe einer Konfigurationsdatei, hier /etc/opendkim/TrustedHosts
, in der IP-Adressen/Netze enthalten sind, die bei der Prüfung (und auch bei der Erstellung von DKIM-Signaturen) nicht berücksichtigt werden sollen.
HINWEIS - Nachfolgende Änderungen sind nur erforderlich, wenn auch das signieren durch OpenDKIM -
opendkim-milter
durchgeführt werden soll:
Mode sv
Angabe damit E-Mails auch signiert werden, muss durch setzen des zusätzlichen Parameters s
durchgeführt werden.
Canonicalization relaxed/simple
Um alle Anfoderungen erfüllen zu können, gibt es zwei verschiedene Berechnungsmethoden, welche jeweils für den Header und den Body gesetzt werden können. Die Definition von
simple
- toleriert keine Veränderungenrelaxed
- toleriert Veränderungen wie Leerzeichen und Zeilenumbrüche
Domain tachtler.net
Angabe einer Domain, für die auch das signing durchgeführt werden soll. Für mehrere Domains ist die Konfigurationsdatei /etc/opendkim/SigningTable
zu verwenden:
Beispiel: - /etc/opendkim/SigningTable
*@tachtler.net main._domainkey.tachtler.net
SubDomain yes
Angabe damit auch für SubDomains, das signing durchgeführt werden soll. z.B. für eine e-Mail-Adresse wie apache@intra.tachtler.net
Selector main
Angabe eines abweichenden Selectors, anstelle von default
.
KeyFile /etc/opendkim/keys/main.private
Angabe, wo die Datei mit dem privaten Schlüssel im Dateisystem abgelegt ist. Bei der Nutzung von mehrere Domains ist die Konfigurationsdatei /etc/opendkim/KeyTable
zu verwenden und ggf. für jede Domain ein eingenes Verzeichnis unter /etc/opendkim/keys
mit dem jeweiligen Doaminnamen als Verzeichnisname zu erstellen:
Beispiel: - /etc/opendkim/KeyTable
main._domainkey.tachtler.net tachtler.net:main:/etc/opendkim/keys/tachtler.net/main.private
HINWEIS - Im AMaViS ist das einzige benötigte Header-Feld
subject
, im Gegensatz dazu ist korrekterweise bei OpenDKIM dies das Header-Feld From
, welches mindestens im Header vorhanden sein muss!
(Siehe auch RFC6376 Section 5.4)
/etc/opendkim/TrustedHosts
Nachfolgende Konfigurationsdatei in nachfolgendem Verzeichnis mit ebenfalls nachfolgendem Namen:
/etc/opendkim/TrustedHosts
beinhaltet einzelne IP-Adressen oder ganze Netze, für die keine DKIM-Signaturprüfung und auch keine DKIM-Signaturerstellung durchgeführt werden soll. Normalerweise sind dies einzelne interne IP-Adressen oder eigene ganze Netze.
Nachfolgende Änderungen sind an der Konfigurationsdatei /etc/opendkim/TrustedHosts
durchzuführen:
(Komplette Konfigurationsdatei)
# OPENDKIM TRUSTED HOSTS # To use this file, uncomment the #ExternalIgnoreList and/or the #InternalHosts # option in /etc/opendkim.conf then restart OpenDKIM. Additional hosts # may be added on separate lines (IP addresses, hostnames, or CIDR ranges). # The localhost IP (127.0.0.1) should always be the first entry in this file. 127.0.0.1 ::1 #host.example.com #192.168.1.0/24 # Tachtler 192.168.0.0/24 192.168.1.0/24 192.168.2.0/24 88.217.171.167/32
OpenDKIM Dienst/Daemon-Start einrichten
Um den OpenDKIM der als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl enable opendkim ln -s '/usr/lib/systemd/system/opendkim.service' '/etc/systemd/system/multi-user.target.wants/opendkim.service'
Eine Überprüfung, ob beim Neustart des Server der opendkim
-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 opendkim opendkim.service enabled
bzw.
# systemctl is-enabled opendkim enabled
Erster Start OpenDKIM
Um den OpenDKIM zu starten kann nachfolgender Befehl angewandt werden:
# systemctl start opendkim
Eine Überprüfung ob der Start des OpenDKIM erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte:
# systemctl status opendkim opendkim.service - DomainKeys Identified Mail (DKIM) Milter Loaded: loaded (/usr/lib/systemd/system/opendkim.service; enabled) Active: active (running) since Mon 2015-10-19 16:43:11 CEST; 7s ago Docs: man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html Process: 4878 ExecStart=/usr/sbin/opendkim $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 4879 (opendkim) CGroup: /system.slice/opendkim.service └─4879 /usr/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendk... Oct 19 16:43:11 server70.idmz.tachtler.net systemd[1]: Starting DomainKeys Id... Oct 19 16:43:11 server70.idmz.tachtler.net systemd[1]: Started DomainKeys Ide... Oct 19 16:43:11 server70.idmz.tachtler.net opendkim[4879]: OpenDKIM Filter v2... Hint: Some lines were ellipsized, use -l to show in full.
bzw. mit nachfolgendem Befehl, ob der Dienst/Daemon in der Prozessliste erscheint:
# ps aux | grep opendkim opendkim 4879 0.0 0.1 71048 2168 ? Ssl 16:43 0:00 /usr/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid root 4885 0.0 0.0 112640 928 pts/0 S+ 16:43 0:00 grep --color=auto opendkim
Eine weitere Möglichkeit ist die Überprüfung des journal
, was mit nachfolgendem Befehl durchgeführt werden kann:
Oct 19 16:43:11 server70.idmz.tachtler.net systemd[1]: Starting DomainKeys Ident -- Subject: Unit opendkim.service has begun with start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit opendkim.service has begun starting up. Oct 19 16:43:11 server70.idmz.tachtler.net systemd[1]: Started DomainKeys Identi -- Subject: Unit opendkim.service has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit opendkim.service has finished starting up. -- -- The start-up result is done. Oct 19 16:43:11 server70.idmz.tachtler.net opendkim[4879]: OpenDKIM Filter v2.10
Konfiguration: opendkim-milter
Nachfolgende Änderungen werden an den Konfigurationsdateien
/etc/postfix/main.cf
/etc/postfix/master.cf
durchgeführt, um eine Anbindung des Postfix an den OpenDKIM zu realisieren.
Dabei soll die Anbindung von Postfix an den OpenDKIM mit dem Verfahren
opendkim-milter
erfolgen.
/etc/postfix/main.cf
Hier die Änderungen an der Konfigurationsdatei /etc/postfix/main.cf
(Nur relevanter Ausschnitt):
... # OpenDKIM (opendkim-milter) opendkim_milter = inet:192.168.0.70:10012 ...
/etc/postfix/master.cf
Hier die Änderungen an der Konfigurationsdatei /etc/postfix/master.cf
(Nur relevanter Ausschnitt):
# # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master" or # on-line: http://www.postfix.org/master.5.html). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== # Tachtler - disabled - #smtp inet n - n - - smtpd # Tachtler - new - # Incoming traffic from untrust networks, with postscreen. 192.168.1.60:2525 inet n - n - 1 postscreen # Tachtler - enabled - # Incoming traffic passed from untrust networks, with postscreen. smtpd pass - - n - - smtpd -o smtpd_milters=${opendkim_milter} ...
Nachfolgend Erklärungen zu den WICHTIGSTEN Konfigurationen:
-o smtpd_milters=${opendkim_milter}
Die Option sorgt dafür, dass dem Parameter smtpd_milter
der Inhalt des Parameters opendkim_milter
übergeben wird. Falls mehrere MILTER zum Einsatz kommen, wird hier die Reihenfolge festgelegt, in der diese aufgerufen werden!
Neustart
Falls vorstehende Änderungen (natürlich an die jeweiligen Bedürfnisse angepasst) durchgeführt wurden, muss ein Neustart von Postfix durchgeführt werden.
Danach kann der postfix-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart 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 Thu 2015-10-15 11:11:26 CEST; 7s ago Process: 1128 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS) Process: 1144 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) Process: 1141 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS) Process: 1138 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS) Main PID: 1216 (master) CGroup: /system.slice/postfix.service ├─1216 /usr/libexec/postfix/master -w ├─1217 pickup -l -t unix -u -o content_filter=lmtp:[192.168.0.70]... └─1218 qmgr -l -t unix -u Oct 15 11:11:26 server60.idmz.tachtler.net systemd[1]: Starting Postfix Mail... Oct 15 11:11:26 server60.idmz.tachtler.net postfix/postfix-script[1214]: sta... Oct 15 11:11:26 server60.idmz.tachtler.net postfix/master[1216]: daemon star... Oct 15 11:11:26 server60.idmz.tachtler.net systemd[1]: Started Postfix Mail ... Hint: Some lines were ellipsized, use -l to show in full.
Test
Nachfolgend soll ein Test darin bestehen, dass eine e-Mail von einem externen Server an Postfix gesendet wird, und dieser dann die DKIM-Signatur des absendenden e-Mail-Servers prüft.
Wichtig sind zwei Einträge, in
- den Header-Zeilen der eingehenden e-Mail
- die LOG-Einträge im Server, auf dem OpenDKIM -
opendkim-milter
läuft:
Überprüfung: Header-Zeilen
Nachfolgender Eintrag sollte in den Header-Zeilen einer eingehenden e-Mail zu finden sein, um das Ergebnis der OpenDKIM - opendkim-milter
Überprüfung zu zeigen:
DKIM-Filter: OpenDKIM Filter v2.10.3 mx1.tachtler.net D6D531800089 Authentication-Results: mx1.tachtler.net; dkim=pass (4096-bit key) header.d=nausch.org header.i=@nausch.org header.b=XLb6bDQC
* Das Ergbenis kann hier pass
, fail
und none
sein.
Überprüfung: /var/log/maillog
Nachfolgender Eintrag sollte in den LOG-Einträgen des Servers auf dem der OpenDKIM - opendkim-milter
läuft bei einer eingehenden e-Mail zu finden sein, um das Ergebnis der OpenDKIM - opendkim-milter
Überprüfung zu dokumentieren:
Oct 19 16:50:02 server70 opendkim[4879]: D6D531800089: mx01.nausch.org [217.91.103.190] not internal Oct 19 16:50:02 server70 opendkim[4879]: D6D531800089: not authenticated Oct 19 16:50:02 server70 opendkim[4879]: D6D531800089: DKIM verification successful
Test Werkzeuge
Nachfolgende externe Links führen zu verschiedenen Test Werkzeugen: