追加読書

追加読書

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

それを修正する代わりに、Debianの人々は提供しました。その他 opendkim.serviceシステムファイルDebianパッケージでOpenDKIMが提供するバージョンを置き換えるために使用されます。サービスユニットはORを読み取らず、/etc/sysconfig/opendkimOpenDKIMが使用するソケットの位置は固定されています/etc/default/opendkimAF_LOCALそれが人々が得るものです/lib/systemd/system/opendkim.service

/lib/systemd/system/opendkim.serviceだから誰かが編集していると思うかもしれません。一つはそうではありません。 systemdルールは、パッケージが提供するサービス単位ファイルを編集しないことです/lib/systemd。 systemdがこのサービスを変更する方法は、/etc/systemd/system/opendkim.service.d/ディレクトリにオーバーレイINIファイルを追加することです。これには、オーバーライドするパッケージによって提供されるサービス単位部分の断片が含まれます。

したがって、そのような作品を作るだけで十分だと思うかもしれません。一つはそうではありません。 Debian の人々が提供する名前が「ジェネレータ」のプログラムopendkim.service.generateファイルの内容に基づいて上書きし、必要に応じてこのようなフラグメントを自動的に作成/etc/default/opendkimします。UserGroupExecStart

問題は、Debianの人々がこのジェネレータをsystemdに正しく接続していないことです。これは実際ではないシステムプログラムにない特定の形式と特定の種類の出力を持つジェネレータです。また、Debian パッケージのインストールおよびアンインストールプロセスへのリンクもありません。/lib/opendkim/opendkim.service.generate手動で実行してから明示的に実行する必要がありますsystemctl daemon-reload

追加読書

関連情報