PHPで自動返信メールを実装する(qmail&virturlhost使用時) その1

PHPで自動返信メールを実装する(qmail&virturlhost使用時) その1

Q1, qmailとは?
A1, sendmailやpostfixと同じく、MTA(Message Transfer Agent、いわゆるメールサーバ)です。
現在では開発終了している。既存システムではまだ利用されており、機能追加する時などには、まだ必要な知識です。

Q2, 何をするの?
A2, phpを使って、メールの自動返信がしたい。

// 通常は以下の通り。
送信元メールサーバからメール

自分のqmailに届く

/home/vpopmail/domains/ヴァーチャルドメイン名/ユーザ名/Maildir/newに、受信したメールファイルを生成

ユーザは自分のパソコンから、メーラを使って受信する

// やりたい事
送信元メールサーバからメール

自分のqmailに届く

PHPファイルがキックされる

PHPにより自動返信メール送信

Q3, どうやって実装するの?
A3, 参考URL: http://teclog.hattara.info/?p=227

メール受信時にPHPを実行するだけなら、以下の設定フィアルを変更するだけ!
/home/vpopmail/domains/ヴァーチャルドメイン名/.qmail-defaultの記述を変更
/home/vpopmail/domains/ヴァーチャルドメイン名/ユーザ名/.qmail-defaultにすれば、そのユーザにメール送信した時だけ、返信PHPがキックされる。
旧) | /home/vpopmail/bin/vdelivermail ” bounce-no-mailbox
新) | /usr/bin/php /tmp/test.php

ただし、メールの内容をPHPで読み込むには、以下のPEAR(PHPの標準ライブラリ)が必要!

PEARのインストールその1
ここでトラブル発生!pearのインストール(正確には展開)が失敗する!

PEARのインストールその2
どうやら、Archive_Tarのバージョンが古いらしい。
参考URL:http://qiita.com/muramount/items/2071d005eb1155a08326

PEARのインストールその3
tmpフォルダに展開に失敗したファイルがあるので、手動で展開して上書きする!

PEARのインストールその4
ようやく必要なライブラリをインストールできた…。

Q4, 結局、何をどうするんだっけ?
A4, 本題の「特定のヴァーチャルドメインにメールが来たら、特定のPHPを実行する」には、

1, /home/vpopmail/domains/ヴァーチャルドメイン名/.qmail-defaultというファイルを修正(なかったら生成)
旧) | /home/vpopmail/bin/vdelivermail ” bounce-no-mailbox
新) | /usr/bin/php /tmp/test.php

2, メールを受信したら、意味のないファイルを作成するPHPファイルを書いてみる
/tmp/test.php

3, qmailadminで作ったアカウントに対して、普通にメールしてみる

4, /tmp/text.txtが生成されているか確認する。ここまでくればPHPプログラミングの準備はOK!


Q4, 受信したメールの内容を取得するPHPの記述は?

A4, 実は標準入力で取得できる!ただし生データのままなので使いづらい!

受信メールの生データが格納されたファイル(/tmp/test.txt)

Received: (qmail 25611 invoked by uid 97); 26 Jul 2016 10:23:10 +0900
Received: from unknown (HELO mfg01.sendmail.ne.jp) (218.251.116.121)
by 0 with SMTP; 26 Jul 2016 10:23:10 +0900
Received: from mail.test.co.jp (mail.test.co.jp [121.83.205.115])
by mfg01.sendmail.ne.jp (8.14.7/8.14.7) with ESMTP id u6Q1N8Ep027409
for ; Tue, 26 Jul 2016 10:23:08 +0900
Received: from [192.168.10.114] (221x243x14x226.ap221.ftth.ucom.ne.jp [221.243.14.226])
by mail.test.co.jp (Postfix) with ESMTPSA id DAC602B204A7
for ; Tue, 26 Jul 2016 10:23:07 +0900 (JST)
To: test1@sample.com
From: =?UTF-8?B?6Yi05pyo44CA5q2m5L+h?=
Subject: aaa
Message-ID: <1f3c2483-cc0e-b1ba-8deb-50a6d51f2080@test.co.jp>
Date: Tue, 26 Jul 2016 10:23:09 +0900
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101
Thunderbird/45.2.0
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp; format=flowed; delsp=yes
Content-Transfer-Encoding: 7bit

Q5, もっと使いやすい感じには出来ないの?
A5, さっきインストールが大変だったPEARパッケージを使えば、簡単に出来ます。

長くなってきたので、その2へ続く