opendkim milter no se inicia en el socket del servidor adecuado

opendkim milter no se inicia en el socket del servidor adecuado

El siguiente error impidió el reinicio de opendkim

× opendkim.service - OpenDKIM Milter
     Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2023-04-22 08:00:27 UTC; 2s ago
[...]    Process: 2295 ExecStart=/usr/sbin/opendkim (code=exited, status=78)
opendkim.service: Control process exited, code=exited, status=78/CONFIG

Intentando consultar el (sin cifrar, y posiblemente no actualizada), no se encontró nada con respecto a status=78.
Pero claramente las configuraciones milter son incorrectas de alguna manera. /etc/postfix/main.cf define:

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

mientras que /etc/opendkim.conftiene

Syslog                  yes
SyslogSuccess           yes
LogWhy                  yes

Canonicalization        relaxed/simple
Mode                    sv
SubDomains              no
OversignHeaders         From

UserID                  opendkim
UMask                   007

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

#Nameservers            127.0.0.1
AutoRestart                     yes
AutoRestartRate                 10/1M
Background                      yes
DNSTimeout                      5
SignatureAlgorithm              rsa-sha256

ExternalIgnoreList      refile:/etc/opendkim/trusted.hosts
InternalHosts           refile:/etc/opendkim/trusted.hosts
KeyTable                refile:/etc/opendkim/key.table
SigningTable            refile:/etc/opendkim/signing.table

PidFile                 /var/run/opendkim/opendkim.pid
# UserID                  opendkim:opendkim

Noté lo siguiente:
• la configuración de opendkim a la que se hacía referencia originalmente, ExternalIgnoreList refile:/etc/opendkim/TrustedHostsmientras que el archivo existente es /etc/opendkim/trusted.hosts. Esto se repite durante todo el bloque. Todo el bloque se modificó a nombres de archivos en minúsculas separados por puntos y luego el servicio se reinicia.

Sin embargo, los correos electrónicos, mientras se envían, quedan registrados por postfix con: warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory

cd /var/spool/postfix/opendkim
-bash: cd: /var/spool/postfix/opendkim: No such file or directory

Tampoco veo ningún archivo pid en/var/run/opendkim/

Probablemente haya algunos errores entre la smtpd_milters = local:opendkim/opendkim.sockconfiguración de postfix y la Socketdefinición de opendkim. ¿Qué necesita ser cambiado?

Actualizar
warning: connect to Milter service local:opendkim/opendkim.sock: Permission deniedtodavía está en los registros de correo, por lo que ese elemento de configuración es incorrecto.

cambiando la configuración postfix/main.cfa

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

da como resultado: warning: connect to Milter service local:/var/spool/postfix/opendkim/opendkim.sock: No such file or directory. /var/spool/postfix/opendkim/opendkim.sockSe verifica la existencia de .

Respuesta1

Si bien esa es la ruta donde se encuentra el socket en el sistema, esa no es la ruta en la que las instancias smtpd chroot lo verán:

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

Postfix smtpd quiere un caminorelativoal directorio chroot, no conoce la /var/spool/postfix/ruta después del inicio.

smtpd_milters = unix:opendkim/opendkim.sock

Puede encontrar los detalles en /usr/share/doc/postfix/MILTER_READMEy man 5 master, simplemente citando la información clave aquí, el énfasis es mío:

Si el proceso smtpd(8) o cleanup(8) se ejecuta con chroot, se interpreta una ruta absolutarelativo al directorio de cola de Postfix. En muchos sistemas, local es sinónimo de Unix.

Respuesta2

Solución parcial

sudo chown opendkim:postfix /var/spool/postfix/opendkim fue requerido para darle a postfix los permisos para crearopendkim.sock

y mientras opendkim.service: Can't open PID file /run/opendkim/opendkim.pid (yet?) after start: Operation not permittedocurrió fue temporal

Started OpenDKIM Milter.siguió poco después y /run/opendkim/opendkim.pidefectivamente se creó como opendkim.pidpropiedad de root.

información relacionada