Gmailアカウントでのメール送信が簡単にできるmsmtpの導入方法

Page content

Raspberry Pi OSで稼働しているラズパイおよびUbuntuマシンから、Gmailアカウントを使ってメールを送信するために、msmtpを導入した。設定は簡単であった。

SMTPサーバを立てない環境でのお手軽なSMTPクライアントとして、これまではSSMTPを多く利用していたが、Raspberry Pi OS「buster」の環境ではSSMTPをうまく動作させることができないらしい。今回よりmsmtpへ乗り換えることにし、自分用メモとして、msmtpの導入方法を残しておきます。

SMTPクライアント「msmtp」

「msmtp」というSMTPクライアントの、本家サイトは次のURLだ。

ここでは次のようなサーバ環境・状況を想定し、サーバのコマンドラインでのメール送信が行え、さらにcron標準出力やシステムメールが送信がされるように、msmtpを設定する。

項目内容
サーバOSRaspberry Pi OS or Ubuntu
サーバ利用者現時点ではひとり (自分) だけ
ユーザアカウントuser1
user1のGmailアドレスexample1 [at] gmail.com
上記Googleアカウントの2段階認証有効化済

1. インストール

  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
  1. 設定ファイルのサンプル*.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) に記載する方針とする。

  1. 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
  1. ユーザ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
  1. 作成した設定ファイルを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