FAQ(よくある質問とその回答)
Home

Q

メールを受信したときに、プログラムを自動起動させプログラム中からメールを返信したいのですが実現できる方法がつかめませんでした。
例えば akira@DOMAIN というメールアドレスあてに来たメールに対してプログラムからの自動返信を実現するためには、どういった設定をどこにすればよいのでしょうか?


------------------------------------------------------------------------------------------------------------------------------------------------

A

Webサーバとメールサーバは完全に分離されておりますのでメールサーバにて直接操作することはできませんが、以下の方法によりメールサーバに到着したメールをWebサーバのアカウントに転送し、.forward や Procmail によりプログラムの自動起動や、メールのヘッダフィールドの内容などで振り分けたり、プログラムにより処理をさせることが可能です。
(定型の内容のメールを自動返信することはコントロールパネルから可能です)


  1. コントロールパネルから akira@DOMAIN 宛のメールを Web サーバのアカウントの ftpuser@xxxxx.secureserver.jp に転送設定してください。
    「ftpuser」は、WebサーバのFTP/Shellアカウント名です。「xxxxx.secureserver.jp」は、Webサーバのホスト名称です。お客さまのサーバによって異なりますので Shell上から hostname コマンドにより表示されるホスト名に置き換えてください。
    設定完了後、akira@DOMAIN 宛のメールが Web サーバのアカウントに転送されます。
  2.            ↓
  3. Webサーバのアカウントのホームディレクトリ直下(/home/ftpuser/)にメールをプログラムに渡す設定の「.forward」ファイルを作成してください。
    例えば
    "|exec /home/ftpuser/script.cgi"
    のように記述頂き、パーミッションを 604 に設定します。
    メールが届きますと /home/ftpuser/script.cgi が実行されます。
    /home/ftpuser/script.cgi は標準入力から届いたメールが流れてきますので、
    Perlの場合、
     #!/usr/local/bin/perl
     while (){
      おこないたい処理
     }
    などにより処理することが可能です。ただし、同時にメールが届きますと同時にプロセスが実行されますので、その場合は自前で排他処理が必要です。

    また、Procmail によりサーバが取り込んだメールのヘッダーフィールドの内容によって特定のディレクトリにメールを振り分けることが可能です。Procmail は比較的最近のサーバから導入しております。Procmail が導入されているかのご確認方法は、Shell上から「which procmail」を実行してください。「/usr/local/bin/procmail」が表示されれば導入済みです。

.forward や Procmail により取り込んだメールを cron により一定時間ごとにプログラムを起動して、メールが届いてるか確認することが可能です。(.forward の場合はメールが到着次第処理されますので cron への登録は必要ありません)
Shell上から「crontab -e」にて vi エディタが起動し、編集画面になります。

以下は毎日9時30分に /home/ftpuser/script.cgi を実行します。この場合、script.cgi のパーミッションは 700 に設定してください。(実行権を与えてください)
30 9 * * * /home/ftpuser/script

以下は 1、10、20分に /home/ftpuser/script.cgi を実行します。
1,10,20 * * * /home/ftpuser/script.cgi

週1回や月1回、火曜日の何時何分に実行等も可能です。
Procmail や cron の使用方法はWebサイトなどをご覧くださいませ。

cronにより極端に短い時間(1分毎など。最短でも5分以上にしてください)に CGI を実行されたり、同じ時刻に複数の CGI の実行や一定時間ごとに極端に重い処理や大量のメール送信を行なうようなご利用は、サーバの CPU リソースに極端に負荷がかかりますのでご遠慮ください。



FAQトップへ戻る