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

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

プログラミング

本記事でメール送信に利用しているSMTPクライアント「SSMTP」は2014年で更新が止まっているようなので、2020年時点でも更新されているSMTPクライアント「MSMTP」を使用した記事を投稿しているのでこちらをご覧ください。

今回はマニアックな記事になってしまい申し訳ありません。
サーバでアプリケーションのログ監視中にエラーが発生した場合、メールにログファイルを添付して通知したいということがあり、その設定手順について投稿したいと思います。

広告

前提条件

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

用意するもの

  • Googleアカウント

手順

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

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

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

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

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

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

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

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

「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」に表示させるメールアドレス

広告

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

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

$ sudo yum install ssmtp

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

$ sudo vi /etc/sstmp/ssmtp.conf

root=[Googleアカウント@gmail.com]

mailhub=smtp.gmail.com:587

AuthUser=[Googleアカウント@gmail.com]
AuthPass=[アプリパスワード(16文字)]
UseSTARTTLS=YES

メールを送信する

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

まとめ

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

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

コメント