- PR -

受信したメールを、スクリプトの処理を通したい

1
投稿者投稿内容
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2006-12-19 23:24
現在、sendmailがインストールされているサーバ上で受け取ったメールを、
スクリプトを経由させて送信や記録をしたいと考えています。

NETで調べた所、/etc/aliasesに下記を記載して、スクリプトが動作する所までは出来ました。
test: "| /test/test.sh"

/test/test.shの中身
------------------------
#!/bin/sh -

Directory=`dirname $0`
cd $Directory

cat "TEST" > $Directory/test.txt

exit 0
------------------------

test@example.com にメールが送られたら、/test/test.txtに「TEST」と書き込まれる内容です。
トリガーとしての動作は、確認が取れました。

しかし、このスクリプト上で、受け取ったメール本文を取得するやり方が解りませんでした。

スクリプト上でメール本文を取得する為の方法、または参考サイトを教えて頂けないでしょうか。
_________________
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2006-12-19 23:59
それはあまりsendmailと関係ないですけど…

エイリアスに |(パイプ)を指定しているように、
メール本文は標準入力として渡されています。

#!/bin/bash

Directory=`dirname $0`
cd $Directory

cat > $Directory/test.txt

exit 0

と、やってみるのはいかがでしょうか?
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2006-12-20 13:10
投稿日時: 2006-12-19 23:24
--------------------------------------------------------------------------------
レス有難う御座います。

> それはあまりsendmailと関係ないですけど…
そうですね。どちらかと言えば、シェルスクリプトの話かもしれません・・・。

> cat > $Directory/test.txt
これを試してみましたが、ファイルが生成出来ていませんでした。

又、
echo > $Directory/test.txt
cat $1 > $Directory/test.txt

等も試してみたのですが、やはりファイルが生成されていませんでした。

根本的に、取得方法が違うのでしょうか・・・?
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-12-20 14:34
こんにちは

/var/log/maillog にはどんな出力がなされていますか?

ログには答えに近いヒントが出力されていることが多いですよ!
Gさん
会議室デビュー日: 2006/12/14
投稿数: 12
投稿日時: 2006-12-20 16:46
シェルスクリプトの走るディレクトリのパーミッションあたりは?

試しに、スクリプト自体とその親ディレクトリのパーミッションを
777に設定して試してみてはいかがでしょうか?
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2006-12-20 19:32
レス有難う御座います。

ログやパーミッション等をヒントにして、
スクリプトを動かす事に成功しました。

まず、シェルスクリプトからPerlスクリプトにシフトしました。
その内容は、下記の通りです。
------------------------------
#!/usr/bin/perl

@str = <STDIN>;

open(DT,"> /tmp/test.txt");
print DT "@str";
close(DT);
------------------------------

このファイルを /etc/smrsh/test.pl に保存し、
パーミッションを755にしました。

/etc/aliases のファイルの書き方を、下記内容に変更しました。
------------------------------
test: "| test.pl"
------------------------------

この状態でメールを送信すれば、/tmp/test.txt に保存出来る事を
確認する事が出来ました。

パーミッション周りを調べていくウチに、
/etc/smrsh/ の存在を知る事が出来ました。


これで色々と弄れそうです。
有難う御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)