さくらサーバでPHPを使って空メール受信とかの設定のメモ | PHP覚書きメモ

さくらサーバでPHPを使って空メール受信とかの設定のメモ

一から初心者が何を設定していけばいいのか順をおって全て書いてくれているサイトが無くてかなり苦労したのでメモです。


ちなみに参考にしたサイト

http://imamuraya.sakura.ne.jp/wordpress/?p=193

http://www.sukechan.net/archives/60/

http://www.seo-maniax.com/high-rank/sakura-pear/

http://www.abe-tatsuya.com/web_prog/php/mail2php.php




手順

1.「.mailfilter」設定


仕組みとして、メールを受信した際、それがトリガーとなって「.mailfilter」ファイルを通して、PHPファイルが起動するといった感じでしょうか。



・まずは「.mailfilter」ファイル作成。

ファイル名「.mailfilter」のファイルを作成。

Windows上では拡張子「.」をファイル名の先頭に持ってこれないので、FTPツールか何かでアップロードした後でリネームする。


中身は以下のように/homeディレクトリからフルパスで、メールを受信した際に起動させるPHPファイルまでのパスを記載


cc "| /home/アカウント名/www/ファイル名.php"


アカウントはサクラサーバのアカウント

ファイル名は実行するPHPファイル名



・「.mailfilter」ファイル配置ディレクトリ

下記のディレクトリにアクセスするのですが、さくらサーバのコントロールパネルからではアクセスできないので、FTPソフトかSSH2でアクセスできるTELNETソフト「Tera Term」などを使用してアクセス。


/home/アカウント名/MailBox/

の中に各メールアカウントのディレクトリがあるので、その中にファイルを配置します。

つまりファイルを配置した場合以下のようなディレクトリに。


/home/アカウント名/MailBox/メールアカウント名/.mailfiter


これで、「.mailfilter」ファイルを配置したメールアカウントにメールを送る度に自動的に「.mailfilter」ファイル内に記載したPHPファイルへメール情報を渡してアクセスする感じになったかと。



・パーミッション設定

「.mailfilter」ファイルのファイル属性を「600」にする。

FTPツールの場合は右クリックで「ファイル属性の変更」とかそれっぽいのが出てくるのでそこで変更が可能かと。




2.「PEAR」のインストール


PHPライブラリーになるのでしょうか。

必須じゃないのかもしれないけど、みなさんPHPでメールを受信する際、これを使っているみたいなので、ほぼ必須なのかも…。



・PEARをダウンロード

http://pear.php.net/go-pear

↑を右クリックして保存


たぶん「go-pear.htm」とか「go-pear.txt」というファイル名で保存されるので、go-pear.php」というファイル名にリネーム。



・「go-pear.php」をアップロード

FTPで外部からアクセスできるディレクトリにアップロード


例)

/home/アカウント名/www/install/go-pear.php



・「go-pear.php」を実行

アップロードしたgo-pear.phpにブラウザからアクセスすると、PEARをインストールする画面が表示されるので、Next>>をクリックして次の設定画面へ。


設定画面で各項目を設定するのだけど、必要な設定項目は「1」と「10」と「11」の設定のみ。


項目1.Installation prefix の設定

PEARのインストール先を設定。

外部からアクセスできないディレクトリーを選択。

基本的には以下のようなディレクトリーに設定。


/home/アカウント名/pear



項目10.Filename of WebFrontendの設定

PEARの管理ページの作成場所となるので外部からアクセスできるディレクトリを指定。

任意のディレクトリーと任意のPHPファイル名で設定。


例)

/home/アカウント名/www/kanri/pear.php


※ここの設定で作成した管理ページへは外部からアクセスすることになるので、後ほど「.htaccess」でディレクトリにパスワードをかけるか、必要なパッケージのインストールなどの設定が完了したあとに管理ページを削除するほうが良いかと。



項目11.php.exe path, optional の設定

サクラサーバの場合下記の設定で。理由は謎。みんなそうしているから。


/usr/local/bin/php



最後にinstallボタンを押してインストールして完了。


インストール後、下部のリンクから設定した管理ページに移動できるかと思うので、管理ページに移動。

出来なければ、直接ブラウザに設定したアドレスを入力して移動。



・PEARの必要なパッケージをインストール

PEARをインストールしただけだと、メールに受信に必要な機能が含まれるパッケージとかがインストールされていないっぽいので、管理ページからインストールする。


管理ページ最下部にあるクイックインストール?とかなんか書いてあるテキストボックスに必要なパッケージ名を入れてinstallボタンを押してインストールすればOK。


今回は

Mail

Mail_Mime


等のパッケージ名をインストールすればOKかと思う。



一応FTPでディレクトリーを確認し

/home/アカウント名/pear/PEAR/

があり、その中に

ファイル「Mail.php」やディレクトリ「Mail」があれば無事インストール出来てるかも。



・「php.ini」の設定

インストールしたPEARのパスをphp.iniに通してあげる必要がある。


サクラサーバの場合、コントロールパネルから

PHP言語に関する設定PHP設定の編集

にあるテキストボックス内に入力することによりphp.iniを編集可能。


もしくはphp.iniを作成して、/home/アカウント名/www/に直接配置しても可。


phip.iniの記載内容はPAERをインストールした先のディレクトリのインクルードパスを設定する。

下記のような感じで、インストールしたディレクトリを記載してあげればOK。


例)

include_path=".:/home/アカウント名/pear/PEAR"


以上でPEARの設定は完了。




3.PHPファイルの設定

作成するPHPファイルのファイル名を、手順1の「.mailfilter」で設定したPHPのファイル名に合わせる。


あとPHPファイルを作成する際、文字コードが「ECU-JP」、改行コードを「LF」にした方が良いらしい。

さらにPHPファイルのパーミッションを「744」に設定した方が良いらしい。

この2点を設定していない場合はうまくいかないかも…。



試しに作ったPHPファイルのソースは以下の感じに。



#!/usr/local/bin/php
<?php


require_once("/home/アカウント名/pear/PEAR/Mail.php");
require_once("/home/アカウント名/pear/PEAR/Mail/mimeDecode.php");


//ヘッダからメールアドレスを抜き取る
function getmail($line){
if (eregi("(.*)\<(.*)\>", $line, $tmp)){
$from = $tmp[2];
}
return strtolower(trim($from));
}


//送信してきたメールアドレスの取得
$stdin = fopen("php://stdin", "r");
$email = "";
while ($line = fgets($stdin)) {
$line = trim($line);
if (!$line || $email){
break;
}


// 送信元メールアドレスの取得
if (eregi("^from:", $line) || eregi("^Return-Path:", $line)){
$email = getmail($line);
}
}


//メール送信処理
//送られてきたメールに、メール本文に送られてきたメールアドレスを記載して返す

$to = $email;
$subject = 'テストメール';
$body = 'あなたのメールアドレスは '.$email;


//EUC-JPから文字化けしないようにJISに文字コード変換
$subject = mb_convert_encoding($subject,"JIS","EUC-JP");
$body = mb_convert_encoding($body,"JIS","EUC-JP");


if(mb_send_mail($to,$subject,$body)){
print('メール送信成功');
}else{
print('メール送信失敗');
}


?>


設定したメールアドレスに空メールを送ると、送信者のメールアドレスを抜き出して、本文に記載して返すという簡単なプログラム。

今まで設定したものがちゃんと動いているか動いていないかの確認程度に。



以上でメモ書き終了。







■追記2010/8/25

最近PEARをインストールしたら、なぜかMailフォルダ内に「mimeDecode.php」が存在しない状況に・・・

その場合は以下のパッケージものをインストールすればOKでした。

「Mail_MimeDecode」