이것은 모두 데비안 테스트에 있습니다(= 지금까지).
구성하려고 하는데 opendkim
원하는 소켓이 사용되지 않습니다.
에 따라 에서 구성할 수 있습니다 man opendkim.conf
. 또한 Jessie의 상자에서 본 파일을 생성해 보았 으나 역시 작동하지 않았습니다.Socket
/etc/opendkim.conf
/etc/default/opendkim
그래서 다음 줄을 입력해 보았습니다 /etc/opendkim.conf
.
Socket inet:39172@localhost
이제 에 따르면 /etc/init.d/opendkim
파일을 읽습니다.
if [ -f /etc/opendkim.conf ]; then
CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`
fi
제가 보기에는 지금까지는 괜찮아 보입니다. 그러나 바로 뒤에 나오는 다음 코드 조각은 현재 읽은 정보를 덤프하는 것으로 보입니다.
# This can be set via Socket option in config file, so it's not required
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then
DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"
fi
DAEMON_OPTS="-x /etc/opendkim.conf -u $USER -P $PIDFILE $DAEMON_OPTS"
나는 이것이 무엇을 해야 하는지 정말로 이해하지 못한다. $CONFIG_SOCKET
부팅을 해본 적이 없군요 opendkim
, 그렇죠? 그렇다면 애초에 구성 파일을 읽어야 하는 이유는 무엇입니까?
/etc/systemd/system/multi-user.target.wants/opendkim
구성이 로드되지 않은 파일도 있는 것으로 나타났습니다 .
중요한 경우 재부팅하려면 을 opendkim
입력합니다 service opendkim restart
.
소켓을 읽었는지 확인하기 위해 확인하는 것은
telnet localhost 39172
다음 Connection refused
과 /var/log/syslog
같습니다.
opendkim[8343]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
내 질문은 다음과 같습니다 데비안 테스트/스트레치에서 opendkim의 소켓을 어떻게 구성해야 합니까?
이는 위 스크립트가 어떻게 작동해야 하는지에 대한 미스터리를 해결할 수도 있습니다.
답변1
올바르게 구성했지만 이는 구성을 무시하는 Debian Stretch의 해결되지 않은 버그입니다.
바라보다:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864162
답변2
물론 시스템 단위를 편집하는 것은 모범 사례가 아닙니다. 우리는 이렇게 해야 합니다:
sudo systemctl edit opendkim
그리고 다음을 삽입하세요:
[Service]
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock
(이중 ExecStart에 유의하세요. 이는 오타가 아닙니다.)
답변3
위 파일을 편집하여 이 문제를 해결했습니다 /etc/systemd/system/multi-user.target.wants/opendkim
. 이것이 모범 사례인지는 모르겠지만 구성이 하드코딩된 것 같아서 다른 선택의 여지가 없습니다.
파일 내용(현재 임의 포트 39172 대신 Unix 소켓을 사용하고 있습니다):
[...]
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/var/run/opendkim/opendkim.sock
[...]
/var/spool/postfix/var/run/opendkim
디렉토리를 생성하고 소유권을 부여해야 했습니다 opendkim:opendkim
. 파일을 변경한 후 실행했고 systemctl daemon-reload
새 service opendkim restart
소켓이 인식되었습니다. 그런 다음 권한( Umask 002
in /etc/opendkim.conf
)을 변경했고 이제 postfix는 milter에 액세스할 수 있습니다.