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
    
  2. 設定ファイルのサンプル*.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
    
  2. ユーザ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
    
  3. 作成した設定ファイルを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