opendkim milter não inicia no soquete de servidor adequado

opendkim milter não inicia no soquete de servidor adequado

O seguinte erro impediu a reinicialização do 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

Tentando consultar o (não criptografado, e possivelmente não atualizado), nada foi encontrado em relação ao status=78.
Mas claramente as configurações do milter estão incorretas de alguma forma. /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

enquanto /etc/opendkim.conftem

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

Notei o seguinte:
• a configuração do opendkim originalmente referenciada ExternalIgnoreList refile:/etc/opendkim/TrustedHostsenquanto o arquivo existente é /etc/opendkim/trusted.hosts. Isso se repete para todo o bloco. Todo o bloco foi alterado para nomes de arquivos separados por pontos em letras minúsculas e o serviço foi reiniciado.

No entanto, os e-mails, enquanto são enviados, são registrados pelo postfix com: 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

Também não vejo nenhum arquivo pid em/var/run/opendkim/

Provavelmente há algumas coisas erradas aqui entre a smtpd_milters = local:opendkim/opendkim.sockconfiguração do postfix e a Socketdefinição do opendkim. O que precisa ser mudado?

Atualizar
warning: connect to Milter service local:opendkim/opendkim.sock: Permission deniedainda está nos logs de correio, portanto esse elemento de configuração está errado.

alterando a configuração postfix/main.cfpara

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

resulta em: warning: connect to Milter service local:/var/spool/postfix/opendkim/opendkim.sock: No such file or directory. A existência de /var/spool/postfix/opendkim/opendkim.socké verificada.

Responder1

Embora esse seja o caminho onde o soquete está no sistema, esse não é o caminho que as instâncias smtpd com chroot verão em:

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

Postfix smtpd quer um caminhorelativopara o diretório chroot, ele não sabe o /var/spool/postfix/caminho após o início.

smtpd_milters = unix:opendkim/opendkim.sock

Você pode encontrar os detalhes em /usr/share/doc/postfix/MILTER_READMEe man 5 master, apenas citando as informações principais aqui, com ênfase nas minhas:

Se o processo smtpd(8) ou cleanup(8) for executado em chroot, um nome de caminho absoluto será interpretadorelativo ao diretório de filas do Postfix. Em muitos sistemas, local é sinônimo de unix

Responder2

Solução parcial

sudo chown opendkim:postfix /var/spool/postfix/opendkim foi necessário dar ao postfix as permissões para criaropendkim.sock

e enquanto opendkim.service: Can't open PID file /run/opendkim/opendkim.pid (yet?) after start: Operation not permittedocorreu foi temporário

Started OpenDKIM Milter.seguiu logo em seguida e /run/opendkim/opendkim.pidfoi efetivamente criado como opendkim.pidpropriedade do root.

informação relacionada