• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定ユーザから送信があった場合のみメール通知する)

特定ユーザからのメール通知の設定方法

このQ&Aのポイント
  • 特定のユーザからのメールがあった場合にのみ通知する方法について説明します。
  • 特定のユーザのメールログを検索し、条件に一致する場合にのみメールを送信します。
  • シェルスクリプトを使ってメールログを監視し、特定のユーザからのメールがあった場合にのみメールを送信する方法を解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • chirakuma
  • ベストアンサー率58% (253/430)
回答No.1

メールログを見る限りはその手の全件チェックになってしまいますね。 エラー監視とかでは有用ですが、ちょっとコストが多すぎるかと思います。 サーバでどんなメールサーバのミドルウェア(qmail, postfix, sendmailなど)を使っているかわかりませんが、だいたいのメールミドルウェアはメールが来たときに特定のスクリプトを実行するような仕組みを備えています。 qmailの例 http://takuya-1st.hatenablog.jp/entry/20120627/1340810699 postfixの例 http://k-1-ne-jp.blogspot.jp/2013/01/postfix_11.html 1:メールが届く 2:スクリプト(shでもPHPでもRubyでも何でも可)で送り元メールアドレスを確認し該当していたらスクリプト内からメールを送る 3:メールはメールボックスにそのままリレーする といったような流れで実現可能かと思います。 当方プログラマ視点なので本業の運用職の方であればもっとスマートな方法が出てくるかもしれません。ご参考程度にどうぞ~!

QA-Linux
質問者

補足

ありがとうございます。参考にさせて頂きます。 他にもありましたらご教示頂けると幸いです。

その他の回答 (2)

  • h271015
  • ベストアンサー率71% (62/87)
回答No.3

No2です。 すみません、スクリプトの中身をよく見ていませんでした。 > ・メールログに特定のユーザのログが書かれた時だけメール送信(通知は1通だけ)する事が出来ますでしょうか。 リアルタイムに出力されるログから [対象のメールアドレス] が含まれるログが1行出る度にメールを送る動作になっているように見えましたが、[対象のメールアドレス]を含むログが一度に大量に出力されているような形ではないでしょうか? もしその場合 grep -q [対象のメールアドレス] に続く抽出条件に[特定のユーザのログ]の内容をつけてさらに絞り込む必要があるように思います。 ただ、出力されるログに [対象のメールアドレス] と [特定のユーザのログ]の内容が1行で同時に出ている必要があります。 そうでなければ、mail_alertの部分を作り変えた方が良いように思います。

  • h271015
  • ベストアンサー率71% (62/87)
回答No.2

grep ですと -mオプションで制御できると思います。 grep -m 1 [検索対象文字] のようにすると、検索したい文字列の行が1件出たタイミングで検索が終了することになるので、同一ユーザに大量のメールが送信されることがなくなるのではないかと思います。 (ただ、grepのバージョンが古いと-mオプションが使えないかも知れません。)

QA-Linux
質問者

補足

grep -m 1 [検索対象文字]でも状況変わらずでした。 他の方法は無いでしょうか。

関連するQ&A