さくらのレンタルサーバーで、実行ファイル添付のメールを削除(その1)

さくらのレンタルサーバーで、ウィルスチェックを有効にしても、実行型ファイル、特にzipでくるんだメールが次々と入ってくる。最近は javaの脆弱性を突いた .js ファイルも大量に入ってくる。
Gmailみたいに、実行型ファイルはNGなフィルタがそのうち提供されるかもしれないが、待ってられない

ということで、実行型ファイルが添付されたメールを振り落とす計画

ざっくりした構成は maildrop の .mailfilter から 実行型ファイルの添付を判断する phpスクリプトを呼び出して、その結果(リターンコード)からゴミ箱行きとする。です
spamフィルタのように、ヘッダ記載を追加する方法も、基本的な流れは同じです→こちらの記事で動作の違いを確認してます

まずは、下準備から

PEARの導入
php からメールをバラす必要があるので 面倒ですがお決まりな PEARライブラリを導入します
(一度入れておけば、メール関連の楽しみが増えるのでここはガマン)
基本的な導入方法は、こちらにとても詳しく記載されています

  1. go-pear.php を置いて、Webから開く→自分でダウンロードしてくる
  2. さくらのコンパネから php.ini へパスなどを追記(timezoneもいれておくとよい)
  3. go-pear.php から追加パッケージをインストール

今回は、Mail/mimeDecode.php を使うので Mail_Mime と Mail_mimeDecode のパッケージを追加でインストールしておきます


.mailfilter と phpの動きを確認
メール着信時の動作ということで、デリケートな作業になるため、.mailfilter と php の連携を予め確認しておきます
まずは、下記のような exemail.php を作成して適当な場所へ置きます
<?php
 // ini_set('display_errors', 1);

 $data = file_get_contents("php://stdin");
 file_put_contents("/スクリプトの場所/exemail.eml", $data); // メールソースをファイルに保存

 exit(1);
?>

次に さくらの MailBox/アカウント ディレクトリにある .mailfilter を編集します
.mailfilter が存在しない場合は、そのメールの受信拒否リスト等を登録すると作成されます

.mailfilter へ 下記を追加します
`/usr/local/bin/php /スクリプトの場所/exemail.php`
if ( $RETURNCODE == 1 )
{
 to "maildir/.Trash/"
}

先ほどの exemail.php を呼び出して、リターンコードが 1 の場合、ゴミ箱行きという意味です
.mailfilter は、改行コードがLF、スクリプトを囲むコーテーションが &H60 であることに注意!
(改行コードや文字コードの判別が可能なエディタを利用するとよいです - わたしは sakuraエディタ)

上記の設置後、メールを着信させてみて、exemail.php の場所に exemail.eml が作成され、メールがゴミ箱行きになっていれば、つかみはOKです

exemail.eml を適当な名前に変更して、実行ファイルや実行ファイル入りzipを添付したメールを何通か送って、メールのソースファイルを作成しておきましょう、後々のテストで利用します。

【追記】
.mailfilter は、Webコントロールパネルからホワイトリストやブラックリストを追加すると上記スクリプト記述部分に余分なダブルコーテーションが入ったりしますので、追加後は必ず修正しましょう


その2へつづく

コメント