これまでも「レンサバ迷惑メール対策」 や 「迷惑メール対策 後編」 等でさくらインターネットを初め多くのレンタルサーバーのメールシステムで採用されているであろう「maildrop、mailfilter」によるメール振り分けについてご紹介してきましたが、今回はその後の検証も踏まえて一応の完成版という事でご紹介します。
pop3やimap4で使えるメール振り分けの方法としてご興味がありましたらご覧下さい。
ポッドキャストでもご説明をしておりますので、合せてお楽しみ下さい。
※メールシステムは間違えると届かなくなったりします、慎重な作業をお願いします。
作業は全て自己責任でお願いします。
今回は基本的にimap4でメールを利用する場合のご説明になります。
pop3の場合は振り分けたメールはウェブメールで確認する事が出来ます。
1)imap4でこんな感じになります。
実際に私が使用しているメーラー(現在はWindows Live mail 2012)の様子です。
赤枠で囲まれた所がメール振り分け先のフォルダです。
目的により名称は任意に設定する事ができますが、作業性を考えるとアルファベットのフォルダ名が良いでしょう。
振り分けられたメールを見てみましょう。
振り分けの「命令」及び「辞書」によりヒットしたメールはそれぞれのフォルダに自動的に格納されます。
2)設定する場所を確認
さくらインターネットのレンタルサーバーサービスにお馴染み「WinSCP」でログインすると、公開しているデータ以外にも確認する事が出来るデータが色々あります。
その中でしたの写真の通りMailBoxというフォルダがあります。
これが今回作業を行うフォルダです。
フォルダの中はこんな感じになっています。
・・・分からないですよね(゚_゚;) スミマセン、全部伏せ字なので。
本来はメールアカウント(@より前側)と同じ名前のフォルダが並びます。
1つ1つがそれぞれメールアカウントという事になります。
更にその中の一つに入ってみましょう。
人により内容は違ってきますが、「maildir」等を含むいくつかのフォルダとファイルがあります。
上の図では既に今回のメール振り分け機能に欠かせないファイルがいくつも追加されています。
詳細は後程。
更に「maildir」に入ってみましょう。
ここがメールボックス内のフォルダの一覧になります。
伏せ字の部分は私が独自に追加しているフォルダです。特別な機能では無く、メーラーやウェブメール上で追加した普通のフォルダです。
赤枠内が今回使用する振り分けフォルダです。
みなさんのメールフォルダにはまだ赤枠のフォルダがないはずです。
後程作りますので確認が出来たらOKです。
3)振り分け先のフォルダを作る。
さて、具体的な作業に入っていきます。
まずは振り分け先のフォルダを作りましょう。
imap4であればメーラーからも同等の作業ができますが、ここは念のためウェブメーラーから作業を行います。
さくらインターネットのウェブメーラーの画面です。
下の赤枠のフォルダを作ります。
メニュー内の「フォルダ」をクリックします。
「最上位にフォルダを作成」をクリックするとフォルダ名を入力する小窓が表示されます。
そこに任意の名前を入力すればOKです。
ここでは英数字で4つのフォルダを作ります。
※新しいフォルダとメーラー上のフォルダの同期について
私はWindwosLiveMail2012を作っていますが、ウェブメーラー上で新しいフォルダを作ったら、LiveMailで再度フォルダの設定(なんと表現すれば良いのか悩みますが)が必要でした。
メーラーにより違うのかも知れませんが、フォルダは間違いなく出来ていますので試行錯誤してみて下さい。
4)whitelist、blcokaddrの中身を確認する。
次にホワイトリストとブロックリストの中身を確認します。
こちらは私のホワイトリストです。
今回設定するmailfilterのプログラムでは「ホワイトリストに入っているものは、とにかくそのまま受信!」としているので、可能であれば日常メールのやりとりをする人を片っ端から登録しておくと安心です。
登録しなくても、特に問題はありません。
後程、メールフィルタの動作確認などありますので、通常は自分のドメイン、メールアドレスを登録しないでおいて下さい。
※振り分けに反応するキーワードを含む可能性があるが、振り分けたくないメールアドレスが発生したらホワイトリストに登録してください。
こちらはブロックアドレスです。
mailfilterでの振り分けをする前の迷惑メール対策を行っていたのでこんなに登録されていますが、みなさんは基本的に登録する必要はないと思います。
ブロックリストで出来るメールの拒絶は限界があります(アドレスがドンドン変るので)
ここでは、ある程度ホワイトリストの確認が出来ればOKとします。
5)辞書ファイルを作成する。
つづいて、メール振り分けを行う為のキーワードファイルを作ります。
仮に辞書ファイルと呼んでいますが、このキーワードにヒットしたメールに対し、指定した振り分けを行う事になります。
5-1).blockfrom
先程確認した「ホワイトリスト」をコピーしてファイル名を変更しましょう。
A)まずは「.blockfrom」とします。ファイル名の前のピリオドを忘れないで下さい。
B)次に一度ローカル(パソコン)へダウンロードします。ファイルのエンコード設定を変更する為です。
C)ダウンロードしてきたら「Terapad(テラパッド)」等のエディタで開きます。
D)「文字/改行コード指定保存」で文字コードを「UTF-8N」、改行コードを「CR+LF」にして保存します。
E)再度アップロードします。
これで辞書ファイルの準備が整いました。
WinSCPでサーバー上の「.blockfrom」を開いてみましょう。
日本語が入力されていると必ずこういう風に文字化けします。
(英語だけの時は文字化けしていないように見えるかも知れません。)
※編集する前に、必ず赤枠の「エンコード」をクリックし、「UTF-8」に変更して下さい。
ちなみに、エンコードを変更せずに編集するとファイルが破損し開けなくなりますので厳重注意です。
「.blockfrom」はメールの「差出人」に対してマッチングを行う辞書ファイルです。
私が現状使用しているファイルがこちらです。
赤枠で示すとおり行頭に「#」を入力するとコメントして取り扱い出来ます。
1キーワード 1行で記入をしていきますが、正規表現が使用可能です。
赤字で示したとおり、様々なキーワードの組み合わせが使用できます。
一般名詞だけのキーワードは誤判定率があがるので、出来るだけ複数の単語や文章を組み合わせたものにしましょう。
原則としては既に受信済みのメールの件名を見て、そこからキーワードを抽出し、登録して下さい。
5-2).blockword
「.blockword」は「件名」に対してマッチングを行う辞書ファイルです。
ここでは英語のみの登録をしています。
5-1で行った「エンコードの変換」は不要になります。
A)ホワイトリストをコピー
B)名称を「.blockword」に変更
コレで完了です。
正規表現が使用できるのはどの辞書ファイルも一緒です。
色々工夫してみて下さい。
5-3).blockwordutf8
「.blockwordutf8」は「件名」に対してマッチングを行う辞書ファイルです。
「.blockword」との違いは「日本語のマッチングを行っている」という点です。
ファイルの準備方法は5-1と同様です。
エンコードの切替も忘れずに。
辞書ファイルは最初から豊富なキーワードを用意すると失敗の原因にもなるので、少しずつ増やしてみて下さい。
6)振り分け命令ファイルを設定する。
さて、いよいよ振り分けの命令プログラムを導入します。
もう少しですので頑張りましょう!
「.mailfilter」はもともとサーバー側で用意されています。
開いてみると「ホワイトリスト」と「迷惑メール判定」程度の命令文が記入されていると思います。
コーヒーが長い時間掛けてあれこれ研究した結果辿り着いたmailfilterの判定プログラムがこちらです。
公開するかどうか随分悩みましたが皆さんのお役に立てればと思い公開を決意しました。
コピペしてもらって、ご自身の環境にあわせて修正すれば使用できると思います。
mailfilter.txtはこちら
ダウンロードして中身をエディタ等で開いて下さい。
WinSCPのエディタで既存の「.mailfilter」ファイルにコピペしたら、余計なスペースが無いか確認して下さい。
タブ等は見やすいように修正して下さい。
詳しくは画像に記入した通りですが、ポイントは青枠。
青枠内の処理は「ホワイトリストにアドレスがなければ実行するプログラム」になっています。
その為、ホワイトリストにアドレスがあれば、全て無視して受信されます。
7)テスト用のダミーメールを作成する。
さぁ、これで無事に設定が出来た!はずです(笑)
maildrop、mailfilterの振り分けは何かが間違っていると処理が中断し、ずーーーとメールが受信されないままたまり続けます。
非常にまずい状態になりますので、十分な確認が必要になります。
そこで行うのが動作確認です。
mailfilter等があるフォルダ内に、ダミーメールを用意します。
これが私が使用しているダミーメールの一つです。
名称は「spam.eml」
文字エンコードは「shift-jis」
改行コードは「CR+LF」です。
このファイルはメーラーを使用して作成します。
受信したメールを何でも良いので一つ選んで「エクスポート」や「保存」で「eml形式」のファイルにします。
「Terapad(テラパッド)」で開き、一部内容を修正していきます。
メールには1通1通個別のIDが振り当てられていますが、そういう特定できるようなものは全て削除しても大丈夫です。
あるいは「0000coffee0000」見たいにダミーのIDを設定しても良いかも知れません。
迷惑メールの判定には影響しないので問題ないです。
逆に、「From:」や「Subject:」そしてメール本文(文章の部分)が大事になりますのでそこは残しておきましょう。
メールアドレスは念のため、全て自分のアドレスに変更しておいて下さい。
用意するダミーファイルは2つ。
一つは「全ての処理を通過する、マッチングするキーワードを持たないファイル」
もう一つは「FromやSubjectにマッチングするキーワードを持つファイル」です。
キーワードはFromとSubjectの両方で実行するので、From用のダミーファイルとSubject用のダミーファイルを別々に用意しても良いかも知れません。
8)テストをする。
テストはWinSCPで行います。
赤枠のボタンを押してコンソール画面を開きます。
上のコマンド入力欄に
「 maildrop -V 9 .mailfilter < spam.eml 」
と入力します。
これが「メールドロップでmailfilterを使用してspam.emlを処理してね!」という命令文です。
状況に応じてspam.emlの名前を変えて実行します。
上の写真は全てのマッチングが終わったリザルトです。
赤枠の中に(38)とか書いてますが、これが私のプログラムが最後まで走りきった状態です。
命令文を変えるとこの数字も変ります。
最後に「maildrop unable to open mailbox」と表示されます。
これは「メールドロップはメールボックスを開けなかった(配達できなかったよ!)」という意味です。
このプログラムでは全てのマッチングを通過したメールを届ける先を指定していません。
なので、エラーとして表示されます(配達はされるので問題ありません)
再登場したこの写真はキーワードにマッチした状態で終了した場合です。
「Delivery complete」と表示されているのは「マッチングするキーワードが存在した」為に「指定されたフォルダに振り分けた」という事です。
上の二回を確認出来たら実際にメールを送って実験してみましょう。
自分のアドレスから自分のアドレスに宛てて、キーワードを含む/含まないファイルを送ってみると正常に動作しているのが確認出来ると思います。
長い間お疲れ様です、これで作業は完了です。
9)コーヒー版メール振り分けの考え方。
私の制御プログラムは基本的に「全てのメールは一度受信する」という方針で作られています。
100%自信を持って不要な場合は受信もせずに拒絶したりも出来るのですが、万が一という事もあるので。
後はご自身の希望によってプログラムを修正してご活用頂ければと思います。
また、辞書ファイルは徐々に鍛えていくものなので、気長に付き合って下さい。
最後に繰り返しになりますが、誤動作しないように十分に注意しながら作業を進めて下さい。
もし、「よりよい制御プログラムが出来た」等と言う場合はコヒ蔵にも教えて頂けると嬉しいです。
不明な点は私が答えられる範囲内でしたらお答えしますのでコメント欄やメールフォームからお問い合わせ下さい。
0コメント