ホーム   »  スポンサー広告  »     »  Unix/Linux  »  メール受信でプログラムを起動

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メール受信でプログラムを起動

Unix では ~/.forward/etc/aliases を使用して、メールの受信をトリガーにプログラムを起動することが出来る。

Unix の .forward ファイルは受信したメールを別のアドレスに転送するために使われることが多いのだが、パイプを使用してメールの内容をプログラムに渡すこともできる。記述方法は超簡単、| の後に実行権限のあるファイルを指定するだけ。もちろんシェルスクリプトでも C で作ったバイナリでもかまわない。

| myprogram 

.forward は個人管理のファイルなので、自分が受信したメールを加工処理して別アドレスに転送するような場合によく使用される。例えば vacation を使えば不在通知を自動応答する事も出来る。

一方、/etc/aliases はメールボックスのエイリアスを記述するためのファイルだ。こちらのファイルでも同様にパイプを使用して受信メールをプログラムに渡すことが出来る。

support: |/usr/company/replyandstore.sh 

これを利用して、受信と同時に機械的な応答メールを返し、サポート依頼データベースに保管するといったような使い方が出来る。

.forward, aliases どちらのファイルでも、起動されたプログラムは標準入力 (C の stdin, C++cin, Java の System.in) からメールの内容を読み出すことが出来る。まぁ、後は焼くなり煮るなり、至って普通のパイプ処理である。

こんなことが自由に出来てた古きよき時代もあった…

◆ smrsh を突破する

最近はセキュリティが厳しくなって sendmail が好き勝手にプログラムを起動できなくなっている。.forwardaliases にパイプを記述しただけでは以下のようなエラーメールが返ってくるだろう。これはプロセスを起動するときに sh よりもセキュリティ制限の厳しい smrsh が使われているためだ。

    ----- The following addresses had permanent fatal errors -----
|/usr/company/replyandstore.sh
    (reason: Service unavailable)
    (expanded from: support@company.co.jp)
    ----- Transcript of session follows -----
smrsh: "replyandstore.sh" not available for sendmail programs (stat failed)
554 5.0.0 Service unavailable

smrsh は 「管理者が許可したプログラムしか実行させない」 「特定のコマンドしか許可しない」 という制限の sendmail パイプ起動専用シェルだ。特定のディレクトリに置かれた実行ファイルしかパイプとして実行できないようになっている。

このディレクトリは /usr/libexec/sm.bin/etc/smrsh など、smrsh のコンパイル時に決まっている (どうしても分からないならコマンドラインから strings `which smrsh` とすればどこかに出てるはず…)。通常はこのディレクトリから実行対象のファイルへシンボリックリンクを張る。

root@sapphire$ cd /etc/smrsh
root@sapphire$ ln -s /usr/company/replyandstore.sh replyandstore.sh 

これで .forwardaliases ファイルから replyandstore.sh をパイプで呼び出すことが出来るようになる。なお、絶対パス指定の上位ディレクトリは無視されるようになるので、それらのファイルの中では 「|replyandstore.sh」 とだけ記述してやればよい。

実行可能なコマンドは smrsh のマニュアルを参照。パイプやリダイレクト、改行の記述なども禁止されており、何気に厳しい内容だ。といってもこれは .forward, aliases ファイル内での話なので、上記の方法でスクリプトを 1 段かましてやれば回避できる。

もっと簡単かつ乱暴な方法は、本物の smrsh を削除してシンボリックリンクで sh に挿げ替えてやることだ (sendmail.cf から抜くほうがよりスマート)。もちろんせっかくのセキュリティ制限が全て無効になるので用途と状況を考えてというのは言うまでも無いが。

コメント
トラックバック
トラックバック URL
コメントの投稿
管理者にだけ表示を許可する
Profile
Takami Torao
Takami Torao
C/C++ 使いだった 1996年、運命の Java と出会い現在に至る。のらアーキテクト。
Yah, this is image so I don't wanna eat spam, sorry!
Search

Google
MOYO Laboratory
Web

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。