Raspberry Pi OSで稼働しているラズパイおよびUbuntuマシンから、Gmailアカウントを使ってメールを送信するために、msmtpを導入した。設定は簡単であった。
SMTPサーバを立てない環境でのお手軽なSMTPクライアントとして、これまではSSMTPを多く利用していたが、Raspberry Pi OS「buster」の環境ではSSMTPをうまく動作させることができないらしい。今回よりmsmtpへ乗り換えることにし、自分用メモとして、msmtpの導入方法を残しておきます。
今日はこれに引っかかる。毎日いろいろあるなあ (溜息)
— Masahiko OHKUBO (@mah_jp) March 4, 2021
SSMTP failing to send to gmail - Raspberry Pi Forums https://t.co/cMhSTIY5Ws
msmtpをセットアップするか……。
「msmtp」というSMTPクライアントの、本家サイトは次のURLだ。
ここでは次のようなサーバ環境・状況を想定し、サーバのコマンドラインでのメール送信が行え、さらにcron標準出力やシステムメールが送信がされるように、msmtpを設定する。
項目 | 内容 |
---|---|
サーバOS | Raspberry Pi OS or Ubuntu |
サーバ利用者 | 現時点ではひとり (自分) だけ |
ユーザアカウント | user1 |
user1のGmailアドレス | example1 [at] gmail.com |
上記Googleアカウントの2段階認証 | 有効化済 |
msmtp
, msmtp-mta
をインストールする## Raspberry Pi OS (Raspbian GNU/Linux 10 (buster))
$ sudo apt install msmtp msmtp-mta
## Ubuntu 20.04.02
$ sudo apt install msmtp msmtp-mta
*.example
等は次の場所にインストールされる$ ls -al /usr/share/doc/msmtp/examples/
total 32
drwxr-xr-x 6 root root 4096 Mar 4 23:11 .
drwxr-xr-x 3 root root 4096 Mar 4 23:11 ..
drwxr-xr-x 2 root root 4096 Mar 4 23:11 find_alias
drwxr-xr-x 2 root root 4096 Mar 4 23:11 msmtpq
drwxr-xr-x 2 root root 4096 Mar 4 23:11 msmtpqueue
-rw-r--r-- 1 root root 532 Feb 12 2019 msmtprc-system.example
-rw-r--r-- 1 root root 2828 Feb 12 2019 msmtprc-user.example
drwxr-xr-x 2 root root 4096 Mar 4 23:11 set_sendmail
msmtpにSMTP認証させるために、Google アカウントのアプリパスワードにてmsmtp用のパスワード「XXXXXXXXXXXXXXXX (16文字)」を作成し、それをmsmtpの設定ファイルに記載する必要がある。
このパスワードをsystem wideな設定ファイル (/etc/msmtprc
) に記載すると、将来的にサーバへ自分以外をユーザ追加することになったら、そのユーザもパスワードを読めて問題となりそうだ。そこで、msmtp用のパスワードを、各ユーザ別の設定ファイル (~/.msmtprc
) に記載する方針とする。
aliases
ファイルを編集し、ユーザアカウントごとのメール送信先を定義する。ちなみに「default」は規定のメール送信先となるので定義をまとめることもできる$ sudo vim /etc/aliases
$ sudo chmod 644 /etc/aliases
$ cat /etc/aliases
root: example1@gmail.com
user1: example1@gmail.com
#default: example1@gmail.com
~/.msmtprc
を編集する$ vim ~/.msmtprc # 内容は下記catの通り
$ chmod 600 ~/.msmtprc
$ cat ~/.msmtprc
defaults
syslog LOG_MAIL
aliases /etc/aliases
account gmail
host smtp.gmail.com
port 587
user example1
password XXXXXXXXXXXXXXXX
from example1@gmail.com
tls on
tls_starttls on
tls_certcheck off
auth on
account default : gmail
$ sudo cp -p /home/user1/.msmtprc /root/
$ sudo chown root.root /root/.msmtprc
次のコマンドで、SMTPのやり取りが画面表示されて実際にメールが送信され、かつ、msmtpの記録がsyslogに残るようであれば動作OKだ。
$ echo "test" | msmtp -v example1@gmail.com
$ grep msmtp /var/log/syslog