W celu przyspieszenia działania komunikacji pomiędzy postfixem a OpenDKIM warto wykorzystać lokalny socket plikowy zamiast socketu sieciowego na interfejsie lo0. W tym celu należy wykonać następujące poprawki:
Dodanie użytkownika postfix do grupy mailnull
# pierwsza instalacja
pw mod group mailnull -m postfix
modyfikacje w /etc/rc.conf
Do wykonania tuż po instalacji (dla przypomnienia, gdyby nie było zapisane w dokumentacji dotyczącej instalacji OpenDKIM:
milteropendkim_enable="NO" # -> DaemonTools
milteropendkim_domain="mojadomena.tld"
###milteropendkim_flags="-b sv"
##milteropendkim_socket="inet:3322@127.0.0.1"
milteropendkim_socket="local:/var/run/milteropendkim/opendkim.sock"
milteropendkim_cfgfile="/usr/local/etc/opendkim.conf"
Dodanie poprawek do skryptu startowego milter-opendkim
patch -p0 < ~wtp/scripts/patches/patch__usr_local_etc_rc.d_milter-opendkim
Zaś sama poprawka wygląda następująco (stan na dzień 31.08.2015):
--- /usr/local/etc/rc.d/milter-opendkim.orig 2015-08-14 21:36:55.000000000 +0200
+++ /usr/local/etc/rc.d/milter-opendkim 2015-08-31 22:44:54.974504169 +0200
@@ -38,6 +38,7 @@ rcvar=milteropendkim_enable
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 @@ load_rc_config $name
#
: ${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,21 @@ dkim_prepcmd ()
if [ -n "${milteropendkim_uid}" ] ; then
chown ${milteropendkim_uid} ${_piddir}
fi
+ if [ -n "${milteropendkim_gid}" ] ; then
+ chgrp ${milteropendkim_gid} ${_piddir}
+ fi
+ chmod 0775 ${_piddir}
+}
+
+dkim_start_postcmd ()
+{
+ # postcmd is executed too fast and socket is not created before checking...
+ sleep 1
+ 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()
Usunięcie plików oryginalnych
rm /usr/local/etc/rc.d/milter-opendkim.orig
Ponowne uruchomienie usługi
Może się zdarzyć, że zadziała sysutils/daemontools, ale lepiej wykonać restart samodzielnie:
1 /usr/local/etc/rc.d/milter-opendkim onerestart
OpenDKIM, konfiguracja, poprawki, patch, postfix
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
