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

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

特定ユーザから送信があった場合のみメール通知する

ある特定のユーザから送信があった時にメールで通知したいと考えています。 以下サイトを参考に次の様なシェルを作成しましたが、メールログを全て検索してしまうのか大量のメールが通知先のアドレスに送付されてしまい希望通りの動作になりません。 どのようにすると ・メールログに特定のユーザのログが書かれた時だけメール送信(通知は1通だけ)する事が出来ますでしょうか。 ■参考サイト http://lab.hde.co.jp/2008/04/tail.html ■使い方 ./alert /var/log/maillog ■作成したシェル ----------------------------------------------------------------------- #!/bin/sh mail_alert() { while read i do echo $i | grep -q [対象のメールアドレス] if [ $? = "0" ];then echo $i | mail -s [メール件名] [送信先メールアドレス] fi done } tail -n 0 --follow=name --retry $1 | mail_alert -----------------------------------------------------------------------

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

  • ベストアンサー
  • 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

  • maillogを特定のユーザーも見れるようにしたい

    Linux初心者です。よろしくお願いします。 Redhat7.3にqmailをインストールして使用しています。 /var/log/maillog なのですが、所有者はrootになっていて、rootだけが読み書きできる状態になっています。 -rw------- 1 root root maillog 一般ユーザーがviで開こうとすると、権限が無いので断られます。 ある特定の一般ユーザーがこのログを見ることが出来るようにしたいのですが、どのような方法があるでしょうか。 一般ユーザー全てが見れる状態ではなく、例えばsampleuserという名前のユーザーだけがこのログを参照できるようにしたいのですが。 もちろんrootはこのまま読み書きできる状態を維持でかまいません。 よろしくお願い致します。

  • 特定のユーザーのみ受け付けるメール

    あるサークルで、特定のユーザーのみ受け付けるアドレスがほしいのですが、メーリングリストのようなものになるのでしょうか? メーリングリストは一斉送信以外に個別送信も可ですか? セキュリティ上、特定のユーザー(数10名~100名程度)で 添付文書などをやりとりしたいのですが、プロバイダやどこかのレンタルメールサーバーなど、いい方法ありましたらご紹介ください。 よろしくお願い致します。

  • Googleドライブ 特定ユーザー共有 メール通知

    Googleドライブのフォルダ共有機能で、ある特定ユーザーと共有しました。その際、特定ユーザーに対して下記のようなメールが送信されると思います。 ◇引用開始◇ **********@**********.co.jp さんが 1 個のフォルダを共有しました 不明なプロフィール写真 **********@**********.co.jp さんから次の共有フォルダの共同編集に招待されました: (入力した任意のメッセージ) (共有フォルダ名) このメールは、ログインせずにこのアイテムにアクセスすることを許可するためのものです。信頼できるユーザーにのみ転送してください。 開く ◇引用終わり◇ オーナーが新たに共有フォルダにファイルを追加したとします。 その場合、上記のような通知メールを特定相手に自動送信することは出来ないのでしょうか? もし、あるのなら設定方法を教えてください。 この方法だけではそのような通知は出来ないようです。 https://support.google.com/a/users/answer/9308653?hl=ja 宜しくお願いいたします。

  • メール不達通知を、送信アドレス以外に欲しい場合

    アドレスの入力ミスや、相手のフィルター設定(例えば指定のアドレスからしか受信できないようにしているとか、PCからのメールは全て拒否とかの設定)によって、メールが相手に届かなかった場合、それを通知する英文のメール(日本語のことも時々あるようですが)がサーバーから来ますが、その不達通知のメールを、送信アドレス以外のアドレスに届けられるようにする方法はありませんでしょうか? 不達通知が欲しいアドレスをreply toに入力しても、不達通知は送信元アドレスに届けられてしまうようですので、お伺いする次第です。

  • いやがらせメールの送信者特定について

    初めて質問させていただきます。 最近yahooのフリーメールから携帯のアドレスにいやがらせメールが届きます。 内容は不特定多数に送信される迷惑メールではなく、明らかに個人を対象にして送信されている事がわかるメールです。 そこで、送信された地域や郵便番号など、送信者個人を特定できなくとも何か情報を調べたいのです。 過去の質問集から、メールヘッダをサーバ管理者に通知すればある程度は判明する事がわかりました。 ですがYahooへ問い合わせするにしても、日々膨大な問い合わせメールが届いてるでしょうから返信いただけるとは思えません。 どうにかして自分で調べたいのですが、個人で調べれる方法はあるのでしょうか。

  • メール送信エラー通知について

    メール送信エラー通知についての質問です。 最近、MAILER-DAEMONとかpostmasterとかMail Deivery Subsystemからのメール送信エラー通知が頻繁に届きます。 しかし、本文を読むと送信エラーが起きた送信先は送信した覚えのないアドレスです。 また最近、毎日のように知らないアドレスから本文のないメールが送られてきます。 McAfeeでウィルスチェックをしましたが感染はしていないようですが、これらの原因と対処方法などをお教えください。 メールソフトはOutlook Expressです。

  • 送信者が特定できない迷惑メール

    最近、送信者が特定できない(送信者のアドレスが分からない)迷惑メールがきます。 送信者のアドレスさえ分かれば受信拒否ができるのですが…。また、こういうメールはどうやって送信しているのでしょうか? 何かいい対策がありましたらアドバイスの程お願いします。

  • outlook2013特定メールが送信できない

    Windows8 メールソフトoutlook2013で、特定のメールアドレスのみ送信できません。 下記のような症状です。 <症状です> メール送信後のメールデータそのものは、フォルダ名「送信済みアイテム」に入り、 送信エラー通知も届いていないのですが、相手(PCメール)にメールが届いていません。 この相手からのメールは正常に受信できます。 確認していませんが、おそらく、この相手以外のメールは正常に送受信できていると思います。 <私が考えた原因です> 最初のアカウント設定時のミスでしょうか?... なぜなのか分かりません。 原因がわかる方、素人にわかりやすくお教えください。 よろしくお願いいたします。 よろしくお願いいたします。

  • mailが送信だけ出来ません。

    宜しく御願い致します。 現在仕事で中国に出張中です。 14インチのibookを持参でホテルのLANから インターネットに接続しております。 接続に問題は無いのですが、メールの受信は出来るのですが 送信が出来ません。 それも特定のアドレスだけ送信出来ません。 プロバイダドメインのアドレスを使用しているのですが、 1つのアドレスは送受信問題無しなのですが、 1つのアドレスが送信のみ出来ません。 送信しようとすると『サーバへ送信出来ませんでした』と アラートが出ます。 設定を確認するのですが、送受信とも問題無いアドレスの 設定と比べてもポート等問題点はありません。 メーラーはMAILでバージョンは1.3.11になります。 どうぞ宜しくお願い致します。

  • Qmailで外部からのメールを受信出来ない

    Qmailでメールサーバーを立ち上げたのですが、メールサーバーのメールアドレスに対してメールを送信しても受信出来ません。 何か設定が足りていないのでしょうか? /var/log/maillog には何も表示されません。 エラーメールもかえってきていないので、どこが悪いのか検討がつきません。 /var/log/maillog以外に確認するファイルはありますか? よろしくお願いします。