데비안 테스트/스트레치에서 opendkim 소켓을 구성하는 방법

데비안 테스트/스트레치에서 opendkim 소켓을 구성하는 방법

이것은 모두 데비안 테스트에 있습니다(= 지금까지).
구성하려고 하는데 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-reloadservice opendkim restart소켓이 인식되었습니다. 그런 다음 권한( Umask 002in /etc/opendkim.conf)을 변경했고 이제 postfix는 milter에 액세스할 수 있습니다.

관련 정보