Dies ist eine alte Version des Dokuments!
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 |
Nachfolgende Dateien sollten nun entstanden sein, was mit nachfolgendem Befehl überprüft werden kann:
# ls -l /etc/opendkim/keys total 8 -rw------- 1 root root 887 Mar 22 03:10 main.private -rw------- 1 root root 310 Mar 22 03:10 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
Nachfolgende 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. ann 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. Canonicalization relaxed/relaxed ## 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:
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
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
<code>
main._domainkey.tachtler.net tachtler.net:main:/etc/opendkim/keys/tachtler.net/main.private
</code>
* <code bash></code>
abc
* <code bash></code>
abc
==== /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)
<code bash>
# 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
</code>
==== 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:
<code>
# systemctl enable opendkim
ln -s '/usr/lib/systemd/system/opendkim.service' '/etc/systemd/system/multi-user.target.wants/opendkim.service'
</code>
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:
<code>
# systemctl list-unit-files –type=service | grep -e opendkim
opendkim.service enabled
</code>
bzw.
<code>
# systemctl is-enabled opendkim
enabled
</code>
==== Erster Start OpenDKIM ====
Um den OpenDKIM zu starten kann nachfolgender Befehl angewandt werden:
<code>
# systemctl start opendkim
</code>
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:
<code>
# 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.
</code>
bzw. mit nachfolgendem Befehl, ob der Dienst/Daemon in der Prozessliste erscheint:
<code>
# 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
</code>
Eine weitere Möglichkeit ist die Überprüfung des journal
, was mit nachfolgendem Befehl durchgeführt werden kann:
<code>
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
</code>
===== 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):
<code ini>
…
# OpenDKIM (opendkim-milter)
opendkim_milter = inet:192.168.0.70:10012
…
</code>
==== /etc/postfix/master.cf ====
Hier die Änderungen an der Konfigurationsdatei /etc/postfix/master.cf
(Nur relevanter Ausschnitt):
<code ini>
#
# 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}
…
</code>
Nachfolgend Erklärungen zu den WICHTIGSTEN Konfigurationen:
* <code ini> -o smtpd_milters=${opendkim_milter}</code>
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:
<code>
# systemctl restart postfix
</code>
Mit nachfolgendem Befehl kann der Status des abgefragt werden:
<code>
# 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.
</code>
===== 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:
<code>
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
</code>
* 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:
<code>
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
</code>
===== Test Werkzeuge =====
Nachfolgende externe Links führen zu verschiedenen Test Werkzeugen:
* SPF - dmarcian - SPF Surveyor
* OpenDKIM - protodave - DKIM Key Checker
* OpenDMARC** - dmarcian - DMARC Inspector