Spis Treści
Konfiguracja OpenDKIM
Dawny milter-dkim zmienił się w OpenDKIM. Zasada działania jest ta sama, plik konfiguracyjny niemalże identyczny. Ale kilka zmian jest.
Instalacja
Wykorzystując niniejsze wiki, w systemie nie ma śladu po sendmailu wraz z biblioteką milter (libmilter). Niemniej skutkuje to potrzebą zainstalowania sendmaila z ports, czyli konflikt z postfixem. Dlatego też można "ręcznie" (nie jest to make buildworld) dokompilować oraz doinstalować libmilter.
Kolejnym krokiem jest zainstalowania OpenDKIM.
Instalacja libmilter ze źródeł systemu
Jest to potrzebne, aby OpenDKIM mógł w ogóle "ruszyć".
cd /usr/src/lib/libmilter/
make all install
Instalacja samego OpenDKIM
cd /usr/ports/mail/opendkim
make config
# Wybrać opcje: FILTER OPENLDAP QUERY_CACHE STATS STOCK_RESOLVER
# jeżeli lokalnie jest unbound, to można w ostatniej opcji wybrać opcję UNBOUND
make all install clean
Plik konfiguracyjny
cd /usr/local/etc/
cp mail/opendkim.conf.sample opendkim.conf
mkdir -p /var/db/milteropendkim/
touch /var/db/milteropendkim/example.private
chown -R mailnull:mailnull /var/db/milteropendkim/
chmod 0600 /var/db/milteropendkim/example.private
Jeżeli będziemy również podpisywać maile, to należy wykonać polecenie:
mkdir -p /usr/local/etc/opendkim.d/
chown mailnull:mailnull /usr/local/etc/opendkim.d/
Wygenerowanie kluczy do podpisywania
W atrybutach programu opendkim-genkey podajemy selector. Ja ustawiam wszędzie email, ale oczywiście może być inny. Co skutkuje, że nazwa dns-owa będzie inna (np. m190), ale wartości rekordu TXT nadal będzie występować s=email. I po wygenerowaniu klucza oraz wpisu DNSowego nie wolno nic zmieniać (nawet jakby kusiło zmienić wartość dla s=. Bo będą problemy i mail będzie oznaczany jako DKIM: fail. Więc pamiętaj: nie bądż bardziej święty od Papieża.
cd /var/db/milteropendkim/
opendkim-genkey -r -d gdbd.pl -s email
mv email.private email.key
chown mailnull:mailnull email.*
# sprawdzenie poprawności wygenerowanego klucz
#
opendkim-testkey -vvv -d gdbd.pl -s email -k /var/db/milteropendkim/email.key -x /usr/local/etc/opendkim.conf
Konfiguracja tylko do sprawdzania nadawców
Jak już odfiltrować wszelkie komentarze, to plik konfiguracyjny sprowadza się do kilku linijek:
Background Yes
BaseDirectory /var/run/milteropendkim
Canonicalization simple/simple
Domain gdbd.pl
DontSignMailTo *
FixCRLF no
KeyFile /var/db/milteropendkim/example.private
Selector gdbd-dkim-signer
Socket inet:3322@127.0.0.1
Syslog No
TemporaryDirectory /var/tmp
UMask 022
SoftwareHeader Yes
Konfiguracja razem z podpisywaniem
Mode sv
Background Yes
BaseDirectory /var/run/milteropendkim
Canonicalization simple/simple
##Domain gdbd.pl # Skoro jest KeyTable, to ta opcja jest "martwa"
FixCRLF yes
KeyTable refile:/usr/local/etc/opendkim.d/keytable
SigningTable refile:/usr/local/etc/opendkim.d/signingtable
ExternalIgnoreList refile:/usr/local/etc/opendkim.d/trustedhosts
InternalHosts refile:/usr/local/etc/opendkim.d/trustedhosts
Socket inet:3322@127.0.0.1
Syslog yes
SyslogSuccess yes
LogWhy yes
TemporaryDirectory /var/tmp
UMask 022
SoftwareHeader Yes
OversignHeaders From,Subject
UserID mailnull:mailnull
/usr/local/etc/opendkim.d/keytable
gdbd.pl gdbd.pl:email:/var/db/milteropendkim/email.key
/usr/local/etc/opendkim.d/signingtable
*@gdbd.pl gdbd.pl
/usr/local/etc/opendkim.d/trustedhosts
127.0.0.1 siec.lan/cidr
Skrypty pomocnicze do wygenerowania keytable, signingtable
find -s /var/db/milteropendkim/ -name email.key | awk -F "/" '{print $5,$5":email:"$0}' > /usr/local/etc/opendkim.d/keytable
find -s /var/db/milteropendkim/ -name email.key | awk -F "/" '{print "*@"$5,$5}' > /usr/local/etc/opendkim.d/signingtable
Dodanie do rc.conf
milteropendkim_enable="NO"
milteropendkim_domain="wtp3.org,modlin.wtp3.org"
milteropendkim_flags="-b v -c simple/simple"
milteropendkim_socket="inet:3322@127.0.0.1"
milteropendkim_cfgfile="/usr/local/etc/opendkim.conf"
Wersja z podpisywaniem
# opcje z rc.conf nadpisują ustawienia w opendkim.conf, zatem milteropendkim_socket można pominąć
milteropendkim_enable="NO"
milteropendkim_socket="inet:3322@127.0.0.1"
milteropendkim_cfgfile="/usr/local/etc/opendkim.conf"
Uruchomienie usługi poprzez deamontools
(To już było na stronie głównej)
Konfiguracja w DNS
Aby zadziałało podpisywanie maili należy wykonać stosowny wpis DNS dla obsługiwanej domeny. Pomocny jest plik ze skryptu opendkim-genkey (np. email.txt), który zawiera wszystkie potrzebne informacje. Konieczne oczywiście wgranie nowej wersji strefy.
Konfiguracja postfixa
## main.cf milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:3322 non_smtpd_milters = $smtpd_milters
Uruchomienie lokalnego socketu do komunikacji postfix - opendkim
Wynikło to z konieczności uruchomienie poprawnej komunikacji w przypadku korzystania z adresacji IPv4 oraz IPv6. Remedium jest lokalny socket (plik) zamiast socketu sieciowego.
Zmiany w /etc/rc.conf
milteropendkim_socket="local:/var/run/milteropendkim/opendkim.sock"
Konifguracja w main.cf postfixa
smtpd_milters = unix:/var/run/milteropendkim/opendkim.sock
Dopisanie użytkowników postfix, mailnull do grup
pw mod user postfix -G postfix,mail,mailnull pw mod user mailnull -G postfix
Poprawka dla skryptu startowego
--- /usr/local/etc/rc.d/milter-opendkim 2014-12-15 09:27:10.136685000 +0100
+++ /usr/local/etc/rc.d/milter-opendkim.new 2015-06-12 15:53:11.188277365 +0200
@@ -38,6 +38,7 @@
extra_commands="reload"
start_precmd="dkim_prepcmd"
+start_postcmd="dkim_start_postcmd"
stop_postcmd="dkim_postcmd"
command="/usr/local/sbin/opendkim"
_piddir="/var/run/milteropendkim"
@@ -51,6 +52,7 @@
#
: ${milteropendkim_enable="NO"}
: ${milteropendkim_uid="mailnull"}
+: ${milteropendkim_gid="mailnull"}
: ${milteropendkim_cfgfile="/usr/local/etc/mail/opendkim.conf"}
# Options other than above can be set with $milteropendkim_flags.
@@ -157,6 +159,18 @@
if [ -n "${milteropendkim_uid}" ] ; then
chown ${milteropendkim_uid} ${_piddir}
fi
+ if [ -n "${milteropendkim_gid}" ] ; then
+ chgrp ${milteropendkim_gid} ${_piddir}
+ fi
+}
+
+dkim_start_postcmd ()
+{
+ if [ -S ${milteropendkim_socket##local:} ] ; then
+ chmod 0775 ${milteropendkim_socket##local:}
+ elif [ -S ${milteropendkim_socket##unix:} ] ; then
+ chmod 0775 ${milteropendkim_socket##unix:}
+ fi
}
dkim_postcmd()
Źródła w sieci internet
http://www.cioby.ro/linux/configuring-opendkim-to-sign-postfix-emails.html1 - jak to zrobić na debianie
http://dkimcore.org/1 - sprawdzenie swojej konfiguracji
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.