Linuxでログの内容をGmailにメールを送信する

はじめに

Linuxでサーバを立ててログをとっている場合、そのログの内容を指定したアドレスにメールで送信したいということがあると思います。私はrsyncで自動バックアップを取る環境を構築するときに必要となりました。そこで、ログ内容をメール送信する方法を調べたので、その方法と手順をメモします。

環境

サーバ:Ubuntu Server 13.04 64bit
メールの送信先:Gmail (プロトコルはsmtpでポート番号は587番)

手順

mailコマンド関連をインストール

まずはじめにubuntuでコマンドによるメール送信を可能とするために、mailコマンドを使用します。mailコマンドがインストールされていない場合は、以下のコマンドでインストールします。


/etc/postfix/main.cfを修正

Gmail宛にメールを送信できるようにするために、いくつかの情報を /etc/postfix にある main.cf というファイルを修正、情報を追記します。そのためにviエディタを使ってmain.cfを開きます。

開いたら以下に関する項目を修正します。

relayhostにGmailのsmtpサーバを指定

saslとtlsの設定


Gmailのアカウント情報をファイルに記述

Gmailにメールを送信するために自分が持っているメールアカウントの情報を sasl_password というファイルを作成し、その中に記述しておきます。

sasl_passwordの中には以下の1行を記述します。

「virtualimenttest」はGmailアカウントのユーザ名、「password」はGmailアカウントのパスワードになります。

また、パスワードが記述された sasl_password の権限を変更しておきます。

あとは sasl_passwordを以下のpostmapコマンドで読み込んで、postfixを再起動します。

以上でubuntuからmailコマンドを使用してGmailにメールを送信できるようになったはずです。

使ってみる

そして以下のようにcatコマンドとパイプを使って、ログファイルの内容を本文としたメールを指定したアドレスに送信します。

なお、-sオプションは、件名指定のオプションであり -s の後に続く「testlog」が件名となります。
また、以下のコマンドを実行することで、メールが送信できたかどうかを確認できます。

メール送信に成功して、キューにメールが溜まっていない場合は、mailqの実行結果として以下が出力されます。

逆に失敗してメールがキューに溜まっている場合は、以下のような結果が出力されます。

溜まっているメールを削除するには、以下のようにpostsuperコマンドとdオプションを使って上記の出力結果にあるQueue IDを指定して削除したり、

以下のように溜まっているメールすべてを一括で削除することもできます。


まとめ

ubuntuでログ内容をメール送信できるようになりましたが、mailコマンドを端末上で実行して使うことはあんまりないかと思います。実際には、cronに登録して定期的にメールを送信するような使い方になると思います。そしてcronやシェルスクリプトと組み合わせて使う場合は多いので役に立つと思います。

参考サイト様

以下のサイトが大変参考になりました。ありがとうございました。

Ubuntu 9.04 Server – Postfixの設定 | icoro

このエントリーをはてなブックマークに追加

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

  1. […] rsyncの実行結果が正常終了でなかった場合の処理です。この場合はLOGの内容とcodeの内容をメールで$MAILADDに送信しています。「mail」コマンドによるメールの送信については、こちらにまとめましたので必要な方は参考にして頂ければと思います。 […]

トラックバック URL