Linuxでログの内容をGmailにメールを送信する
はじめに
Linuxでサーバを立ててログをとっている場合、そのログの内容を指定したアドレスにメールで送信したいということがあると思います。私はrsyncで自動バックアップを取る環境を構築するときに必要となりました。そこで、ログ内容をメール送信する方法を調べたので、その方法と手順をメモします。
環境
サーバ:Ubuntu Server 13.04 64bit メールの送信先:Gmail (プロトコルはsmtpでポート番号は587番)
手順
mailコマンド関連をインストール
まずはじめにubuntuでコマンドによるメール送信を可能とするために、mailコマンドを使用します。mailコマンドがインストールされていない場合は、以下のコマンドでインストールします。
$ sudo apt-get insbashtall mailutils
$ sudo apt-get install sasl2-bin
/etc/postfix/main.cfを修正
Gmail宛にメールを送信できるようにするために、いくつかの情報を /etc/postfix にある main.cf というファイルを修正、情報を追記します。そのためにviエディタを使ってmain.cfを開きます。
$ sudo vi /etc/postfix/main.cf
開いたら以下に関する項目を修正します。
relayhostにGmailのsmtpサーバを指定
relayhost = [smtp.gmail.com]:587
saslとtlsの設定
#sasl setting
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
#tls setting
smtp_use_tls = yes
Gmailのアカウント情報をファイルに記述
Gmailにメールを送信するために自分が持っているメールアカウントの情報を sasl_passwd というファイルを作成し、その中に記述しておきます。
$ sudo vi /etc/postfix/sasl_passwd
sasl_passwdの中には以下の1行を記述します。
[smtp.gmail.com]:587 virtualimenttest@gmail.com:password
「virtualimenttest」はGmailアカウントのユーザ名、「password」はGmailアカウントのパスワードになります。
また、パスワードが記述された sasl_passwd の権限を変更しておきます。
$ sudo chown root:root /etc/postfix/sasl_passwd
$ sudo chmod 600 /etc/postfix/sasl_passwd
あとは sasl_passwd を以下のpostmapコマンドで読み込んで、postfixを再起動します。
$ sudo postmap /etc/postfix/sasl_passwd
$ sudo service postfix restart
以上でubuntuからmailコマンドを使用してGmailにメールを送信できるようになったはずです。
使ってみる
そして以下のようにcatコマンドとパイプを使って、ログファイルの内容を本文としたメールを指定したアドレスに送信します。
$ cat hoge.log | mail -s "testlog" virtualimenttest@gmail.com
なお、-sオプションは、件名指定のオプションであり -s の後に続く「testlog」が件名となります。 また、以下のコマンドを実行することで、メールが送信できたかどうかを確認できます。
mailq
メール送信に成功して、キューにメールが溜まっていない場合は、mailqの実行結果として以下が出力されます。
Mail queue is empty
逆に失敗してメールがキューに溜まっている場合は、以下のような結果が出力されます。
ubuntuserver@ubuntu:~/backup$ mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
133A323sas 1907 Tue Apr 8 20:36:18 ubuntuserver@ubuntu
virtualimenttest@gmail.com
-- 2 Kbytes in 1 Request.
溜まっているメールを削除するには、以下のようにpostsuperコマンドとdオプションを使って上記の出力結果にあるQueue IDを指定して削除したり、
sudo postsuper -d 133A323sas
以下のように溜まっているメールすべてを一括で削除することもできます。
sudo postsuper -d ALL
まとめ
ubuntuでログ内容をメール送信できるようになりましたが、mailコマンドを端末上で実行して使うことはあんまりないかと思います。実際には、cronに登録して定期的にメールを送信するような使い方になると思います。そしてcronやシェルスクリプトと組み合わせて使う場合は多いので役に立つと思います。
参考サイト様
以下のサイトが大変参考になりました。ありがとうございました。
Ubuntu 9.04 Server – Postfixの設定 | icoro
関連記事
- 公開日:2022/09/11 更新日:2022/09/11
Google Compute EngineのインスタンスにSSH接続できなくなった時の対処方法
Google Compute EngineのインスタンスにSSH接続できていたのにSSHの設定ミスや原因不明でSSH接続できなくなった時の対処方法をメモします。自分のPCからだけでなく、Google Cloud Platform上での管理画面からもSSHできない場合にも有効です。
- 公開日:2022/09/08 更新日:2022/09/08
Google Compute EngineのインスタンスにSSH接続する
Google Compute Engineのインスタンスにssh接続するための手順をまとめます。
- 公開日:2018/02/10 更新日:2018/02/10
CentOSでrootのときだけ日本語が文字化けする時の原因と対処方法
さくらVPSでCentOSを使いはじめたところ、一般ユーザで使用している時はvimなどのエディタで編集していても日本語が問題なく表示されていましたが、root権限で同様に編集のためにファイルを開いたら日本語が文字化けしてしまいました。以降ではこの原因と対処方法についてメモします。
- 公開日:2017/12/09 更新日:2017/12/09
サーバ上のディレクトリをローカルにマウントするsshfsの使い方
Linuxでは、サーバ側のディレクトリを自身のローカルPCにマウントして、ローカル上のディレクトリして使用することができるsshfsというコマンドが用意されています。ここではこのsshfsの使い方をメモします。
- 公開日:2017/08/27 更新日:2017/08/27
MacでubuntuのインストールUSBを作成する方法と手順
MacでubuntuのインストールUSBを作成する手順をメモします。ここで載せる手順はターミナルでのコマンドによる方法になります。