Gmail サーバ を使って Raspberry Pi から メール送信 (「安全性の低いアプリの許可」を使う方法)

# 環境

- Raspberry Pi 3 Model B
- Raspbian Stretch Lite 2018-11-13 版

このほか、Gmailのアカウント設定を用意しておきます。

MTA として exim4 , 送信メールサーバとして smtp.gmail.com , ポート番号として 587 を使います。

# smtpサーバとしてGmailを使う


Gmailのメールサーバを使ってメール送信をするためには、
「安全性の低いアプリの許可」を有効にする方法と
「2段階認証プロセス」を使う方法があります。

今回は簡単に動作確認を済ますため、
「安全性の低いアプリの許可」を有効にする方法を使いました。

動作確認が終わったら「2段階認証プロセス」を使う方法に変更するのが推奨です。


```

sudo apt-get install exim4
sudo dpkg-reconfigure exim4-config
```

として、Mail Configurationで設定していく。

```
## General type of mail configuration: 

```

mail sent by smarthost; received via SMTP or fetchmail                                
を選ぶ。


```

## System mail name:   
```
                                                                                          利用者のドメイン。今回は nanbu.com とした。


```

## IP-addresses to listen on for incoming SMTP connections:                                                       
```
は127.0.0.1 ; ::1のまま

```

## Other destinations for which mail is accepted:                                                                 
```

は空白にする。

```

## Machines to relay mail for:   
```
は空白にしてみた。

```

## IP address or host name of the outgoing smarthost:       
```
は smtp.gmail.com::587 (実際はここで間違えて smtp.gmail.com:587 と入力したらしい)


というように設定が続いていく。しばらくデフォルトで進めていって、


```

## Root and postmaster mail recipient:     

```
は管理者として自分のメールアドレスを入れた


# メール送信テスト(設定ミスで失敗編)


```

 echo "Test" | mail -s "test" （送信先メールアドレス）

```
としてメールが届いたか確認してみる。
うーん、届かない？ ログ ( /var/log/exim4/mainlog ) を見てみる。


```

2019-03-08 19:37:07 1h2CsF-0000IJ-AJ <= pi@raspberrypi U=pi P=local S=367
2019-03-08 19:37:07 1h2CsF-0000IJ-AJ H=gmail-smtp-msa.l.google.com [2404:6800:4008:c06::6c] Network is unreachable
2019-03-08 19:37:07 1h2CsF-0000IJ-AJ H=gmail-smtp-msa.l.google.com [64.233.188.109] No route to host
2019-03-08 19:37:07 1h2CsF-0000IJ-AJ H=587 [0.0.2.75] Invalid argument
2019-03-08 19:37:07 1h2CsF-0000IJ-AJ == （送信先メールアドレス）R=smarthost T=remote_smtp_smarthost defer (22): Invalid argument

```
うーん。そもそも設置しているネットワークから gmail の SMTP サーバにアクセス可能だろうか。ファイアウォールなどで遮断されていないかどうかチェック。

```

pi@raspberrypi:~ $ sudo nmap gmail-smtp-msa.l.google.com

Starting Nmap 7.40 ( https://nmap.org ) at 2019-03-08 19:41 JST
Nmap scan report for gmail-smtp-msa.l.google.com (64.233.188.109)
Host is up (0.00033s latency).
Other addresses for gmail-smtp-msa.l.google.com (not scanned): 2404:6800:4008:c06::6c
rDNS record for 64.233.188.109: tk-in-f109.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
587/tcp open  submission

Nmap done: 1 IP address (1 host up) scanned in 200.27 seconds

```

空いてますね

設定を見なおしてみます。

```


$ cat /etc/exim4/update-exim4.conf.conf 
# /etc/exim4/update-exim4.conf.conf
#
# Edit this file and /etc/mailname by hand and execute update-exim4.conf
# yourself or use 'dpkg-reconfigure exim4-config'
#
# Please note that this is _not_ a dpkg-conffile and that automatic changes
# to this file might happen. The code handling this will honor your local
# changes, so this is usually fine, but will break local schemes that mess
# around with multiple versions of the file.
#
# update-exim4.conf uses this file to determine variable values to generate
# exim configuration macros for the configuration file.
#
# Most settings found in here do have corresponding questions in the
# Debconf configuration, but not all of them.
#
# This is a Debian specific file

dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com:587'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
pi@raspberrypi:~ $ 

```

ということで、

dc_smarthost='smtp.gmail.com::587'

が正しいのですが、

：：が：になってました。

修正して、

```

sudo update-exim4.conf

```
で反映します。

# メール送信テスト(本番編)

これを直して、再度


```

 echo "Test" | mail -s "test" （自分のメールアドレス）

```
とすると、


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/159db4f1-05da-1fbb-206d-14822d8c9213.png)

「重大なセキュリティ通知」として「ログインをブロックしました」というメールが飛んできます。
今回は「安全性の低いアプリの許可」を有効にする方法を使うので、Googleアカウント画面で以下のように有効にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/022b32cd-3b71-a59b-b1c5-e44c7603288e.png)

受信できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/47c473a1-1887-1a70-ec88-68a3dc2b08d7.png)


# 参考にしたページ

ayame.space「Raspberry Pi (Raspbian)でメール送信できるようにする」
https://ayame.space/2017/06/setup-send-email-by-exim4-for-raspberry-pi/