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