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
これが起こらないようにするための意図されたメカニズムは何ですか?
優先順位が原因で問題が発生しています。 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のスクリプトもお勧めします。
この修正は、postfixにアップグレードした後に実行する必要があります。 Postscriptは、ネットワークが復旧するのを待たないため、再起動後に失敗します。これにより、/ etc /resolv.confのエントリが失われます。これらを/var/spool/postfix/etc/resolv.confにコピーすることになっています。
/lib/systemd/system/[email protected]
/lib/systemd/system/postfix.service
After=network-online.target
systemctl daemon-reload
reboot
注:本当に重要なファイルはpostfix @ .serviceです