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 [email protected]
user [email protected]
password ******
# Set a default account
account default : gmail
送信テスト
$ echo "hello world." | msmtp [email protected]
msmtp: account default not found: no configuration file available
設定ファイルに問題はないので、この場合は、パーミッションの問題
# chown root:msmtp /etc/msmtprc
# chmod 640 /etc/msmtprc
この他に、下記のエラーが出る場合は、msmtprc内のhost欄をIPで設定
msmtp: account default from /etc/msmtprc: host not set
再度、送信してみると、gmailの送信エラー
$ echo "hello world." | msmtp [email protected]
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に置き換えます
(ユーザーのログインパスワードでなく、このコードがパスワードになる)
これで、送信の際にエラーが出なくて、メールが届けば成功です