エラーが発生した場合にcronジョブの1つが何かを出力した場合に電子メールを送信するように、マシンを構成しようとしています。
以下を使用してメールを送信できます。
echo "test" | mail -s "subject" [email protected]
または実行することによって:
echo "test" | /usr/sbin/sendmail
シンボリックリンク(/ usr/sbin/sendmail)がないと、cronは次のように通知します。
(CRON) info (No MTA installed, discarding output)
私が得るシンボリックリンクで:
(root) MAIL (mailed 1 byte of output; but got status 0x004e, #012)
Cron/msmtpペアを構成する方法を提案できますか?
ありがとう!
編集:
注:「msmtpd」を誤って記述しました。これはデーモンではなく、「msmtp」という名前のSMTPクライアントです(「d」で終わることはありません)。オンデマンドで実行され、常にバックグラウンドで実行されているわけではありません。
このようにmsmtpを使用してメールを送信しようとすると、次のように機能します。
echo "test" | msmtp [email protected]
反対側では、SMTPサーバーのログで次のように読みました。
Nov 2 09:26:10 S01 postfix/smtpd[12728]: connect from unknown[CLIENT_IP]
Nov 2 09:26:12 S01 postfix/smtpd[12728]: 532301C318: client=unknown[CLIENT_IP], sasl_method=CRAM-MD5, [email protected]
Nov 2 09:26:12 S01 postfix/cleanup[12733]: 532301C318: message-id=<>
Nov 2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: from=<[email protected]>, size=191, nrcpt=1 (queue active)
Nov 2 09:26:12 S01 postfix/local[12734]: 532301C318: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.62, delays=0.59/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to command: IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #1001)
Nov 2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: removed
Nov 2 09:26:13 S01 postfix/smtpd[12728]: disconnect from unknown[CLIENT_IP]
そして、Eメールはターゲットユーザーに配信されます。したがって、msmtpクライアントは正しく機能しているように見えます。
それはcron/msmtp統合の何かでなければなりませんが、それが何であるかはわかりません。手伝って頂けますか?
解決策は、(crontab -eを呼び出して)ユーザーのcron構成に次のように追加することでした。
CRONARGS=-m/usr/bin/msmtp
質問で説明したのとまったく同じシナリオがありましたが、現在の回答では問題は解決しませんでした。私の場合、問題の説明は、cron
がsendmail
コマンドを実行するたびに、$HOME
を/
ではなく/home/<user>
に設定していたことでした。 。したがって、msmtp
がシンボリックリンクを介してsendmail
を置き換えたとしても、$HOME/.msmtprc
にあるユーザー固有の構成ファイルを見つけることができませんでした。
私の[〜#〜]解決策[〜#〜]は、/etc/msmtprc
の代わりに$HOME/.msmtprc
を使用することでした。
これは、/etc/msmtprc
からの機密データの一部を他のユーザーが読み取れるようにする可能性があるため、システムに最適なソリューションではない可能性があります。
詳細はこちら: http://comments.gmane.org/gmane.linux.debian.devel.bugs.general/671011