重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

/var/log/maillogへのログの書き込み方法の設定に関して
誠に恐れ入りますが、どなたかご教示願います。

メール送信用スクリプト実行時のメール送信処理を監視したいと考えています。

Solarisでは以下で「※メール送信処理」記載の送信履歴の取得が問題なくできました。
(1つのスクリプトファイル内での処理です)

tail -1f /var/log/syslog > ${監視用ログファイル} &
※メール送信処理
kill ※tailのプロセス

しかしながら、Linuxでは、同様の設定(syslog->maillog)を行っても
どうも送信履歴の取得が行えません。

現状システム上で起こっている事象を確認した限り、スクリプト完了後に
maillogへの書き込みを行っているようで、何とかスクリプト実行中に
同時にmaillogにも書き込み、その結果をログに出力したいと
考えていますが、どのような設定、またはLinux向けのスクリプト修正を行えば
それが実現できますでしょうか?

A 回答 (1件)

tail -1f /var/log/syslog > ${監視用ログファイル} &



この方法だと、killするまでの間はメール送信以外のログも監視用ログファイルに書き出されてしまうと思うのですが...(そういうレベルでOKということかな?)

Linuxの場合、仰るようにmail.*というファシリティのログはすべて/var/log/maillog に書き出されます。Solarisではmail.debugが/var/log/syslog に書き出されます(手元のSolaris9では)。なのでtailでわざわざ書き出さなくてもすべて/var/log/maillog に出てるはずです。
また書き出しのタイミングも、(メール送信スクリプトがどう処理しているかにもよりますが)少なくともsmtpdに渡した時点で書き出しが始まっているはずです。

「送信履歴」というものがどのような内容かわからないのですが、何が出しているメッセージなのか、あるいはどんなファシリティで出しているかが判ればいろいろ対応方法も考えられるかもしれませんが、いずれにしても最初に書いたとおり、tailでログを取る手法はあまりエレガントな方法とは思えませんね...
    • good
    • 0
この回答へのお礼

ご回答ありがとう御座いました。

確かにmaillogが存在しているのにわざわざtailコマンドで監視するのは
無駄かとも思いますが、あくまで実行時のログのみで構わないとのことで
この手法をとりました。
(実行後、ファイル操作でmaillogの該当箇所を抜粋する方法もありましたが。。。)

それで原因ですが、自己解決しました。
情けない話、メール送信時、自サーバではなく他のSMTPに直接接続していたためでした。。。
(Solaris時は、外部発信向けと内部発信向けで同じSMTPを使用していましたが、
Linux移行後、上記を使い分けています。)

お騒がせ致しました。
また、今後、質問の際はより具体的な内容を提示を上行うよう致します。

お礼日時:2010/06/11 12:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!