Raspberry Pi 3+の設定（忘備録）その2 Postfix設定

今までRaspberry Pi 3+に16GBのmicroSDを挿してwebサーバとして運用していましたが、手狭になってきたので64GBに改めて環境構築をした時の自分の作業の忘備録です。以前導入した時とだいぶ変わっている部分が多かったので驚いたのが第一印象でした。

# 前提

* このラズベリーパイは外部に公開はしません。（twitterへのポストはします）
* 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
* そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。

またこういう世界から遠ざかって久しいのでいろいろと拙い部分があると思います。ご指摘ください。

# postfixインストール

今回は、ラズベリーパイからgmailを経由してメールを送ることを目標とします。
あらかじめgmailアドレス取得済み、アプリパスワードでパスワード取得済みであることが前提です。アプリパスワードについてはこちら。

https://support.google.com/accounts/answer/185833?hl=ja

あと、今回参考にしたサイトはこちら

https://qeynos2525.blog.jp/archives/1075712502.html

ここを見ながらでほぼ100％できました。最初はメール送信できませんでしたが、こういう場合は後ほど設定するメールアドレスとパスワードを疑うとだいたい解決します。

```console:
$ sudo apt install postfix libsasl2-modules mailutils
```
インストール時にメールサーバ設定形式を聞かれますが、私は「インターネットサイト」を選択しました。（設定なしでもいいかもしれません）
![postfix02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207708/31d59088-7ba2-7427-007e-6ecbbefc12f9.png)

インストール中にドメインを聞かれます。/etc/hostnameで設定した値.localを自分は設定しました。
![postfix04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1207708/6c87fec9-5473-627c-7b72-4fc38640a941.png)


続いてmain.cfの設定です。あらかじめ元あるmain.cfをコピーしておきます。

```console:
$ cd /etc/postfix
$ sudo cp main.cf main.cf.cp
```

ファイルの中身を編集します。

```config:main.cf
#relayhost = 
relayhost = [smtp.gmail.com]:587
inet_interfaces = loopback-only
#inet_protocols = all
inet_protocols = ipv4
```

さらにファイル後部に追記します。

```config:main.cf
#追記
smtp_sasl_auth_enable = yes
smtp_tls_security_level = encrypt
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
```

以上でmain.cfの編集は終了です。続いてリレーするgmailのアドレスとパスワードの設定を行います。

/etc/postfix/sasl/以下にsasl_passwdを新規作成します。

```console:
$ cd /etc/postfix/sasl/
$ sudo nano sasl_passwd
```

```config:/etc/postfix/sasl_passwd
[smtp.gmail.com]:587 (取得済みgmailアドレス）:（取得済みアプリパスワードの値）
```

ファイルを編集したら、sasl_passwd.dbを作成します。

```console:
$ sudo postmap /etc/postfix/sasl/sasl_passwd
```
このコマンド実行後に同じディレクトリにsasl_passwd.dbが作成されたことを確認してください。

さらにaliasesを設定します。

```console:
$ cd /etc
$ sudo nano aliases
```

```config:/etc/aliases
root:(取得済みgmailアドレス）
```
aliasesを編集したらaliases.dbを作成します。

```console:
$ sudo newaliases
```

ここまで設定したらサービスを再起動します。

```console:
sudo systemctl restart postfix
```

メールを送信できるかテストします。

```console:
$ mail (送信したいメールアドレス)
Cc:（空欄でもよい）
Subject:（なんか入れる）
本文
.
[ctr]+d
```
最後尾に.を入れないとメールが送れません。
これでメールを送信すると、取得済みgmailアドレスが差出人のメールが送信されます。

メールが送れない場合、今回の設定の経験上でいえることは

* sasl_passwdの内容が間違っている。
* sasl_passwdの内容を変更した後にsudo postmap /etc/postfix/sasl/sasl_passwd していない
* newaliasesの内容が間違っている
* newaliasesの内容を変更した後にsudo newaliasesしていない

のパターンでした。


この日の作業はここまで。

:::note info
念のためこのあたりでWin32DiskImagerでmicroSDのイメージをコピーしておくことをお勧めします。
:::

# 関連ページ

https://qiita.com/cafe-capitola/items/b5e3e5dfdc8ca9f9a744

https://qiita.com/cafe-capitola/items/283f41793cde409a36a6

https://qiita.com/cafe-capitola/items/d167b4e96fa78dc8878c

https://qiita.com/cafe-capitola/items/97dd713185049d4a8274

https://qiita.com/cafe-capitola/items/2b80853490c88d6eae0c?1

https://qiita.com/cafe-capitola/items/91e10926bfbe9cea61e0

https://qiita.com/cafe-capitola/items/9f97c791a598420a7e57