Wi-FiがIPアドレス(dhcpcdベース)を受信したら、postfixをサーバーとして使用して電子メールを送信する必要があります。systemd
デフォルトでは、postfixはwifi(wlan0)が準備される前に始まるようです。これに関連する結果は、postfixがバックグラウンドで実行できず、電子メールが正常に送信できないことです。ただし、次のスクリプトを実行すると(例:abc.sh)開始すると、Eメールは間違いなく次を通過します。
sleep 60
systemctl restart postfix
echo 'email content' | mail -s 'titile' [email protected]
関連サービスファイルabc.sh次のように:
[Unit]
Description=pptp_setup
Requires=network-online.target
After=network-online.target
[Service]
Type=forking
ExecStart=/home/pi/script/abc.sh
[Install]
WantedBy=multi-user.target
気づく睡眠60そしてsystemctl postfixの再起動電子メールが正しく配信されたことを確認する方法です。もし睡眠60postfixを再起動せずに適用すると、postfixが最初に正しく起動されなかったため、まだ電子メールの送信に失敗します(上記のようにIPを受信する前にロードされる可能性があります)。さらに、60秒間休止状態ではなくPostfixのみを再起動すると、Postfixの再起動はまだ失敗します。 必要=networkonline.targetそして 以降=networkonline.targetサービスファイルに適用されました。
私の質問は、IPアドレスを受信した後にWi-Fiが起動するようにpostfixを正しく設定する方法です。
答え1
答え2
Ubuntu 16.10を新しいMiniPCにデプロイしたときも同じ問題が発生しました(正常に実行されているUbuntu 14.xとは対照的です)。
ついに自動化されたソリューションが見つかりました。 NetworkManager-wait-online.serviceを有効にし、システム起動後+-5分後にpostfixサービスを再起動するカスタムスクリプトを展開します(この時点でワイヤレス接続が有効になっていると仮定)。
A. この機能を有効にします。これはPostfix以外のサービスに役立つ一般的なアプローチなので、スクリプトに保存します。
systemctl enable NetworkManager-wait-online.service; systemctl status NetworkManager-wait-online.service;
B.カスタマーシステムタイマー+サービス@info追加タイマーは、コンピュータの起動後{x}分に1回起動されます。
nano /etc/systemd/system/mjd-restart-postfix-after-wlan-connected.timer [Unit] Description=(timer)mjd-restart-postfix-after-wlan-connected [Timer] OnBootSec=5min [Install] WantedBy=timers.target
nano /etc/systemd/system/mjd-restart-postfix-after-wlan-connected.service [Unit] Description=mjd-restart-postfix-after-wlan-connected [Service] Type=oneshot ExecStart=/bin/sh -ec "systemctl restart postfix; systemctl status postfix; uname -a | /usr/bin/mailx -s \"Server (`hostname`): postfix was restarted.\" [email protected]"
MYUNIT=mjd-restart-postfix-after-wlan-connected MYTIMER=${MYUNIT}.timer systemctl enable ${MYTIMER}; systemctl status ${MYTIMER}; systemctl list-units --all | grep "${MYUNIT}" systemctl status ${MYUNIT}
C.再起動
reboot
#5分待つ
ラ。確認
MYUNIT=mjd-restart-postfix-after-wlan-connected MYTIMER=${MYUNIT}.timer systemctl status ${MYTIMER}
これら2つの設定ファイル(Resolve 1とPostfix 1)の内容が同じでない場合は問題があります(PostfixがLAN / WLAN接続の前に起動されます)。 Cat/etc/resolv.conf Cat/var/spool/postfix/etc/resolv.conf
E.情報@dochttps://bugs.launchpad.net/ubuntu/+source/postfix/+bug/1519331 @文書https://wiki.archlinux.org/index.php/Systemd/Timers @doc qshape遅延@doc cat /var/log/syslog | egrep "ネットワークマネージャー | サフィックス"