linux mailコマンドで簡単にgmailを送る(Raspbery Pi)

Rapberry piにてlinuxコマンドでgmailを送りたいことがあり、その時設定したときの備忘録。

Kauzmichi Shirai

Rapberry piにてlinuxコマンドでgmailを送りたいことがあり、その時設定したときの備忘録。
(最近、google cloud platformを読んだら、pythonでgmail APIを使ってメール出す方法など書かれていただが、たぶんそれよりも簡単だと思う。)

ブラウザでgoogleアプリパスワードを取得して、raspberry piのSSMTPの設定をするのがおおまかな流れです。


設定

google アプリパスワードを取得する

  1. ブラウザでgmail画面を開き、右上のアイコンをクリック –> “アカウント”をクリック account
  2. ログインとセキュリティをクリック login
  3. アプリパスワードをクリック pass
  4. “端末を選択”をクリック –> “その他”をクリック–> 適当な名前を付ける slelct
  5. アプリパスワードが生成されるのでメモしておく memo

SMTPの設定

必要なpackageをapt-getでraspberry piにインストール

$ sudo apt-get install ssmtp 
$ sudo apt-get install mailutils
$ sudo apt-get install mpack

SSMTPの設定ファイル(/etc/ssmtp/ssmtp.conf)を管理者権限で編集

$ sudo emacs -nw /etc/ssmtp/ssmtp.conf

以下のように編集する

AuthUser=youruserid@gmail.com
AuthPass=userpass
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

ここで、AuthPassは自分のgmailアカウントのパスワードではなく”1. google アプリパスワードを取得する”で取得したパスワードを使います。

参考:https://rpi.tnet.com/project/faqs/smtp


メールを送る

以下のようなメールコマンドでメールを送ることができる。

$ echo "test" | mail -s "Subject" to Someone@mail.com

(備考)linux mailコマンドでmail: cannot send message: Process exited with a non-zero statusが出たときの対応

mailコマンドでgmailを送ろうと設定していたら、mailコマンド実行後に

mail: cannot send message: Process exited with a non-zero status

が出てきて、困った。
調べたところ、sudo emacs -nw /etc/ssmtp/ssmtp.confにAutoLogin=YESAuthLogin=YESの設定を追記したら治った (修正:2017/03/17 黒猫様ご指摘ありがとうございます。)
(参考)
https://www.raspberrypi.org/forums/viewtopic.php?t=46218&p