シェルスクリプトでメールを送信する方法(Mutt+MSMTP+Gmail)

本ページはプロモーションが含まれています

スキルアップ

マニアックな記事になってしまい申し訳ありません。
以前、サーバでアプリケーションのログ監視中にエラーが発生した場合、メールにログファイルを添付して通知したいということがあり、その設定手順について投稿しました。
そちらの記事で紹介していたSMTPクライアント「SSMTP」が2014年時点で更新が止まってしまっているため、2020年時点でも更新されているSMTPクライアント「MSMTP」を使用した手順を投稿します。

広告

前提条件

  • サーバOSはCentOS 7
  • SMTPサーバはGmailを使用する
  • Googleアカウントは 2段階認証を設定している

用意するもの

  • Googleアカウント

手順

Googleのアプリパスワードを発行する

  1. Googleアカウントにログイン

  2. 「セキュリティ」>「アプリ パスワード」と遷移する

  3. 「アプリを選択する」で「メール」を選択する

  4. 「デバイスを選択する」で「その他(名前を入力)」を選択する

  5. 任意の名前を入力する
    例)シェルスクリプト

  6. 「生成」ボタンを押す

  7. 以降の 手順(「MSMTP」を設定する)で使用するのでメモ帳などにコピーしておく

「EPEL」(EnterpriseLinux用の追加パッケージセット)を設定する

1.「EPEL」をインストールする

$ sudo yum install epel-release

「Mutt」(UNIX向け電子メールクライアント)を設定する

1.「Mutt」をインストールする

$ sudo yum install mutt

2.「Mutt」を設定する
  「Mutt」の設定ファイルに下記の通り、追記する

$ sudo vi /etc/Muttrc

set sendmail="/usr/sbin/ssmtp"		# SMTPクライアント(SSMTPを指定)
set realname="[メールの差出人名]"	# メールの差出人名
set from="[返信先のメールアドレス]"	# 受信者のメーラーで「From」に表示させるメールアドレス

「MSMTP」(メール転送エージェント)を設定する

1.「MSMTP」をインストールする

$ sudo yum install msmtp

広告

2.「MSMTP」を設定する
  「MSMTP」の設定ファイルに下記の通り、修正もしくは追記する

$ sudo cp /usr/share/doc/msmtp-x.x.x/msmtprc-user.example /etc/msmtprc
$ sudo chmod 600 /etc/msmtprc
$ sudo vi /etc/msmtprc
~前略~
# Set default values for all following accounts.
defaults

# Use the mail submission port 587 instead of the SMTP port 25.
port 587

# Always use TLS.
tls on

~中略~

tls_trust_file /etc/pki/tls/certs/ca-bundle.crt

~中略~

tls_starttls on
logfile /var/log/msmtp.log

# A freemail service
account gmail

# Host name of the SMTP server
host smtp.gmail.com

~中略~

# Envelope-from address
from [FROMのメールアドレス]

# Authentication. The password is given using one of five methods, see below.
auth on
user [Googleアカウント@gmail.com]
~中略~

password [アプリパスワード(16文字)]
~中略~

# Set a default account
account default : gmail

※設定ファイルにパスワードを平文で記載しなくてもよい方法がありますので、また別途投稿します。

メールを送信する

$ echo "[メール本文]" | mutt "[メール件名]" [宛先メールアドレス] -a [添付ファイルパス1] -a [添付ファイルパス2]

まとめ

試行錯誤の末、何とかこの手順に辿り着きました。
同じように悩んでいる方の役に立てば幸いです。

最後まで読んでいただきありがとうございます。
よかったら、下のボタンからフォローやシェアをしていただけるとうれしいです。

コメント