web-dev-qa-db-ja.com

postfixが/etc/resolv.confをchrootにコピーするのが早すぎて、DNS障害が発生するのはなぜですか?

編集:この問題を抱えている他の人にとって、この質問は実際には非常にひどく尋ねられ/理解されており、問題のより良い説明(および正しい解決策)を見つけることができます ここ =。

RaspberryPiでメールを設定しようとしています。私は Postfixをセットアップして設定しました そしてすべてが一般的に機能しますが、起動時にスクリプト/etc/init.d/postfixがファイル/etc/resolv.confを実際に更新される前にchrootにコピーするようです。これにより、DNSの問題で電子メールの送信が失敗します。

これについてのより良い記述があります このブログ投稿で 回避策(スタートアップスクリプトに「sleep5」を挿入する)とともに。

私はこれがどのように/なぜ起こるのか(そしてなぜそれがおそらくPiだけに影響しているのか、またはそれが気づかれなかった/修正されていないのに十分な数の人々に影響を与えているのか)そしてバグが実際にどこにあるのか(私がそれを上げることができるので-それは後置の問題、またはPiの何かが期待どおりに動作しない?).

/etc/init.d/postfixファイルの上部にこれがあります(ネットワークに依存していると言います。resolveconfが実行される前に開始すべきではないかどうかわかりませんか?)

# Provides:          postfix mail-transport-agent
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:      postgresql mysql clamav-daemon postgrey spamassassin saslauthd dovecot
# Should-Stop:       postgresql mysql clamav-daemon postgrey spamassassin saslauthd dovecot
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Postfix Mail Transport Agent
# Description:       postfix is a Mail Transport agent

これが起こらないようにするための意図されたメカニズムは何ですか?

2
Danny Tuppeny

優先順位が原因で問題が発生しています。 postfixの起動は、dhcpcd5よりも早くジョブを終了しているようです。

DHCPクライアントが作業を行った後、接尾辞jailの/etc/resolv.confを修正するための1つの可能な解決策。 dhclientを使用し、スクリプトを配置して/etc/resolv.confをディレクトリ/etc/dhcp/dhclient-exit-hooks.dに修正することをお勧めします。

このディレクトリに配置されたスクリプトはafterによって実行されます。IPはdhcpによって取得され、これらのスクリプトは取得後に必要な対策を講じるのに非常に役立ちます。および/またはIPアドレスの変更。

私は実際にここでテーマについて話している質問があります: ISPからのIPアドレスの変更に対処するためのより良い方法?

Debianシステムの関連パッケージはisc-dhcp-clientであり、インストールされていない場合は、次の方法でインストールできます。

Sudo apt-get install isc-dhcp-client

次に、/etc/network/interfacesを使用するように変更する必要があります。

auto eth0
iface eth0

そして最後に:

Sudo dpkg --purge dhcpcd5

実際、dhcpcd5をアンインストールした後(そして/ etc/network/interfacesを@Dannyと一緒に構成した後)、優先順位が適用され、接尾辞の問題が解決されました。

それでも、マシンがISPに直接接続され、永続的にオンになっている場合、ISPがIPアドレスを変更する可能性があるため、dhclient-exit-hooks.dのスクリプトもお勧めします。

2
Rui F Ribeiro

Ubuntu Zestyでは、以下が機能します。

この修正は、postfixにアップグレードした後に実行する必要があります。 Postscriptは、ネットワークが復旧するのを待たないため、再起動後に失敗します。これにより、/ etc /resolv.confのエントリが失われます。これらを/var/spool/postfix/etc/resolv.confにコピーすることになっています。

これらのsystemdファイルの[Unit]ブロックに以下を変更および/または追加します。

/lib/systemd/system/[email protected]
/lib/systemd/system/postfix.service

追加または変更:

After=network-online.target

サービスリロードsystemctlに変更を加えた後:

systemctl daemon-reload

reboot

注:本当に重要なファイルはpostfix @ .serviceです

2
steveH