システム監視のためにCentOSVPSで電子メールアラートを送信する方法
序章
電子メールアラートを送信する機能は、VPSの日常的な管理に不可欠です。 システム管理者(およびユーザーも同様)にとって、この[新しい]可能性を利用できることは、物事を容易にするだけでなく、泥棒との戦闘やダウンタイムで作成できるトリガーを使用して多くの味方を提供します。
このDigitalOceanの記事では、CentOS VPSで電子メールアラートを送信する方法を学び、全体的なセキュリティを向上させ、システム全体をスムーズに実行するために設定できるさまざまなトリガーについて説明します。 これを行うには、電子メールの基本を理解し、必要なアプリケーションと、設定できるさまざまな電子メールアラートトリガーの例、およびさらに作成するための重要なニーズを特定する背後にあるロジックについて説明します。
電子メールを理解する
使用回数にとらわれず、電子メールの送受信の複雑さは、企業によって単純なオンライン電子メールサービスの形で抽象化されているため、ほとんど考えられていません(実際には見えません)。 スパムメッセージと戦うための取り組みはそれをさらに難しくし、電子メールメッセージ(電子メール)を単に送信したい人にとっては多大な労力を要しました。
電子メール(または電子メール)は、ある当事者から別の当事者に電子的に配信されるメッセージの方法またはタイプと見なすことができます。 これは、ローカルネットワークまたは同じマシン(つまり、同じマシン)で発生する可能性があるため、インターネット全体に広がるオンラインプロセスである必要はありません。 (通常)組み込みツールを介してVPS)。 ただし、インターネットを介して電子メールを送信する必要がある場合は、メッセージ転送エージェントをはじめとする多くのコンポーネントが関係します。
メッセージ転送エージェント(またはメッセージ転送エージェント)
「メッセージ転送エージェント」は、同じシステム上または別の場所にあるユーザー(つまり、複数のユーザー)宛ての(電子メール)メッセージの配信を実際に実行するアプリケーションです。 インターネットまたはLAN経由)。 MTAアプリケーションは通常、さまざまなLinuxディストリビューションとともにデフォルトで出荷され、電子メールクライアントによって使用され、ホスト間でメッセージを送信します。通常はSMTPプロトコルを使用します。 。
メールユーザーエージェント(電子メールクライアント)
多くの利用可能な「メールユーザーエージェント」は、ユーザーによって使用されるアプリケーションです(つまり、 あなた)または電子メールを送受信するための他のアプリケーション。 それらは機能するためにメッセージ転送エージェント(MTA)に依存しています。 Microsoft Outlook、Mozilla Thunderbird、さらにはオンラインで動作するGmailも、すべてメールユーザーエージェントに適した例です。
Simple Mail Transfer Protocol(SMTP)
ホスト間でメッセージを転送するために、共通の言語(すなわち プロトコル)を確立して、相互に通信できるようにする必要があります。 数十年前に作成および標準化されたSMTPは、メッセージを送信する方法になりました。 MTAは、SMTPプロトコルを使用して、電子メールの配信を行います。
Heirloommailxを使用して電子メールを送信するだけ
現在、上記で説明したアーキテクチャは、電子メールの交換という複雑な性質の一部しかカバーしていません。 「適切な」システムが機能するためには、やらなければならないことがたくさんありますが、残念ながら、受信トレイとスパムフォルダへの電子メールの配信可能性を保証するものではありません。
ただし、この記事では、非常に単純なことに焦点を当てます。 ほんの数分でを稼働させ、実際の作業、システムの管理、受信トレイでのアラートの受信に集中できるようにすることを目指しています。
BerkeleyMailから派生した素晴らしいメールユーザーエージェントであるHeirloommailxを使用します。 IMAP、POP3、そしてもちろんSMTPを含む(ただしこれらに限定されない)いくつかのプロトコルの追加サポートを提供します。 これは、アラートとシステム警告を受信するために使用するツールになります。
注:オンラインドキュメントまたはフォーラムを調べると、nailと呼ばれる同様のアプリケーションが表示される場合があります。 2つのプロジェクトは(一種の)同じであり、nailはmailxに組み込まれています。 したがって、「nail」を使用した電子メールコマンドが表示された場合は、「mail」または「mailx」に置き換えて実行するだけで十分です。 または、シンボリックリンクポイントをmailxアプリケーションに作成することもできます。 mailx history にアクセスすると、mail、Mail、mailx、nailの履歴について詳しく知ることができます。 シンボリックリンクの作成については、読み続けてください。
mailxのインストール
システムの更新から始めましょう。
注意:安定した実稼働環境を使用している場合は、実行中のアプリケーションに干渉する可能性があるため、この手順をスキップすることをお勧めします。
システムを更新するには、以下を実行します。
$ yum -y update
mailxの使用を開始するのは非常に簡単です。 yumパッケージマネージャーを使用してダウンロードし、インストールします。
CentOS / RHELマシンで、以下を実行します。
$ yum install -y mailx
以上です! これで、「mail」(またはmailx)コマンドを使用して電子メールの送信を開始できます。
シンボリックリンクとは何ですか?リンクの作成方法
シンボリックリンク(シンボリックリンク)は、別の既存のファイルへの参照で構成されるファイルです。
一部の監視スクリプトおよびアプリケーションは、「mail」または「mailx」の代わりに「email」を使用して電子メールを送信する場合があります。 このような状況に陥った場合は、mailxを指す(参照する)シンボリックリンクを作成できます。
以下に、「mailx」を実行するための「mail」のシンボリックリンクを作成します。
シンボリックリンクを作成するには、次のコマンドを実行します(/bin/email
を必要なリンク名に置き換えます)。
$ ln -s /bin/mailx /bin/email
電子メールを中継するように外部SMTPサーバーを設定する方法
上記のように、この無駄のないソリューションを使用すると、一部の電子メールがスパムフォルダに到達する可能性があります。 アラート用のシンプルなアプリケーションを目指しているので、これは問題にはなりません。 ただし、配信率を上げたい場合(つまり 受信トレイに)外部SMTPサーバーを介してメッセージを中継することを選択できます(つまり、 あなたの電子メールプロバイダーまたは商用電子メールサービスによる)。
「mailx」で使用するSMTPサーバー[構成]を設定するには、アプリケーションの[特定の]設定が含まれている/etc/mail.rc
ファイルの内容を編集する必要があります。 「nano」テキストエディタを使用してこのファイルを開き、設定を上部に追加します。
「nano」を使用して「mail.rc」を開きます。
$ nano /etc/mail.rc
以下にSMTP設定の例を示します。これは、「mail.rc」の先頭に追加する前に、プロバイダーの設定と一致するように変更する必要があります。 #記号で始まる行はコメント化されており、つまり、有効ではなく、構造体で構成されています。 次の行は、SMTPサーバーの詳細と一致するように適宜置き換える必要がある行です。
例:
# set smtp=smtp://smtp.server.tld:port_number set smtp=smtp://smtp.example.com:543 # tell mailx that it needs to authorise set smtp-auth=login # set the user for SMTP # set [email protected] set [email protected] # set the password for authorisation set smtp-auth-password=enter-password-here-1234
「CTRL+X」を押し、「Y」を確認して保存して終了します。
これ以降、送信されたすべてのメールは、設定した構成を使用して中継されます。
ヒント: Gmailのサーバーの使用を検討するか、MANDRILLなどの使いやすいプロフェッショナルメールサービスのSMTPサーバーを利用して毎月数千通のメールを無料で送信できます。
mail
(またはmailx
)でメールを送信する
MTA sendmailと直接対話することもできますが、「mailx」をインストールすると、とりわけ、必要に応じて[将来]構成するための多数の単純さと可能なオプションが提供されます。
Heirloommailxで使用可能なオプションの一部を次に示します。
-a
ファイル Allows you to attach the given file to the e-mail-b
住所 Sends ブラインドカーボンコピー to the comma separated e-mail address list-c
住所 Sends コピー to a list of users-q
ファイル Sets the message contents from the given file-r
住所から Sets the from address of the e-mail to be sent-s
主題 Sets the e-mail subject
オプションの完全なリストについては、ここをクリックして関連ドキュメントにアクセスしてください。
使用例:
簡単なメッセージの送信:
echo "Your message" | mail -s "Message Subject" email@address
添付ファイル付きのメッセージの送信:
echo "Message" | mail -s "Subject" -a /loc/to/attachment.txt email@address
ファイルからのメッセージ本文の読み取り:
echo | mail -s "Subject" -r from@address -q /loc/to/body.txt email@address
注:外部SMTPサーバーが設定されていない限り、上記で説明したように、電子メールはスパムフォルダーにドロップする可能性があります。スパムフォルダーを手動でリダイレクトして受信ボックスで受信し続ける必要があります。 。
Heirloom mailxの完全なドキュメントについては、http://heirloom.sourceforge.net/mailx.htmlにある公式Webサイトにアクセスすることを検討してください。
システム監視、警告、およびセキュリティアラームのアラートの設定
すべての準備が整ったので、サーバーに発行して電子メールで送信できるアラートのいくつかの異なる例を調べることができます。
ポートとソケットの監視
ポートとソケットの監視の詳細については、次の記事を参照してください。この記事では、主題について学び、タスク用にLinux Socket Monitorをすばやくセットアップします。このモニターは、「mailx」を使用して、新しいポート/ソケットが開かれたときに通知します。
DigitalOceanコミュニティライブラリのCentOS6.4にLinuxSocketMonitor(LSM)をインストールする方法
Bashスクリプトを使用したその他の監視オプション:
特定のニーズがある場合(つまり 低メモリ、ディスクスペース、ログインなどを監視することで、タスクを実行するためのさまざまな bash スクリプトを検索できるようになりました。利用可能なものは数千あります!
Bashスクリプトとは何ですか?
Bashスクリプト(またはシェルスクリプト、bashプログラム)は、迅速なタスクを実行するために使用される小さなアプリケーションです。 これらは作成と使用が簡単であるため、非常に好まれており、システム管理用の優れたツールになっています。
(必要なタスク用に)1つを見つけたら、実行可能なbashスクリプトとして保存するために空のファイルを作成する必要があります。
例:
ディスク容量が少なくなったときに電子メールアラートを受信したいとします。 これを行うには、「ディスク容量が少なくなったときにメールアラートを送信する」などのGoogle検索をすばやく実行します。 さまざまな結果の中で、LinuxJornalからのものが表示されます。 URL をクリックすると、ページに記載されているbashスクリプトが表示されます。
bashスクリプトにnano
を使用して新しいテキストファイルを作成します。
$ nano monitor_disk_space.sh
URLからコンテンツをコピーして貼り付けます。
#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if [ "$CURRENT" -gt "$THRESHOLD" ] ; then mail -s 'Disk Space Alert' [email protected] << EOF Your root partition remaining free space is critically low. Used: $CURRENT% EOF fi
注:[email protected]
を自分のメールアドレスに置き換えることを忘れないでください。 また、件名も変更できることを忘れないでください。
ファイルを保存して終了するには、「CTRL+X」を押して「Y」で確定します。
これで、monitor_disk_space.sh
という小さなbashプログラムが作成され、好きな名前を付けることができます。
このファイルが実行可能ファイルであることをオペレーティングシステムに通知し続ける必要があります。
「chmod」を使用して、ファイルに実行可能権限を付与します。
$ chmod +x monitor_disk_space.sh
ファイルを実行して実行を試みることができます:./monitor_disk_space.sh
この小さなプログラムをシステムモニターのように動作させたい場合は、ユーティリティツール cron を使用して、特定の間隔で実行するようにスケジュールする必要があります。
特定のタスクのcronのスケジュールについては、Cronを使用してVPSでタスクを自動化する方法に関する次の記事をお読みください。
これで、最初の監視スクリプトの作成が完了しました。
例2:
[ディスク]スペース使用量を監視し、特定のしきい値を超えたときに電子メールを受信する場合は、Linix.comからこの優れた例を参照できます。
空のシェルスクリプトファイルの作成から始めましょう。
$ nano monitor_space_usage.sh
この自明のスクリプトの内容をコピーして貼り付けます。
#!/bin/bash LIMIT='80' #Here we declare variable LIMIT with max of used spave DIR='/var' #Here we declare variable DIR with name of directory MAILTO='[email protected]' #Here we declare variable MAILTO with email address SUBJECT="$DIR disk usage" #Here we declare variable SUBJECT with subject of email MAILX='mailx' #Here we declare variable MAILX with mailx command that will send email which $MAILX > /dev/null 2>&1 #Here we check if mailx command exist if ! [ $? -eq 0 ] #We check exit status of previous command if exit status not 0 this mean that mailx is not installed on system then echo "Please install $MAILX" #Here we warn user that mailx not installed exit 1 #Here we will exit from script fi cd $DIR #To check real used size, we need to navigate to folder USED=`df . | awk '{print $5}' | sed -ne 2p | cut -d"%" -f1` #This line will get used space of partition where we currently, this will use df command, and get used space in %, and after cut % from value. if [ $USED -gt $LIMIT ] #If used space is bigger than LIMIT then du -sh ${DIR}/* | $MAILX -s "$SUBJECT" "$MAILTO" #This will print space usage by each directory inside directory $DIR, and after MAILX will send email with SUBJECT to MAILTO fi
必要に応じて変更したことを確認した後(そしてMAILTO変数を変更して受信者としてメールアドレスを設定した後)、「CTRL+X」を押して「Y」で確定することで保存できます。
ファイルをexecutableとして再度設定すると、2番目のLinuxシステム監視ツールの準備が整います。
ファイルの実行権限を付与するには、次のコマンドを実行します。
$ chmod +x monitor_space_usage.sh
ノート:
監視に関するその他のシェルスクリプトについては、http://bash.cyberciti.biz/shell/monitoring/およびhttp://linoxide.com/category/linux-shell-script/にアクセスしてください。 。
一般的なシェルスクリプトの詳細については、http://www.linoxide.com/guide/scripts-pdf.htmlにアクセスしてください。