ローカルユーザーのルートに添付ファイルを含む電子メールを送信する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