Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_centos_7_-_opendkim_anbinden_opendkim-milter

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:

  • opendkim - ist im epel-Repository des Drittanbieters EPEL enthalten

Zusätzlich wird nachfolgendes rpm-Paket als Abhängigkeit zusätzlich installiert:

  • libbsd - ist im epel-Repository des Drittanbieters EPEL enthalten
  • libopendkim - ist im epel-Repository des Drittanbieters EPEL enthalten
  • opendbx - ist im epel-Repository des Drittanbieters EPEL enthalten

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änderungen
  • relaxed - 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:

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_centos_7_-_opendkim_anbinden_opendkim-milter.txt · Zuletzt geändert: 2016/04/10 11:16 von klaus