質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

2419閲覧

mailxコマンドでメールサーバに接続できない時のエラー検知方法

mugichon

総合スコア61

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2020/02/10 00:49

以下のようにシェル内でmailxコマンドに引数を渡してあげてメール送信しています。

Shell

1export LC_CTYPE=ja_JP.UTF-8;mailx -r <FROM> -s <SUBJECT> -S "smtp=smtp://<SMTP>" <MAILTO> < <MAILBODY_TEXT>

上記は自動処理に組み込んているのですが、メールサーバがおちている時に
上記コマンドが自動実行されたのですが、リターンコードが正常終了し、
メール送信できなかった事に気付く事が出来ませんでした。

そもそも、メールサーバに接続できない状況はコマンドはmailxコマンドでは異常扱いにならないのでしょうか?
また、異常を検知する場合、どの様にしたら検知できるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

デフォルトだと、コマンドは子プロセスを生成して処理を任せ、自分自身はすぐに終了するようです。
-vオプションを付けると、子プロセスでなく自分自身で処理をするようになるので、終了コードで判断できると思います。

投稿2020/02/11 13:26

otn

総合スコア84503

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mugichon

2020/02/13 23:06

ご回答ありがとうございます。 -vオプションで確かにご指摘の通りエラー検知できました! ありがとうございます。 出来れば通信内容までは不要なのですが、やはり/dev/nullで捨てる しかなさそうでしょうか?
otn

2020/02/14 12:14

そうですね。捨てれば済みます。
mugichon

2020/02/17 08:09

ありがとうございます!期待した通りの動作ができました!
guest

0

ncコマンドなどで送信前に接続確認するのが手っ取り早いですかね。

エラー検知はできても通知についてはメールが使えない(smtp接続エラー)ので
とりあえずsyslogに書くだけのコードにしておきます。

通知方法にどんな方法が使えるかは環境次第ですね。

bash

1export LC_CTYPE=ja_JP.UTF-8;\ 2 nc -w 1 <SMTPHOST> <PORT> ; \ 3 if [ $? -eq 0 ]; then \ 4 mailx -r <FROM> -s <SUBJECT> -S "smtp=smtp://<SMTPHOST>:<PORT>" <MAILTO> < <MAILBODY_TEXT> ;\ 5 else \ 6 logger -s -t mailx -p user.err Cannot connect to smtp server [<SMTPHOST>:<PORT>]. ; \ 7 fi

投稿2020/02/10 02:11

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mugichon

2020/02/12 07:38

ご回答ありがとうございます。ncコマンドのようなものがあるんですね… ただ、ncコマンド成功後にメールサーバダウン等は検知出来なさそうですね。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問