PR

空メールでプログラム起動、さくらインターネット

cronで起動できればよいのだが、なかなか制限も多くてできない。と思って調べていたところ、さくらインターネットのメールフィルタを利用すると実現できるらしい。

で、調べてみて、使ってみた。

こんなに便利なものがあったんだ!どうして教えてくれなかったのか!どうして知らなかったのか!あ゛ー!同じようなことをするために一生懸命ほかの手段で頑張ってしまった時間を返してほしい(T_T)

スポンサードリンク

まず、契約

お試し期間もあったのでとりあえずライトを契約してみる。

メールアドレスを作る

契約したついでにその画面からメールアドレスを作っておこう。ここでは例としてcronとした。内部でトリガとして使うだけなのでドメインは最初からくっついてたもののまま。

FTP接続(動作テストプログラムの設定)

/home/MailBox/cron/.mailfilter [600]

to "| ../../prog/t_mail.pl [email protected]"

無かったので作った。これはメールを受け取った時に動作するプログラム、その結果をどのアドレスに報告するか、を記載する。

以下の例だと、

  1. メールが届いた!
  2. t_mail.plを実行する(←メールが届いたときにしたいナニか、これがしたい)
  3. [email protected](ARVG[0])にメールする
    (メールが届いて処理がされているかのテストプログラムなので、メールしてる)
  4. toなのでメールは残らない(ccだと残る)

というような感じ。

/home/***/prog/t_mail.pl [700]

#!/usr/bin/perl
$sendmail = '/usr/sbin/sendmail';
open(MAIL, "| $sendmail -t") or $err = 1;
if ($err == 0) {
 $mailbuff = '';
 $mailbuff .= "To: $ARGV[0]\n";
 $mailbuff .= 'From: [email protected]'."\n";
 $mailbuff .= 'Subject: New Mail Arrived.'."\n";
 $mailbuff .= "\n";
 $mailbuff .= 'New Mail Arrived.'."\n";
 $mailbuff .= "\n\n.\n";
 print MAIL $mailbuff;
 close(MAIL);
}

これはたんにARGV[0]のメールアドレスにメールするだけ。なので、逆にメールを受信したことで起動したプログラムが動作したというテストができる。

参考文献

oldId.20090602052138384