postfix / smtpd: advertencia: conéctese al servicio Milter unix: /var/run/opendkim/opendkim.sock: No existe tal archivo o directorio

36

Tengo un problema con Postfix en Debian después de actualizar Squeeze a Wheezy. Postfix se configuró para firmar mensajes usando dkim-filter. Antes de la actualización, todo funcionaba perfectamente, ahora falla en la conexión con el servicio (sockets tcp o unix). Pensé que tal vez se debía al cambio de Debian a opendkim, así que eliminé dkim-filter e instalé opendkim, el mismo problema. Incluso intenté configurar la conexión de socket de archivo Unix en lugar de la opción tcp - mismo problema:

postfix/smtpd: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory

o (con tcp / ip):

postfix/cleanup: warning: connect to Milter service inet:localhost:8891: Connection refused

Lo comprobé dos veces: el archivo de socket existe y el servicio estaba escuchando en el puerto 8891.

¿Qué puedo hacer para arreglar esto?

Rogers
fuente

Respuestas:

58
  1. Compruebe si opendkim se está ejecutando. (Supongo que es como viste el archivo socket).
  2. ¿Configuraste opendkim? El archivo de configuración es /etc/opendkim.conf.

    Debe actualizar el archivo para que coincida con su sitio / dominio y la ruta dkim.key .

  3. Agregar postfix al grupo opendkim

    Si el permiso opendkim.sock es el siguiente

    $ ls -l / var / run / opendkim
    
    -rw-rw-r-- 1 opendkim opendkim 6 de mayo 2 14:56 opendkim.pid
    srwxrwxr-x 1 opendkim opendkim 0 2 de mayo 14:56 opendkim.sock
    

    Si no, asegúrese de que UMaskesté configurado como 0002in /etc/opendkim.conf.

    Luego haz lo siguiente

    sudo adduser postfix opendkim
  4. Postfix corriendo en chroot

    Modificar /etc/default/opendkim, cambiar la opción SOCKET para colocar la ubicación del chroot

    SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

    Deberá crear un directorio /var/spool/postfix/var/run/opendkimy cambiar su permiso

    sudo mkdir -p / var / spool / postfix / var / run / opendkim
    sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim
    
  5. Reiniciar opendkim

    sudo service opendkim restart
    
John Siu
fuente
44
Encontré un problema similar causado por permisos demasiado restrictivos en el directorio opendkim.
Darrell Duane
1
Estoy seguro de que tenía opendkim funcionando antes, pero noté que no funcionaba después de actualizar Ubuntu 15.04 a 15.10. La actualización de la ruta del socket /etc/default/opendkimal mismo que ya había definido lo /etc/opendkim.confarregló. ¡Gracias!
Haprog
mi problema es que estoy ejecutando postfix en chroot y estoy usando unix socket. Si ve No such file or directoryque postfix medio no puede encontrar la ruta, pero buscó el socket dentro de / var / spool / postfix / var / run / opendkim /, not / var / run / opendkim
HVNSweeting
@HVNSweeting ¿No está cubierto en (4)?
John Siu
Es por eso que comento y voté en lugar de crear una nueva respuesta. La pregunta contiene tantos problemas, porque si opendkim está configurado correctamente, el socket TCP debería funcionar. Gracias
HVNSweeting
11

Resumen rápido que me ayudó a corregir esta advertencia en Ubuntu 16.04 LTS: Postfix versión 3.1.0-3ubuntu0.2 Opendkim versión 2.10.3-3build1

  • (Supongo que Postfix y Opendkim ya están instalados, integrados entre sí y la única advertencia que está recibiendo es 'conectarse al servicio Milter local: /var/spool/postfix/opendkim/opendkim.sock: No existe tal archivo o directorio')

  • Agregue postfix de usuario al grupo opendkim (omita si ya lo hizo)

sudo adduser postfix opendkim

  • Crear directorio y establecer propietario (omitir si ya está hecho)

sudo mkdir -p / var / spool / postfix / var / run / opendkim

sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim

  • Verificar permisos:

ls -l / var / spool / postfix / var / run / opendkim

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
  • Edite los archivos de configuración de opendkim: /etc/opendkim.conf, agregue la línea

Socket local: /var/spool/postfix/var/run/opendkim/opendkim.sock

/ etc / defaults / opendkim, agregar

SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

  • Editar configuración de postfix: /etc/postfix/main.cf
# Milter configuration
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
milter_protocol = 6
milter_default_action = accept
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
  • Reiniciar servicios (o reiniciar)

systemctl reiniciar opendkim

systemctl reiniciar postfix

Eso es. No sé por qué es necesario escribir.

smtpd_milters = unix: var / run / opendkim / opendkim.sock

en lugar de

smtpd_milters = local: /var/spool/postfix/var/run/opendkim/opendkim.sock

. Si alguien sabe, las explicaciones son bienvenidas.

Fedorov7890
fuente
2
Si postfix se ejecuta con CHROOT, las rutas de configuración son relativas a eso. Terminaría con postfix tratando de resolver /var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock
oscurezca el
5

Estaba enfrentando el mismo problema en el tramo de Debian, que resultó ser causado por un archivo de servicio systemd roto para opendkim. Vea esta respuesta para una solución: https://serverfault.com/a/847442/84962

Esta solución se reduce a:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Serrano
fuente
1
Tengo el sistema Ubuntu, donde solo este consejo ayudó, mientras que todo lo demás no funcionó.
silpol
Ejecuto 16.04 y /lib/opendkim/opendkim.service.generate no existe
Laurent
Funciona bien en Ubuntu 18.04. Gracias.
Duque
Esto resolvió mi problema en Debian 9.
jchook
2
smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock

usermod -G opendkim,opendmarc
Олег Гинзбург
fuente
55
Esta sería una respuesta mucho mejor si incluyera una explicación de cómo y por qué esto responde la pregunta.
Stephen Rauch
3
¡Bienvenido a Unix y Linux! Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, ¡no solo la persona que pregunta ahora! Por favor, editar su respuesta para agregar explicación y dar una indicación de lo que se aplican limitaciones y supuestos.
Toby Speight
1

Una alternativa sería deshabilitar el chroot, esto tiene implicaciones de seguridad:

vi /etc/postfix/master.cf

# service type  private unpriv  chroot  wakeup  maxproc command + args
cleanup   unix  n       -       n       -       0       cleanup

Las advertencias dicen postfix/cleanup, por lo que puede desactivar el chroot para este servicio.

Plup
fuente
0

conectarse al servicio Milter unix: /clamav/clamav-milter.ctl: permiso denegado

ls -l / var / spool / postfix / clamav srw-rw ---- 1 clamav clamav 0 4 de abril 17:59 clamav-milter.ctl

clamav-milter.conf

usuario clamav MilterSocketGroup postfix MilterSocketMode 660

permisos de usuario para el milter

postfix chown: postfix /var/spool/postfix/clamav/clamav-milter.ctl

Funciona para mi

gjerich
fuente
0

Tuve un problema porque OpenDKIM y Postfix funcionan con los derechos de diferentes usuarios y escriben y leen desde el mismo socket.

Agregué usuario postfix al grupo opendkim:

sudo usermod -a -G opendkim postfix
Alex Gvar
fuente