gmail を使って外部アドレスのメールを送受信、IoTデバイスからメールを送信



独自ドメインで運用するメールアドレスを運用したり、gmail 以外のメールアドレスを gmail で運用したりする場合、受信はさほど支障はありませんが送信は結構面倒です。

簡単に解決する方法として、手持ちの gmail アカウントを使って送ることができます。
具体的には smtp.gmail.com を使用するのですが、smtp.gmail.com の認証のためにいくつか設定をする必要があります。

それについての設定メモです。特に、ocn などでの gmail からのメールが届かないメールアドレスについても設定できる Hack を行います。

# 環境

2023/11/10

割と変わります。この記事は上記日付時点でのメモです。

gmail アカウント 例として、example@gmail.com として説明します。
外部メールアドレス 例として anybody@example.or.jp のメールを受信する場合を例とします。


# アカウント設定画面の出し方

gmail から 歯車マークで「クイック設定」→「すべての設定を表示」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d77298e1-d254-51f3-433b-64e4d4a97213.png)

「アカウントとインポート」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/1e0e1a42-6eb1-c8f1-ae56-f28e123ee341.png)


# gmail で外部アドレスのメールを外部メールサーバから受信



アカウント設定画面から、「他のアカウントのメールを確認：メールアカウントを追加する」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/c79db115-a4af-d38c-a5b5-925fc070cc56.png)

メールアドレス「anybody@example.or.jp」を入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5aab8d43-ed26-3b12-6c69-16244ea80060.png)

メールアドレスの受信サーバにあわせて入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a7a4a1bd-aa07-13a8-26b6-06c96636742d.png)

設定が正常であれば受信できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f070ab59-307d-7469-0088-b8fda5c74399.png)

## 問題点

このままで受信はできますが、gmail 側で受信したメールに返信しようとすると、送信アドレスが example@gmail.com となってしまいます。

それを防ぐためには、 gmail で外部メールアドレスの送信設定を行います。


# gmail で外部アドレスのメールを外部SMTPサーバから送信


送信元/返信先を gmail アカウントではないアドレスにするには、先の設定で「はい。 anybody@example.or.jp としてメールを送信できるようにします。」を選ぶか、「アカウントとインポート」設定画面から「名前：他のメールアドレスを追加」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/9cf75f9a-cab1-5a6d-a5ee-e64818ccd804.png)


メールアドレスを入力します。「エイリアスとして扱います」のチェックは外したほうが良さそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6ce44920-961f-72a2-8995-f13e8f2a373e.png)
外部SMTPサーバの情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/1bf1f097-da7f-2b73-55cb-106d7ec46e4e.png)

設定したメールアドレスに確認メールが送られます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/15a009c0-3201-1b9e-1b5a-49668c2ed94e.png)

メールを確認し、 confirm リンクを押して完了します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/81096ba0-8812-32ab-bc69-b82a2c6cf211.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3aec668d-8152-d3f7-dd22-03e6570a8017.png)


## 問題点

ocn の smtp サーバなど、 gmail からの確認メールが届きにくい場合があります。
そのような場合は、smtp サーバとして smtp.gmail.com を指定することができます。



# smtp.gmail.com を使ってメールを送信する

アプリパスワードの仕組みを使うと、 smtp.gmail.com からメールを送信できるようになります。
上記のような、gmail からの確認メール受信に問題があったり、外部アドレスの受信サーバが調子が悪かったり、あるいは IoT デバイスなどからメールを送信する場合などに使います。

## 2段階認証プロセスを有効にする

アプリパスワードを使うには、2段階認証を有効にしておく必要があります。

Gmailアカウントで https://myaccount.google.com にログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5f29a1e7-17a7-2570-0115-d109afd07410.png)

「セキュリティ」-「2段階認証プロセス」


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/2817c8f5-af6b-14df-d835-97a965b1d16c.png)
「使ってみる」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4108d96e-6f18-2f53-eccd-88de26c5db00.png)

有効になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5aa621d7-e5b6-9917-8dc0-b121325ae23a.png)


## アプリパスワードを作成する

更に「2段階認証プロセス」を押して、ページ下部にある「アプリパスワード」を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6fa56269-9bef-b3f4-73fc-af30cb1e14e9.png)
管理のためにわかりやすい名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/37ed1967-23b2-f832-aa33-9acb2dfd4e61.png)
作成されました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f9791353-1e34-8ea4-8d0f-8096c30d08d7.png)
このパスワードを設定に使用します。「覚えておく必要はないので」とありますが、コピペなどで次の設定に入力する必要があります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/2156d6cc-3fdd-c7ca-2e2a-df98c1d6a184.png)

gmail に通知メールが来ているので確認しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d2d8dc3e-5c76-7f94-b4c2-ec1a1caf0f8c.png)

## アプリパスワードを使用する

メールを、送りたいデバイスやソフトなどで以下のように設定します

- 送信サーバ smtp.gmail.com
- ポート 578
- パスワード 先ほど設定したパスワード
- ユーザ名  example@gmail.com


この設定で送信すると、gmail アカウントから送信されます。

## 問題点

この方法だけだと、送信したメールの送信元や返信先は example@gmail.com となります。これを anybody@example.or.jp とするためには、上記の 「gmail で外部アドレスのメールを外部SMTPサーバから送信」の設定を併せて行います。