自宅サーバの道しるべ
▼ホーム
ホームへ戻る
▼基本設定
ネットワーク構成
Fedoracore3の設定
コンパイラの導入
ポート設定の概要
ポート設定(ルータ)
ポート設定
(ファイアウォール)
▼新サーバPC
新サーバPCのスペック
ネットワークドライバの
インストール
グラフィックドライバの
インストール
▼ダイナミックDNS
ダイナミックDNSの概要
DynDNSの設定
ddclientの設定
▼メールサーバ
メールサーバの概要と準備
Postfixの構築
Qpopperの構築
不正メール中継テスト
空メール(自動返信メール)
スパムメール対策(Postfix)
バーチャルドメイン設定
(Postfix)
▼Webサーバ
Webサーバの概要と準備
Apacheの構築
PHPの構築
バーチャルホストの設定
HTTPリダイレクトの設定
▼データベース
MySQLの構築
PostgreSQLの構築
▼FTPサーバ
FTPサーバの概要と準備
vsftpdの構築
▼共有サーバ
Sambaの概要と準備
Samba構築(ファイル共有)
cupsの概要と準備
cupsの構築(プリンタ共有)
プリンタ設定(クライアント)
▼資料
HTTPステータスコード
▼リンク
参考書籍一覧
参考書籍のレビュー
リンク
関連サイト
 ■ホーム>空メール(自動返信メール)
■空メール処理(Postfix+PHP)
Webサイトでユーザー情報の一部としてメールアドレスを正確に取得したい場合、
一般的に使用される方法が空メールによる登録です。

ここではPostfixとPHPによる連携を使い、空メール機能(登録)を実装します。
登録したメールアドレスを削除したい場合は、登録と同様に削除用の空メール機能を実装して下さい。

PostfixおよびPHPのインストールに関しては、
PHPの構築
Postfixの構築
上記のページを参照して下さい。
 
■処理の流れ
受信したメールの送信元に対して、登録結果メールを自動的に返信します。
具体的な流れは以下のようになります。

1.任意のメールアドレスから、登録メールアドレス宛(regist@my-server.homelinux.com)にメールを送信する。

2.登録メールアドレス宛のメールをPHPのコマンドライン(/home/regist/regist.php)に渡す。

3."regist.php"から空メールの送信元へメールを返信する。

この処理を実装する手順は以下の通りです。
 

Step1.PEAR(PHPライブラリ)の準備
PHPでメール内容を解析(差出アドレスの取得等)を行うには、PEARを使用するのが一番簡単です。

■PEARとは
PEARは”PHP Extension and Application Repository”の略でPHPの拡張ライブラリのことです。

■PEARのインストール
PEARパッケージモジュール(php-pear)はyumを使ってPHPをインストールすると、
PHPの関連パッケージとして同時にインストールされます。
しかしインストールされるのは、あくまで基本的なライブラリのみとなります。
基本的なライブラリの中にはメール解析ライブラリは含まれていません。
そこで、まずはPEARのメール解析ライブラリのインストールを行います。
終端(ターミナル)を開きます。
# pear install Mail_Mime

Notice: Undefined index: st in RPC.php on line 292
downloading Mail_Mime-1.3.1.tgz ...
Starting to download Mail_Mime-1.3.1.tgz (16,481 bytes)
......done: 16,481 bytes
install ok: Mail_Mime 1.3.1

# pear list
Installed packages:
===============
Package       Version  State
Archive_Tar   1.1        stable
     :                :             :
     :                :             :
Mail_Mime     1.3.1      stable
     :                :             :
     :                :             :
XML_RPC      1.1.0      stable
#
 
 
このコマンドにより、
メール解析ライブラリ(Mail_Mime)が
インストールされます。


このメッセージが表示されると、
インストールは完了です。

インストール済み確認コマンドです。
このコマンドを実行すると、
インストール済みのPEARライブラリ
一覧が表示されます。



一覧の中に”Mail_Mime”があることを
確認して下さい。
インストールが完了すると、/usr/share/pear/Mail/にmime関連のPHPファイルが作成されます。
今回使用するのはその中の”mimeDecode.php”というファイルです。

Step2.エイリアスの設定(Postfix)
Postfixのalias(エイリアス)を使い、メールアドレス"regist@my-server.homelinux.com"宛のメールを
PHPに引き渡すように設定します。
※PHPの処理用ファイルはどこでも構いません。
 今回は”/home/www/emptymail/regist.php”とします。

具体的には、Postfixの構築 Step3.メール・エイリアスの設定と同様に
/etc/aliasesの末尾に次のような設定を追加します。
/etc/aliases
regist: "|/usr/bin/php /home/www/emptymail/regist.php"
aliasesファイルを編集後、保存します。
その後エイリアス設定を有効にする為、次のコマンドを終端(ターミナル)から実行します。
終端(ターミナル)を開きます。
# postalias /etc/aliases

#
 
エイリアスを再構築します。
※このコマンドを実行しても、
 実行後のステータスは一切表示されません。
 (コマンド待ち状態になります。)

Step3.メール返信スクリプトの作成(PHP)
Step.2でエイリアスに記述したPHPファイルを設置します。
PHPの自動返信プログラムはShift-JIS形式で下記のように記述します。
※プログラム左側の番号は解説用の番号です。
 
/home/www/emptymail/regist.php
 1.


 2.


 3.
 4.
 5.
 6.


 7
 8.
 9.
10.
11.
12.





13.


14.
15.
16.

17.

18.
19.
20.
21.
<?php

//PEARのライブラリ読み込み
require_once("Mail/mimeDecode.php");

//メールソースを標準入力から読み込み
$source = file_get_contents("php://stdin");
if(!$source) {
    exit();    // 読み込み失敗
}

//メール解析
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), mb_internal_encoding(), "auto");

//----------------------------------------//
// 必要な処理はここで行って下さい
//----------------------------------------//


//メール返信
$to = $from;
$title = "空メールの返信(例)";
$body = "登録が完了しました。\n(実際は何も登録していません。)\n※このメールは配信専用です。\n返信されても対応は出来ませんので、ご了承下さい。";
$from = "From: support@my-server.homelinux.com";

mb_internal_encoding("SJIS");
mb_language("japanese");
mb_send_mail($to, $title, $body, $from);
?>
■PHP自動返信プログラムの解説

1.PHPプログラムの開始を宣言します。

2.PEARライブラリを読み込みます。

3〜6.
 メール内容を読み込みます。
 読み込みに失敗した場合は、処理を終了します。

メール解析処理(7〜12)
7〜9.
 メール解析して取得するパラメータ項目を設定します。(true:取得する false:取得しない)
 'decode_headers'のみtrueでよいのですが、念の為すべてtrueとしました。

10.メール解析クラスを生成します。

11.メール解析クラスに7〜9で設定したパラメータをもとに、
  項目毎に分解されたオブジェクト(構造体)を

12.オブジェクト(構造体)から送信元メールアドレスを取得します。

13.任意の処理を追加する場合はこの位置に追加して下さい。
 ※取得したメールアドレスをデータベースに登録またはファイルに保存する等

メール返信処理(14〜20)
14.メールを返信する為、送信元メールアドレスを送信先メールアドレスに代入します。

15.返信メールのタイトル(Subject)を設定します。

16.返信メールのメール本文を設定します。
  改行が必要な箇所には'\n'を挟みます。

17.返信メールの送信元メールアドレスを設定します。

18〜19.
 メールの文字エンコード(Shift-JIS)と言語(日本語)を指定します。

20.14〜19で設定した内容のメールを送信します。

21.PHPプログラムの終了を宣言します。

Step4.動作確認
動作確認は実際にメールを送信して、返信されることを確認します。
当サイトの場合、メール送信アドレスをregist@my-server.homelinux.comとしてメールを送れば、
返却メールが自動返信されます。
 

参考書籍
()カッコ内は現在発売中の新版に関する記述です。
※価格はすべて税込みの価格です。
ケータイサイト実践運用ガイドブック 毎日コミュニケーションズ ¥2,730
この本に対する当サイトのレビューを見る



ホームへ戻る

ページトップへ