メール受信をトリガーにして任意のプログラムを実行する

やりたいことがある。


1.メール受信(トリガー)
2.メールの本文を取得し、メール本文を変更
3.変更したメールを任意のメールアドレスへ転送


1をトリガーに任意のプログラムを実行
そのプログラム内にて2,3を行う、ということができるのだろうか・・・

メール受信をトリガーにする

まず1についていろいろ調べた。


いろいろ調べてみるとどうやら使用しているサーバーによって
いろいろな方法があるようである。


以下のサイトで3つのサイトについてまとめていた。
「さくら」「XREA」「X Server」である。
floatingdays: レンタルサーバーでメール受信時にプログラム起動する方法


自分の場合は「XServer」なのだが、気になるのは、

直接mailfilterを編集しなければいけない?

という部分である。


いろいろ調べて試してみるとこんな記事を見つけた。

結論:Xserverコントロールパネルのメール振り分けではなく、直接それを管轄する .mailfilterファイル内部を書き換える。

↓.mailfilterファイルは下記の場所
/hoge.com/mail/hoge.com/blog@hoge.com

その一番最後の行に下記の一文を入力。

to "| /usr/bin/php /home/ユーザーID/hoge.com/public_html//////openpne/bin/mail.php"

to "| /usr/bin/php ←"|の後に半角スペース。
phpのパスはサーバーによって、違うので注意。
Xserverの場合、PHP4はこれ、PHP5は/usr/bin/php5になる。
あとは、サイト絶対パスで/bin/mail.phpの位置を指示。
xserver メール振り分け .forward .mailfilter - haiduru


しかし他にも調べているとコントロールパネルからでも可能なようである。

XServer に移行してみてさっそくメール駆動アプリを作ろうとしたのです。
Google先生に頼ってみたりあーだこーだと試行錯誤してみたりしたのですが
結局は「コントロールパネルから設定できた」という結果があまりにアレなので公開します。
[XServer] XServer でメール受信時に phpを起動する | trash-area.com


で、結論的には「コントロールパネル」の「メールフィルターの追加」からでも
直接編集でもどちらでも可能、ということがわかった。
(ただし直接編集は試していない。)


先ほどのサイトに思いっきりその方法が書かれているのであるが、
ここでも一応そのやり方をメモっておこう。

Xserverにてメール受信したら任意のプログラムを実行する方法

コントロールパネル

トップ → メールの振り分け → メールフィルターの追加

メール振り分け設定

メールフィルタの追加 → 任意の条件設定


ここで、「処理方法(宛先)」が重要

| /usr/bin/php /home/ユーザーID/ドメイン/public_html/test/test.php

半角スペースを「/usr」の前と「/home」の前に忘れずに。

もしphpが5の場合は、

| /usr/bin/php5 /home/ユーザーID/ドメイン/public_html/test/test.php


以上で終了


コンパネで登録すると
以下のファイルに記述されていた。


/ドメイン/mail/.filter

if ( /^To: .*foo@hoge\.com.*/:h )
{
  cc "| /usr/bin/php /home/ユーザーID/hoge.com/public_html/test/test.php"
}


余談だがXserverのマニュアルに以下のように書いてあった。

コマンドパス使用例

/home/sample/tensou.php と設定 → /home/sample/tensou.php へメールを渡します。

Xserverマニュアル:メールの振り分けについて

つまり「/usr/bin/php」がいらないのである。


なのでさっそく試してみるが・・・


できなかった・・・。


続き
メール本文を取得して本文を変更する - ちぇ・ゲバ男のメモ


その他メモ:
Xserverマニュアル:Xserverで使用できるプログラム言語