読者です 読者をやめる 読者になる 読者になる

エンジニアの備忘録

仕事や趣味でのトラブルシューティングの備忘録

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

Raspberry Pi Linux

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

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

設定

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

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

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