迷惑(スパム)メールの対策用のシェルスクリプトを作ってみた

正月ボケの解消と実益のため、迷惑(スパム)メール対策をすることにしました。
迷惑(スパム)メール対策としては、一般的にはメーラーのSpamフィルタ等を活用するのでしょうが、僕が使っているOutlook2016ではその機能を見つけられない(または見つかったとしても非常にしょぼい)ようなので、僕はサーバに入っている«SpamAssassin»というソフトを利用しています。
以下、 SpamAssassin の紹介と、今回自作した«SpamAssassin に迷惑メールを学習させるためのシェルスクリプト»の紹介です。

この記事の目次

SpamAssassin の紹介

そもそも迷惑メールのことをスパムメール(spam mail)と言ったりします。
SpamAssassin とは spam mail を assassin(暗殺)するソフトっていう意味で、要は迷惑メール対策のためのソフトです。
ソフトと言ってもPCやスマホにインストールするわけではなく、お使いのプロバイダやレンタルサーバに組み込まれているソフトです。
僕が利用している«さくらのレンタルサーバ»にはこの SpamAssassin が組み込まれているので、サーバのコントロールパネルから設定することで、無料で利用できます。
意外と多くのプロバイダやレンタルサーバに入っているようです。

最初は無能な暗殺者

しかしこの SpamAssassin 、そのまま設定するだけでは迷惑メールの見地率が非常に悪いのです。
最初は手動で、迷惑メールと通常のメールを学習させる必要があります。
ここから先はプロバイダやサーバによっても異なると思いますが、さくらのレンタルサーバでこの学習をさせるためには、レンタルサーバが用意したウエブメールにログインして1通ずつ操作しないといけないという、とんでもなく面倒な労力を必要とします。
そこで今回作ったのが、その学習操作をなるべく自動化&簡便に行うためのシェルスクリプトです。

スパムメール学習用シェルスクリプトについて

概要&前提条件

  • サーバ状に迷惑メールを集めたメールフォルダを作成しておき、そのフォルダ内のメールを迷惑メールとして学習させることをイとしています。
    また同時に、受信フォルダに残っているメールを«通常メール(SpamAssassin では spam に対して ham と言います)として学習させます»。
  • 学習後の迷惑メールは自動的に削除します(ゴミ箱にも入りません)。
  • サーバ上にあるすべてのメールアカウントを検索し、«spam_recipe»というフォルダがあるメールアカウントに対してのみ、動作します。
  • メールフォルダの形式は Imap で動作します。Pop形式のメールフォルダはサポートしていません。
  • さくらのレンタルサーバ(スタンダードプラン)で動作することを前提としています。

インストール方法

メーラーでメールフォルダを新規作成

PC やスマホでメーラーを開き、お使いのメールアカウントのフォルダの中に«spam_recipe»という名前で新規フォルダを作成します。
※後述のシェルスクリプトを書き換えることで、上記フォルダ名は変更可能です。

シェルスクリプトファイルの作成

以下のソースコードをテキストファイルにコピーし、«spam_learn.sh»という名前で保存します。

※拡張子は必ず .sh にしてください。保存できない場合はいったん拡張子を .txt で保存し、アップロード後に拡張子を .sh に変更することもできます。

上記ファイルのアップロード

保存した spam_learn.sh を FTP ソフト等でサーバにアップロードします。
アップロード先は自由ですが、

というフォルダを作成し、その中に保存することをお勧めします。

上記ファイルに実行権限を付与

FTP ソフトや SSH のターミナルソフトで、上記ファイルに実行権限を付与します。
付与の方法は省略しますが、 705 で問題ありません。

Cron の設定

SSH ターミナルソフトやサーバのコントロールパネルから、 cron の設定を行います。
さくらのレンタルサーバでは、コントロールパネルから cron の設定が可能です。
これにより、上記で保存した

を、自動で定期的に動作させます。
比較的処理が重い処理なので、1日1~3回がいいと覆います。

動作の解説

わかる人がみればしょぼいことをしてるのがまるわかりですが、このシェルスクリプトが何をしているのかを、簡単に解説しておきます。

  • 1行目……このシェルスクリプトを動かすのに必要な«bash»というプログラムの所在地を表しています。お使いのサーバによって多少異なるはずなので、適宜書き換えてください。
  • 4行目……最初にメーラーで作ったフォルダの名前です。デフォルトでは«spam_recipe»としています。特段の事情がない限り、書き換える必要はありません。
  • 6行目……ls コマンドで の中にあるフォルダを洗い出し、 for コマンドで一つずつ変数 var に代入し、以後の操作を繰り返します。
  • 8行目……各メールフォルダにspam_recipeというフォルダがあるかをチェックし、あれば9~11行目の操作を行います。
  • 9~11行目……9行目で迷惑メールの学習を、10行目で spam_recipe フォルダの中身を消去、11行目で通常(ham)メールの学習を行っています。

著作権と注意事項

  • しょぼいプログラムですが、本シェルスクリプトの著作権は作者である私、松村が保持します。
  • 本シェルスクリプトを利用した結果について、作者は一切の保証や責任を負いません。利用についてはあくまで自己責任でお願いします。
  • 不具合等の報告は本記事のコメント欄にお願いします。作者がわかる範囲での対応は試みます。
    特に迷惑メールを削除する方法については、この方法では極めて怪しいのではないかと危惧しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です