以前の記事で、Ubuntu Serverで「ClamAV」によるウイルスチェック結果を、ローカルユーザ宛てにメール通知するようにした。今回、インターネットメールを送信できるように、Rubyスクリプトを使ってメール送信するようにしたので備忘録を残す。
【Ubuntu 20.04/18.04 LTS Server】ClamAVで定期的にウイルスチェックし、メール通知する
前記事でUbuntu Serverをインストールしたが、念の為、アンチウイルスソフトウェア ClamAV をインストールし、定期的にチェックするようにする。追記(2020/9/6)Ubuntu 20.04 LTS Serverでも動作する事...
Ruby関連のインストール
Ruby本体のインストール
$ sudo apt install ruby
Ruby用mail
ライブラリーのインストール
$ sudo gem install mail
SSLメール送信するスクリプト
私の通信環境は@nifty。そのメール設定でRubyスクリプトのファイル mail_send.rb
を作成。(参考.1記事を参考)
#! /usr/bin/ruby
# coding: utf-8
require 'mail'
if ARGV.size != 3
puts "usage : \n "
puts " $ "+ __FILE__ + " hogeto@exmaple.com 'test mail' '<text file>' "
puts " \n\n "
exit
end
options = { :address => "smtp.v6.nifty.com",
:port => 465,
:user_name => '<アカウント>@nifty.com',
:password => '<アカウントパスワード>',
:authentication => 'plain',
:ssl => true,
}
Mail.defaults do
delivery_method :smtp, options
end
mail = Mail.new do
from 'hogeuser@nifty.com'
to ARGV.shift
subject ARGV.shift
body File.read(ARGV.shift)
end
mail.deliver!
実行できるように権限を設定
$ sudo chmod +x mail_send.rb
試しに送信してみる
メール本文の適当なテキストファイル「body.txt
」を作成しておき、下記コマンドを実行してメール送信する。
$ ./mail_send.rb hogeto@sample.co.jp 'test mail' body.txt
無事に届けばOK。
ウイルスチェック結果をメール送信する
以前の記事でのスクリプトを下記のように修正して、ウイルスチェックの結果をメール送信するようにする。尚、上記で作成したRubyスクリプトは、/opt/script/
フォルダにコピーしておく。
if [ $? = 0 ]; then
echo "ウイルス未検出."
/opt/script/mail_send.rb hogeto@sample.co.jp "Clamav scan OK." "/var/log/clamav/clamscan.log"
else
echo "ウイルス検出!!"
/opt/script/mail_send.rb hogeto@sample.co.jp "Clamav scan NG!" "/var/log/clamav/clamscan.log"
fi
補足
- Rubyスクリプトなので、スクリプトを工夫する事でメールタイトルや本文などカスタマイズは自由。
require mail でエラーになる場合(2023/10/24追記)
下記コマンドで、ライブラリがあるか確認する。
$ gem list mail
*** LOCAL GEMS ***
mail (2.7.1)
上記のように「mail」が表示されればよいが、なければ下記コマンドでインストール。
$ sudo gem install mail
関連記事
【GitLab】メール送信機能を使う
前回の記事で、GitLabサーバを構築したが、メール送信機能を使えるように設定する。私は、プロバイダーは@niftyを使っているので @niftyのsmtpサーバ経由でメール送信するように設定。/etc/gitlab/gitlab.rbファ...
コメント