opendkim milter가 적절한 서버 소켓에서 실행되지 않습니다.

opendkim milter가 적절한 서버 소켓에서 실행되지 않습니다.

다음 오류로 인해 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

(암호화되지 않은, 업데이트되지 않았을 수도 있음) 문서에 대해서는 아무것도 발견되지 않았습니다 status=78.
그러나 확실히 밀터 구성은 어떻게든 올바르지 않습니다. /etc/postfix/main.cf 다음을 정의합니다:

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

반면 /etc/opendkim.conf

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

다음 사항을 확인했습니다.
• 원래 참조된 opendkim 구성은 ExternalIgnoreList refile:/etc/opendkim/TrustedHosts기존 파일은 /etc/opendkim/trusted.hosts. 이는 전체 블록에 대해 반복됩니다. 전체 블록이 소문자로 구분된 파일 이름으로 수정되었으며 서비스가 다시 시작되었습니다.

그러나 이메일은 전송되는 동안 다음과 같이 postfix에 의해 기록됩니다. 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

또한 pid 파일이 표시되지 않습니다./var/run/opendkim/

smtpd_milters = local:opendkim/opendkim.sock아마도 postfix 구성과 opendkim 정의 사이에 몇 가지 잘못된 점이 있을 수 있습니다 Socket. 무엇을 변경해야 합니까?

업데이트
warning: connect to Milter service local:opendkim/opendkim.sock: Permission denied여전히 메일 로그에 있으므로 해당 구성 요소가 잘못되었습니다.

설정을 postfix/main.cf다음으로 변경

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

결과는 다음과 같습니다: warning: connect to Milter service local:/var/spool/postfix/opendkim/opendkim.sock: No such file or directory. 의 존재가 /var/spool/postfix/opendkim/opendkim.sock확인되었습니다.

답변1

이는 소켓이 시스템에 있는 경로이지만 chrooted smtpd 인스턴스가 볼 수 있는 경로는 아닙니다.

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

Postfix smtpd가 경로를 원합니다상대적인chroot 디렉토리로 이동하면 시작 후 경로에 대해 알 수 없습니다 /var/spool/postfix/.

smtpd_milters = unix:opendkim/opendkim.sock

/usr/share/doc/postfix/MILTER_README자세한 내용은 및 에서 찾을 수 있습니다 man 5 master. 여기에 주요 정보를 인용하면 다음과 같습니다.

smtpd(8) 또는 cleanup(8) 프로세스가 chroot로 실행되면 절대 경로 이름이 해석됩니다.Postfix 대기열 디렉토리에 상대적. 많은 시스템에서 local은 unix의 동의어입니다.

답변2

부분적인 해결책

sudo chown opendkim:postfix /var/spool/postfix/opendkim postfix에 생성 권한을 부여해야 했습니다.opendkim.sock

그리고 opendkim.service: Can't open PID file /run/opendkim/opendkim.pid (yet?) after start: Operation not permitted그것이 일어나는 동안 그것은 일시적이었습니다

Started OpenDKIM Milter.그 직후에 후속 조치를 취했고 /run/opendkim/opendkim.pid사실상 루트 소유의 계정이 생성되었습니다 opendkim.pid.

관련 정보