MENU

お名前.comのVPSで、メールの内容をプログラムに転送。

はい。備忘録です。

以下、自己責任でお願いね。

まずは、VPSのコントロールパネルから、目的のメールアドレスを登録。
(これは必要かどうか不明)

/etc/postfix/virtual_alias_maps に次の1行を追加

regist@example.com        regist

(メールアドレスを変換の意)

この設定を、

[root@example ~]# postmap /etc/postfix/virtual_alias_maps

で、virtual_alias_maps.db を更新。

で、変換後のregist で受信したメールの内容をプログラムに渡す。
/etc/aliases に次の1行を追加

regist: "|/usr/bin/php /var/www/vhosts/example.com/bin/catch-mail.php"

この記述の後に

[root@example ~]# newaliases

を忘れずに。

最後に

[root@example ~]# /etc/rc.d/init.d/postfix restart

(postfixの再起動)で完了。


【追記】

もっとシンプルに、virtual_alias_maps 内にプログラムへのパイプを書けそうなんだけど、メールアドレスしか記述できないらしい。ここで半日躓いた。
こちらのチュートリアルがなければ諦めてました。常識なんすかね??)

検証用のcatch-mail.php には、以下のようなプログラムで大丈夫でしょう(手抜きですが)。

#!/usr/bin/php
<?php
$in = fopen('php://stdin', 'r');
$out = fopen('/var/www/vhosts/example.com/bin/output.txt', 'w');
while ($line = fgets($in))
{ 
	fwrite($out, $line);
}

なお、catch-mail.php は+x、output.txt は+w のパーミッション変更を忘れずに!