bashスクリプトでmailxを使用して電子メールを送信し、結果が必要かどうかを待ちます。

bashスクリプトでmailxを使用して電子メールを送信し、結果が必要かどうかを待ちます。

ローカルユーザーのルートに添付ファイルを含む電子メールを送信するbashスクリプトを作成しています。

mailxコマンドライン引数が無効な場合でも、一部のヘルパーが分岐して終了ステータス0ですぐに終了することを確認しました。

localhost:~/basinsrv # mailx -s aaa root -a bbb </dev/null ; echo $?; 0
localhost:~/basinsrv # sendmail: invalid option -- 'a'
sendmail: invalid option -- 'a'
sendmail: fatal: usage: sendmail [options]

mailx結果を待って正しいエラーコードで終了するにはどうすればよいですか?

実際に生成された電子メールを送信する前に後処理を行う必要があります。

実際にメッセージを送信せずにメッセージをファイルに保存することは可能ですか?

mailx-12.5-31.7.x86_64

サフィックス-3.6.2-7.1.x86_64

答え1

エラーの問題を解決する最もきれいな解決策は、まずパラメータが正しいことを確認することです。例を変更するには、コマンドラインの最後に受信者を入力してください。

mailx -s 'subject here' -a 'X-Sent-Using: myscript.sh' root </dev/null

sendmailしかし、それにもかかわらず、それは書かれた方法ではないので待たないでしょう(あなたの場合はPostfix)。

電子メールの後処理はそうすることはできません。あなたがしなければならないことは、と直接通信することだけですsendmail

[email protected]             # My email address
to=root                         # Recipient address
(
    echo "From: $from"
    echo "To: $to"
    echo "Subject: it's a fine day"
    echo "X-Sent-Using: ${0##*/}"
    echo
    cat "$message_body_file"    # Let's hope this file exists
) | sendmail "$to"              # May need /usr/sbin/sendmail

関連情報