msmtpでGmailのSMTPでメール送信

How to Configure Gmail SMTP in msmtp

Debian10にmsmtpインストールし、GmailのSMTPサーバーでメール送信したい

msmtp 

メールを送信するだけのホストではsSMTPをよく使っていましたが、Debian10ではssmtpのパッケージが存在しません。
替わりになるものがmsmtp

msmtpのインストール 

# apt install msmtp msmtp-mta

設定 

設定ファイルが/etcにないので、サンプルをコピー

# cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc

ちなみに、ユーザー単位の場合は

# cp /usr/share/doc/msmtp/examples/msmtprc-user.example ~/.msmtprc

設定ファイルを編集 

# Set default values for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# gmail service
account gmail
host smtp.gmail.com
port 587
from user@gmail.com
user user@gmail.com
password ******

# Set a default account
account default : gmail

送信テスト 

$ echo "hello world." | msmtp user@gmail.com
msmtp: account default not found: no configuration file available

設定ファイルに問題はないので、この場合は、パーミッションの問題

# chown root:msmtp /etc/msmtprc
# chmod 600 /etc/msmtprc

この他に、下記のエラーが出る場合は、msmtprc内のhost欄をIPで設定

msmtp: account default from /etc/msmtprc: host not set

再度、送信してみると、gmailの送信エラー

$ echo "hello world." | msmtp user@gmail.com
msmtp: authentication failed (method PLAIN)
msmtp: server message: 534-5.7.9 Application-specific password required. Learn more at
msmtp: server message: 534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor c130sm1091555pfc.51 - gsmtp
msmtp: could not send mail (account default from /etc/msmtprc)

2段階認証を設定している場合、Googleアカウントへのアクセスにはアプリ専用のパスワードを設定する必要があるとの事(Application-specific password required)

2段階認証に設定していなければ、ここで送信が成功しているはずです。(この場合、下記は不要です)

アプリパスワード生成 

アプリ パスワードを使用すると、2 段階認証プロセスに対応していないデバイス上のアプリから Google アカウントにログインできるようになります。このパスワードは一度入力すれば、以降は覚えておく必要はありません。

アプリパスワード欄をクリックし、デバイス選択その他で任意の名前を入力

最後に生成を押すと、コードが発行されるので保存(生成コードはそれぞれ違います)

rxgvdegplcmoxxxx

このコードをmsmtprcのpasswordに置き換えます
(ユーザーのログインパスワードでなく、このコードがパスワードになる)

これで、送信の際にエラーが出なくて、メールが届けば成功です


See also