Pregunta No se puede cambiar el socket OpenDKIM en el tramo de Debian en / etc / default / opendkim


Estoy tratando de configurar opendkim en el tramo de Debian pero no logro cambiar el socket. Quiero cambiar el socket a /var/spool/postfix/opendkim/opendkim.sock así que puedo usarlo con postfix.

Yo he añadido Socket local:/var/spool/postfix/opendkim/opendkim.sock a /etc/opendkim.conf

y también trató de añadir SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock a /etc/default/opendkim (que tuve que crear).

No importa lo que cambie o la frecuencia con la que reinicie opendkim, siempre usa /var/run/opendkim/opendkim.sock como su zócalo.

➜  ~ netstat -a | fgrep LISTEN | grep open
unix  2      [ ACC ]     STREAM     LISTENING     5534128  /var/run/opendkim/opendkim.sock

➜  ~ sudo systemctl status opendkim.service

● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
   Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-04-30 12:41:54 CEST; 5min 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: 25246 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock (code=exited, status=0/SUCCESS)
 Main PID: 25248 (opendkim)
    Tasks: 7 (limit: 4915)
   CGroup: /system.slice/opendkim.service
           ├─25248 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
           └─25249 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

Apr 30 12:41:54 vServer systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter...
Apr 30 12:41:54 vServer systemd[1]: Started OpenDKIM DomainKeys Identified Mail (DKIM) Milter.
Apr 30 12:41:54 vServer opendkim[25249]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)

¿Qué estoy haciendo mal? (Supongo que es mi error ya que no puedo encontrar a nadie más con el mismo problema)

ACTUALIZAR:

Cambiando /etc/default/opendkim a SOCKET="inet:8891@localhost" y cambiando la configuración de postfix para usar los resultados de este socket inet:localhost:8891: Connection refused

ACTUALIZACIÓN2:

Ahora he reemplazado con el archivo incluido en el paquete extendido de Debian:

# Command-line options specified here will override the contents of                                                                                                         
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.                                                                                                       
#DAEMON_OPTS=""                                                                                                                                                             
# Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with                                                                                                   
# postfix in a chroot:                                                                                                                                                      
RUNDIR=/var/spool/postfix/var/run/opendkim                                                                                                                                  
#RUNDIR=/var/run/opendkim                                                                                                                                                   
#                                                                                                                                                                           
# Uncomment to specify an alternate socket                                                                                                                                  
# Note that setting this will override any Socket value in opendkim.conf                                                                                                    
# default:                                                                                                                                                                  
SOCKET=local:$RUNDIR/opendkim.sock                                                                                                                                          
# listen on all interfaces on port 54321:                                                                                                                                   
#SOCKET=inet:54321                                                                                                                                                          
# listen on loopback on port 12345:                                                                                                                                         
#SOCKET=inet:12345@localhost                                                                                                                                                
# listen on 192.0.2.1 on port 12345:                                                                                                                                        
#SOCKET=inet:12345@192.0.2.1                                                                                                                                                
USER=opendkim                                                                                                                                                               
GROUP=opendkim                                                                                                                                                              
PIDFILE=$RUNDIR/$NAME.pid                                                                                                                                                   
EXTRAAFTER=   

El incluye las siguientes líneas donde se decide el zócalo:

if [ -f /etc/opendkim.conf ]; then                                                                                                                                          
    CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`                                                                                                    
fi                                                                                                                                                                          

# This can be set via Socket option in config file, so it's not required                                                                                                    
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then                                                                                                                            
    DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"                                                                                                                                   
fi

14
2018-04-30 10:52


origen


"para que pueda usarlo con Postfix" ¿Está seguro de que necesita esto para que funcione con Postfix? - Miloš Đakonović
@Miloshio lo pensé así como postfix se ejecuta en un chroot. (De acuerdo a el tutorial que estoy siguiendo) - Lukas Winkler
@Miloshio postfix reclamaciones connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directory Incluso pensó que existe ya que se chrootea a /var/spool/postfix/ - Lukas Winkler
Suena como si no estuviera chrooteado. Por favor, ¿podría comprobar de nuevo? Tus caminos deben verse como /var/spool/postfix/var/run... si esto es - Miloš Đakonović
En cualquier escenario, usaría inet en lugar de local. Tal vez, si no está depurando el servicio, intente implementar: digitalocean.com/community/tutorials/… - Miloš Đakonović


Respuestas:


Finalmente encontré la solución.

los /etc/init.d/opendkim no parece hacer nada Pero en cambio el archivo de servicio /lib/systemd/system/opendkim.service Se utiliza el que tenía el socket mal codificado.

Pero el paquete debian también parece incluir un bash que genera el servicio correcto de systemd.

Así que después de correr

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart

y al reiniciar opendkim, el archivo de socket aparece en el lugar esperado, que se puede verificar llamando:

tail /var/log/mail.log | grep OpenDKIM

Actualización: Parece que hay un informe de error de Debian sobre este problema: # 861169


21
2018-04-30 12:08





Para usar inet socket que necesita especificar:

SOCKET="inet:12301@localhost" a /etc/default/opendkim

También, necesita cambiar la configuración en Postfix en consecuencia:

en /etc/postfix/main.cf añadir:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

si no puede establecer local al camino deseado, te sugiero que:

  • tomar un registro de mail, syslog o opendkim en /var/log y comprobar

  • comprobar /etc/init.d/opendkim Haga un guión e inspeccione si el archivo de calcetín está configurado a un valor

  • tratar de ir con el valor predeterminado local:/var/run/opendkim/opendkim.sock - y especificar smtpd_milters = local:/var/run/opendkim/opendkim.sock y non_smtpd_milters = local:/var/run/opendkim/opendkim.sock en /etc/postfix/main.cf


2
2018-04-30 11:24



Ahora he cambiado la configuración para que sea exactamente igual a la suya (el mismo puerto), pero todavía tengo warning: connect to Milter service inet:localhost:12301: Connection refused - Lukas Winkler
¿Intentaste reiniciar ambos servicios después de editar? - Miloš Đakonović
Lo hice y ahora también reinicié. Al mirar mail.log siempre veo la siguiente línea OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock) - Lukas Winkler
Ves esa línea incluso con SOCKET="inet:12301@localhost establecer en el archivo conf opendkim? - Miloš Đakonović
gracias por las ideas Encontré la solución (hay algo extraño con el paquete debian) - Lukas Winkler


Esto funcionó para mí:

editar /lib/systemd/system/opendkim.service

cambio:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

a:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost

systemctl daemon-reload

y

systemctl opendkim restart

1
2017-07-28 12:02



Este es exactamente el cambio que realiza el script /lib/opendkim/opendkim.service.generate. - Lukas Winkler
Muchas gracias - esto lo arregló en Ubuntu 16.04.3 LTS que carece opendkim.service.generate. - Ivan Mir


No tengo suficiente reputación para comentar y quería reconocer que, después de horas de búsqueda de una solución para el mensaje de error de "conexión rechazada" de OpenDKim-Postfix, el /lib/systemd/system/opendkim.service edición proporcionada por Locutus Trabajó con Ubuntu 17.04:

warning: connect to Milter service inet:localhost:8891: Connection refused

editar /lib/systemd/system/opendkim.service

cambio:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

a:

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost

systemctl daemon-reload

y

systemctl opendkim restart

Antes de intentar la edición, agregué el usuario postfix al grupo opendkim y probé /lib/opendkim/opendkim.service.generate por Lukas Winkler's solución. El error de conexión rechazada persistió hasta que el número de puerto se agregó a /lib/systemd/system/opendkim.service.

Actualizar /lib/systemd/system/opendkim.service, Utilicé el puerto 8891 para Ubuntu y comenté la línea ExecStart original para propósitos de prueba, luego agregué una nueva línea con el puerto #:

/lib/systemd/system/opendkim.service (Service category):

    [Service]
    Type=forking
    PIDFile=/var/run/opendkim/opendkim.pid
    User=opendkim
    UMask=0007
    #ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
    ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:8891@localhost
    Restart=on-failure
    ExecReload=/bin/kill -USR1 $MAINPID

El número de puerto correspondiente fue especificado adicionalmente en /etc/opendkim.conf:

Socket                  inet:8891@localhost

Y /etc/postfix/main.cf:

smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Después de reiniciar el demonio systemctl, opendkim y postfix, el correo saliente se firmó sin problema y el registro de correo mostró "Se agregó el campo DKIM-Firma".

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

No hubo problemas de conexión al configurar OpenDkim con Centos7 recientemente, por lo que aparentemente en esta instancia estaba relacionado con Ubuntu. Gracias a Lukas Winkler por publicar la pregunta ya quienes compartieron sus soluciones.


1
2017-09-20 12:07





OpenDKIM funcionó hasta que actualicé mi servidor. OpenDKIM no se iniciaría y no había ningún zócalo en ejecución para que el Milter lo iniciara. En /var/log/syslog Pude ver que opendkim falló al intentar crear un socket en un lugar diferente al anterior a la actualización. Traté de editar la configuración de socket en /etc/opendkim.conf, /etc/default/opendkim y /lib/systemd/system/opendkim.service pero no sirvió de nada. Resulta que la información estaba frente a mi todo el tiempo:

opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter 
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)   
Drop-In: /etc/systemd/system/opendkim.service.d
           └─override.conf    
Active: active (running) since Sat 2017-10-14 16:03:45 CEST; 4h 44min ago

Noté que la configuración se sobrescribió con el archivo "override.conf" y se editó para que se alinee con mi /etc/postfix/main.cf (corre como chroot):

smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = local:/opendkim/opendkim.sock

Editar /etc/systemd/system/opendkim.service.d/override.conf

[Service]
PIDFile=/var/spool/postfix/opendkim/opendkim.pid
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/spool/postfix/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock

Y finalmente reiniciando el demonio y opendkim:

systemctl daemon-reload && systemctl restart opendkim

0
2017-10-14 19:08





Acabo de renombrar /etc/systemd/system/opendkim.service.d/override.conf a /etc/systemd/system/opendkim.service.d/override.conf.old para que no anule los parámetros de ExecStart.

Todo funciona bien seleccionando configuración desde /etc/opendkim.conf


0
2018-04-08 20:23





Mi servicio opendkim no se activó en el puerto 8100 después de la instalación y las soluciones anteriores no ayudaron. Así que intenté

/lib/opendkim/opendkim.service.generate

con dicho

-bash: /lib/opendkim/opendkim.service.generate: No such file or directory

Así que miré el archivo de servicio

cat /lib/systemd/system/opendkim.service
# If you are using OpenDKIM with SQL datasets it might be necessary to start OpenDKIM after the database servers.
# For example, if using both MariaDB and PostgreSQL, change "After=" in the "[Unit]" section to:
# After=network.target nss-lookup.target syslog.target mariadb.service postgresql.service

[Unit]
Description=DomainKeys Identified Mail (DKIM) Milter
Documentation=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
After=network.target nss-lookup.target

[Service]
Type=forking
EnvironmentFile=-/etc/default/opendkim
PIDFile=/var/run/opendkim/opendkim.pid
PermissionsStartOnly=true
User=opendkim
Group=opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS
TimeoutStartSec=10
ExecReload=/bin/kill -USR1 $MAINPID

y encontré caminos extraños

EnvironmentFile=-/etc/default/opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim

y comando

 /usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS

dijo

/usr/sbin/opendkim: option requires an argument -- 'p'

(mira a la segunda línea en la cuota anterior) así que fui a

sudo nano /lib/systemd/system/opendkim.service

y eliminado "-" 3 veces Entonces

sudo systemctl daemon-reload
sudo service opendkim restart
sudo netstat -tulpn

Eso me ayudó :-)


0
2017-07-26 15:10