추가 읽기

추가 읽기

postfix와 opendkim을 구성하는 과정에서 확장성을 위해 Debian jessie(oldstable)를 업그레이드하기로 결정했습니다. 그 이후로 opendkim을 제대로 시작할 수 없습니다.

내가 기대하는 것은 /etc/default/opendkim의 구성이 존중되어야 한다는 것입니다. 특히 RUNDIR 및 SOCKET 설정은 접미사가 붙은 chroot에 배치되어야 합니다.

# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
#DAEMON_OPTS=""
# Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with
# postfix in a chroot:
RUNDIR=/var/spool/postfix/var/run/opendkim
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
SOCKET=local:$RUNDIR/opendkim.sock
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=

그러나 재부팅하든 "service opendkim start" 또는 "/etc/init.d/opendkim start"를 수행하면 /var/run/opendkim이 RUNDIR로 사용되므로 pid 파일과 소켓이 잘못된 위치에 배치됩니다.

/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock

이는 /etc/init.d/opendkim 파일(다른 모든 debian init 파일과 마찬가지로)에 /lib/lsb/에서 systemd 스크립트를 실행하는 /lib/lsb/init-functions에 있는 LSB init 함수가 포함되어 있기 때문이라는 것을 읽었습니다. init-functions.d/40-systemd, 실행을 "systemctl start opendkim"으로 리디렉션합니다.

이는 /etc/systemd/system/multi-user.target.wants/opendkim.service에서 유닛 파일을 읽고 그 안에 있는 ExecStart 라인을 실행하는 것을 의미합니다.

또한 lsb init 함수를 포함하기 전에 환경 변수 _SYSTEMCTL_SKIP_REDIRECT를 설정하여 systemctl 리디렉션을 건너뛸 수 있다는 내용도 읽었습니다.

지금 opendkim을 구성하는 올바른 방법은 무엇입니까?

ㅏ. /etc/default/opendkim도 편집하고 /etc/init.d/opendkim에 _SYSTEMCTL_SKIP_REDIRECT를 추가해야 합니까?

b. /etc/systemd/system/multi-user.target.wants/opendkim.service의 systemctl 단위 파일은 어떻게 생성되며 내 구성을 포함할 만큼 스마트해야 합니까? 즉, 내가 아무 잘못도 하지 않았나요?

씨. 아니면 ExecStart 줄을 직접 편집해야 합니까?

답변1

위의 어느 것도 아닙니다.

  • 깊은 생각 하지마 _SYSTEMCTL_SKIP_REDIRECT. 이는 내부 메커니즘이며 귀하의 업무가 아닙니다.
  • 유닛 파일이 이 위치에 없습니다. 이것은 심볼릭 링크입니다. 시스템 단위 파일은 /lib/systemd/system/opendkim.service.
  • 시스템 단위 파일을 편집하지 마십시오. 이는 Debian의 OpenDKIM 패키지에서 제공되며 수정하면 안 됩니다.
  • 일반적으로 말해서, 질문에 대한 잘못된 답변은 나쁜 조언이 된다는 것이 좋은 경험 법칙입니다. 여기 있어요.

OpenDKIM 사람들이 기여했습니다.opendkim.service시스템 파일. /etc/sysconfigDebian 및 해당 시스템이 아닌 RedHat 및 해당 시스템에 맞춰져 있으므로 /etc/default전혀 눈에 띄지 않습니다./etc/default/opendkim

그것을 고치는 대신 데비안 사람들은 제공했습니다.다른 opendkim.service시스템 파일Debian 패키지에서 OpenDKIM이 제공하는 버전을 대체하는 데 사용됩니다. 서비스 단위는 OR를 읽지 않으며 /etc/sysconfig/opendkimOpenDKIM에서 사용하는 소켓의 위치는 고정되어 있습니다 /etc/default/opendkim. AF_LOCAL그것이 사람들이 얻는 것입니다 /lib/systemd/system/opendkim.service.

/lib/systemd/system/opendkim.service따라서 누군가가 편집하고 있다고 생각할 수도 있습니다. 하나는 그렇지 않습니다. systemd 규칙은 패키지에서 제공하는 서비스 단위 파일을 편집하지 않는 것입니다 /lib/systemd. systemd가 이 서비스를 수정하는 방법은 /etc/systemd/system/opendkim.service.d/디렉터리에 오버레이 INI 파일을 추가하는 것입니다. 여기에는 재정의할 패키지에서 제공하는 서비스 단위 부분의 조각이 포함됩니다.

그러므로 그러한 조각을 만드는 것만으로도 충분하다고 생각할 수도 있습니다. 하나는 그렇지 않습니다. 데비안 사람들이 제공하는이름이 "생성기"인 프로그램opendkim.service.generate파일 내용을 기반으로 재정의하고 필요에 따라 이와 같은 조각을 자동으로 생성 /etc/default/opendkim합니다 .UserGroupExecStart

문제는 데비안 사람들이 이 생성기를 systemd에 올바르게 연결하지 않았다는 것입니다. 이것은 실제로는 아닙니다체계프로그램에 없는 특정 형식과 특정 유형의 출력을 갖는 생성기입니다. 또한 데비안 패키지 설치 및 제거 프로세스에 대한 연결 고리도 없습니다. /lib/opendkim/opendkim.service.generate수동으로 실행한 다음 명시적으로 실행 해야 합니다 systemctl daemon-reload.

추가 읽기

관련 정보