2016/07/07

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

その1(pearインストール、phpと.mailfilterの動作確認)の続きです

その1の動作チェックで保存した、実行型ファイルを添付したメールのソースファイル(下記では exemail.eml)を利用して Webから基本的なエラーやPEARの利用可を確認しておきます

exemail.php を下記のように書き換えて、Webから開いてみます
<?php
 // エラー表示
 ini_set('display_errors', 1);

 // タイムゾーンとPEARのパス
 date_default_timezone_set('Asia/Tokyo');
 set_include_path("/PEARスクリプトの場所/PEAR");

 // PEAR
 require_once("Mail.php");
 require_once("Mail/mimeDecode.php");

 // メール取得
 // $data = file_get_contents("php://stdin");
 // file_put_contents("/スクリプトの場所/exemail.eml", $data);
 $data = file_get_contents("/スクリプトの場所/exemail.eml"); // メール着信の代わり

 // メール読み込み
 $params['input'] = $data;
 $params['include_bodies'] = true;
 $params['decode_bodies']  = true;
 $params['decode_headers'] = true;
 $params['crlf'] = "\r\n"; 

 $maildata = Mail_mimeDecode::decode($params);

 echo "ok";
 exit(1);
?>

上記の解説

// エラー表示
エラーの可視化

// タイムゾーンとPEARのパス
php.ini の設定と重複していますが .mailfilter からの呼び出しには php.iniの情報が使われないようすなので、個別に記載

// PEAR
ライブラリの読み込み

// メール取得
stdinからメールを読み込む代わりに、その1で保存しておいたファイルを取り込みます

// メール読み込み
PEARへメールを読み込ませます
include_bodies, decode_bodies, decode_headers をtrueにします
※デコード類trueは、非ascii 添付ファイル名の解析に必要

作成した exemail.php を Webから開いて、エラーなどを潰していきます
エラーや警告が無く、ok と表示されれば、順調です

ここまでくれば、メールの添付をチェックして、exitで0(実行添付なし)か1(実行添付あり)を返すだけ

その3(完結)へつづく

0 件のコメント: