2010年3月20日土曜日

Postfixでメール受信時に PHP等のプログラムを実行する方法

空メールを受け取った時の自動メール返信などに。


  1. Postfixの設定ファイル(/etc/postfix/main.cf)にvirtualファイルのパスを書く(hogeのところは任意の名前)

    virtual_alias_maps = pcre:/etc/postfix/virtual.hoge
  2. 上記で書いたパス(/etc/postfix/virtual.hoge)にテキストファイルを作成し、正規表現等で振り分けを設定する
    左側の条件にマッチした場合のみ、右側のaliasに渡される(詳細はpostfix virtualで調べれば色々出てくる)

    /^[0-9]+@/ hoge-request
  3. /etc/aliasesに上記で書いたaliasを追加
    左側にalias名、右側にクォーテーションで括って実行するファイル(php)とそれに渡すパラメータを書く
    この場合、/var/php/hoge.phpが実行される

    hoge-request: "|/usr/bin/php /var/php/hoge.php"
  4. Postfixを再起動

    newaliases
    /usr/sbin/postfix restart
  5. PHP内では標準入力からメールの生データを受け取れる
    PEAR::Mail_mimeDecodeを使うと便利だと思う

    $raw_mail = file_get_contents("php://stdin");


参考:SEメモ 受信したメールをPHPにパイプさせる方法

0 件のコメント:

ブログ アーカイブ

tags