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


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.