シェルスクリプトからGmailのSMTPサーバを経由してメールを送る

自宅サーバを立てていると、イベントごとにサーバからメールを送りたくなることが多々ある(ルータのIPが変わるなど)こういう場合は、ローカルのSMTPサーバを使ってメールを送るのが常套手段らしいのだけど、昨今は俺俺SMTPサーバに優しくない世の中であり、かつ自前SMTPサーバを使っていると、メールの管理がややこしくなるのでGmailのアドレスからメールを送れるようにしてみたいと思った。
が、意外とやってる人がいなかった…。いや、Gmailコマンドラインから使うというのをやってる人はいるのだけど、スクリプトから自動で、っていう人は簡単には見つからなかった。なのでやってみた。
環境はDebian/SH4で、結果的にmsmtp+mailxで実現できた。以下は詳細。
とりあえずインストール。

# aptitude install msmtp mailx

次に設定ファイル。
.msmtprc

account default
host smtp.gmail.com
port 587
user ユーザー@gmail.com
password パスワード
from ユーザー@gmail.com
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
logfile .msmtp.log

.mailrc

set sendmail="/usr/bin/msmtp"

設定はこれだけ。あとはシェルスクリプトから、

echo 本文 | mail -v -s "サブジェクト" 送り先メールアドレス

とすると送ることができる。odawaraの使い方は、IPアドレスを見て、変わっていたらメールを送るというスクリプト。MyDNS.jpを使っているのだけど、下みたいな感じにしている。エラー処理は甘い。

#!/bin/sh

ADDR_OLD="REMOTE_ADDR = 0.0.0.0"
echo $ADDR_OLD
while [ 1 ]
do
        USER="ユーザID"
        PASS="パスワード"
        echo "Check MyDNS a-odawara.com"
        wget -o /dev/null -O ./MyDNS.log  http://$USER:$PASS@www.mydns.jp/login.html
        ADDR_NOW=`cat ./MyDNS.log | grep REMOTE_ADDR`
        echo $ADDR_NOW

        if [ "$ADDR_OLD" = "$ADDR_NOW" ];
        then
                echo "No change IP address"
        else
                echo "Change IP address"
                echo $ADDR_NOW | mail -v -s "Change IP adddress" 送り先メールアドレス
                ADDR_OLD=$ADDR_NOW
        fi

        sleep 適当にスリープ
done

送り先メールアドレスをケータイにしているんだけど、たぶん便利(これを作ってからIP変わってない…)
参考ページはいろいろあるんだけど、これというものはない。
2007-10-28
2008-03-01
msmtp 1.8.3http://linuxコマンド.com/01linux/028mail.html
最後にbashの参考ページ。
http://www.silver-shell.com/info/index.php?%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%CD%EE%A4%C8%A4%B7%B7%EA%20-bash%CA%D4-