Gmailアカウントでのメール送信が簡単にできるmsmtpの導入方法
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をセットアップするか……。
SMTPクライアント「msmtp」
「msmtp」というSMTPクライアントの、本家サイトは次のURLだ。
- msmtp Home: https://marlam.de/msmtp/
- msmtp Manual: https://marlam.de/msmtp/msmtp.html
ここでは次のようなサーバ環境・状況を想定し、サーバのコマンドラインでのメール送信が行え、さらにcron標準出力やシステムメールが送信がされるように、msmtpを設定する。
項目 | 内容 |
---|---|
サーバOS | Raspberry Pi OS or Ubuntu |
サーバ利用者 | 現時点ではひとり (自分) だけ |
ユーザアカウント | user1 |
user1のGmailアドレス | example1 [at] gmail.com |
上記Googleアカウントの2段階認証 | 有効化済 |
1. インストール
- サーバに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
2. 設定ファイル作成
msmtpにSMTP認証させるために、Google アカウントのアプリパスワードにてmsmtp用のパスワード「XXXXXXXXXXXXXXXX (16文字)」を作成し、それをmsmtpの設定ファイルに記載する必要がある。
このパスワードをsystem wideな設定ファイル (/etc/msmtprc
) に記載すると、将来的にサーバへ自分以外をユーザ追加することになったら、そのユーザもパスワードを読めて問題となりそうだ。そこで、msmtp用のパスワードを、各ユーザ別の設定ファイル (~/.msmtprc
) に記載する方針とする。
- msmtp用の
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
- ユーザuser1の設定ファイル
~/.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
- 作成した設定ファイルをroot (= これも自分) のホーム領域にも複製する
$ sudo cp -p /home/user1/.msmtprc /root/ $ sudo chown root.root /root/.msmtprc
3. 動作確認
次のコマンドで、SMTPのやり取りが画面表示されて実際にメールが送信され、かつ、msmtpの記録がsyslogに残るようであれば動作OKだ。
$ echo "test" | msmtp -v example1@gmail.com $ grep msmtp /var/log/syslog