2014年12月31日水曜日

Raspberry Pi から sSMTP でメールを送る.

年末で時間があったので,Raspberry Pi からメールを送れるように設定した.

ラズパイからメールを送るためには,MTA(Mail Transfer Agent)と呼ばれるプログラムをインストールして設定すれば良いようだが,Sendmail,qmail,Postfix など色々と種類があるらしい.

これらのプログラムは,通常メールサーバ上で動いており,私たちがメールを送るときには,MUA(Mail User Agent)すなわちメーラーを介して、MTA にメールを受け渡すことでメールを送信先に届けているようだ.



つまり,ラズパイからメールを送るためには

ラズパイをメールサーバ化してやれば良い

ということになる.



では,どの MTA を採用するべきか?

最も有名で,かつ古くから MTA として利用されているのが Sendmail.こいつは非常に高機能で,設定ファイルを適切に記述してあげることで高度な設定が行えるらしいが,かなり複雑な構造になっており,設定ファイルの記述法も難しく,管理が大変という欠点を抱えている.

一方の qmail や Postfix は Sendmail と比べて,設定が容易になっており,機能面でも通常の利用法をしている限りは十分らしく,最近では Linux の標準 MTA が Sendmail から置き換えられている場合もあるらしい.



しかし,今回はそのいずれもその採用を見送ることにした.私の目標はあくまでメールを送信できるようにすることであり,メールサーバーをたてることではないからだ.

そして,その目的にピッタリだったのが,sSMTPというプログラム.

各所で,非常にシンプルな MTA と紹介されているが,別途 SMTP サーバを必要とすることから,MTA というよりは,CUI で操作でき,sendmail コマンドの代替として利用できる,SMTP クライアントソフトと称した方が正確のような気がする.

前置きが長くなったが,実装方法に移っていきたいと思う.



まずはプログラムをインストールする.

標準のパッケージに sSMTP も用意されているので,いつも通り apt-get してやれば良い.
$ sudo apt-get install -y ssmtp



先ほど,sendmail コマンドの代替として利用できると書いたが,実際にインストール完了後に,sendmail コマンドを ls コマンドで詳しく表示してみると,sendmail コマンドが ssmtp コマンドで置き換えられていることが確認できる.
$ ls -al /usr/sbin/sendmail

(実行結果)
lrwxrwxrwx 1 root root 5 7月 10 2012 /usr/sbin/sendmail -> ssmtp



インストールが完了したら,/etc/ssmtp/ssmtp.conf を開き,SMTP サーバの設定に移る.

ラズパイの場合はデフォルトで root,mailhub,hostname,FromLineOverrideの4つのオプションが設定されているが,そのうち root と mailhub に変更を加える.(今回は Gmail の SMTP サーバを利用することにした)
root=*****@gmail.com       ←自分のメールアドレス
mailhub=smtp.gmail.com:587 ←SMTPサーバのアドレス



もちろん,これだけでは,Gmail の SMTP サーバにアクセスできないので,さらにアカウントの認証情報を追加する.

AuthUser=*****@gmail.com
AuthPass=password
UseSTARTTLS=YES

ちなみに,Gmail の二段階認証をオンにしている場合でも,アプリパスワードを発行してそれを password のところにコピペしてやれば問題なく使える.また,一番下は暗号化の方式で Gmail を利用する場合には追加する.

以上で sSMTP の設定は終了.本当に簡単である.



さて,あとは mail コマンドでメールを送って,正常に動作するか確認するだけだ.

まず,mailutils のインストールが済んでいない場合には apt-get しておく.
$ sudo apt-get install -y mailutils

ここまで完了したら,いよいよメール送信テストだ.携帯にでも送っておけば良いだろう.
$ mail hoge@docomo.ne.jp
Cc:
Subject:Test.
This is test.
(ここで Ctrl + d を押す:EOT)

無事にメールが届くことが確認できたら,設定はすべて完了だ.

cron に MAILTO を登録するなり,シェルスクリプトに追加するなりして利用する.

0 件のコメント:

コメントを投稿