• 締切済み

自動メール返信システムの作成

ユーザAが、メールをあるメールアドレス123@456.com(このアドレスはサーバ管理者のアドレスで固定です)に送信すると、そのメールがそのままユーザAに返信されてくるというシステムを作りたいのですが、何か良いアイディアがありましたら、教えて頂けると幸いです。 また、このシステムは常駐プログラム(fork, Perl)を用いて作成します。サーバからSMTPを用いて任意の送信先へメールを送信するプログラムはSocketモジュールを用いて作成、実行済みです。常駐プログラムも簡単ではありますが、forkを用いて実際に実行して確認しました。しかし、サーバへ届いたメールをそのままそのユーザへ返信するというプログラムが思いつきません。違うモジュールやプロトコルが必要になりますか? 長文になりましたが、少しでも良いので、何かアイディアがありましたら、ご教授お願いします。

みんなの回答

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

>何か良いアイディアがありましたら、 シェルスクリプトやPerlの知識があれば簡単です。 返信用シェルを作成して、.forward ファイルに記述すればいいです。 /home/123/.forwardファイル \123 "|/usr/local/bin/autoreply.sh" たとえば.forwardで上のように2行記述すれば、123宛に送られたメールは 123に届くと同時に、/usr/local/bin/autoreply.shスクリプトに渡されます。 autoreply.shの中で、標準出力からFROMを取り出して、お礼のメールを組み立てて sendmail等SMTPで返信するようなスクリプトを作成すればいいです。 返信用スクリプトのサンプルはネット検索すれば見つかります。

mintea86
質問者

お礼

素早い回答ありがとうございました。

  • moritan2
  • ベストアンサー率25% (168/670)
回答No.3

ご質問の処理をするには、普通は /etc/aliases を使うのが一番簡単だと思いますが、なにか常駐プログラムを使用しなければならない理由があるのでしょうか? /etc/aliases を使えば特定のあて先のメールが届いたら、メールを標準入力として指定のプログラムを起動できますけど

mintea86
質問者

お礼

素早い回答ありがとうございました。

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.2

メールシステムの「受信時の処理」に組込むのが常套手段だと思います。このやり方はOSやシステムによって色々です。 一方、システムに独立したPerlプログラムで実現するなら、メールボックスに溜まったメールを定期的に見て、返信のメールを送信すればよいです。 だからメールボックスからメールを読むプログラムを書きます。 POP3やIMAPなど、環境によってメールを読むプロトコルは変わるかもしれませんが。 質問とは関係ないですが、Socketモジュールでメール送信している人はもういませんよ、それは10年も前の話です。第一大変でしょう。 CPANを見て下さい。 簡単なメールを送信する場合、例えばEmail::Sendモジュールを使えば1行でメール送信できます。

mintea86
質問者

お礼

素早い回答ありがとうございました。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 「自動メール返信システム」ですが、これは多くの場合 ・SMTPサーバの機能を使って、受信したメールをプログラムにパイプする:通常、stdinにメールデータが流れる ・プログラム側で適当に処理をして返信する という流れで実装されることが多いように思われます。 で、デーモン(常駐プログラム)をもちいて、ということになりますと、基本的にはSMTPの機能を一通り実装する必要があるかと思います。 簡単に書くと、SMTPプロトコルを受け取れる処理周りが一式必要です。 # 余談ですが、それをPerlで記述するのはあまりお勧めできないのですが。基本はC、もしくはC++あたりが無難です。 単純に「自動返信したい」だけであれば、デーモンの実装をするのではなく、単純に「stdinからの情報(メールデータ)を処理して返信する」プログラムを書いたほうが楽だと思うのですが。

mintea86
質問者

お礼

素早い回答ありがとうございます。

mintea86
質問者

補足

実は学校でこの研究をしているんですよ。それで、まずは簡単なテキストメールを送るとそのまま返信されてくるというプログラムを書くことになったんです。(とりあえず、Perlを用いて)これができれば、作ろうとしているシステムの基盤が完成するんです(暫定版ですが)。そして、一通り完成したところで、考察し、より良いものにしていこうと思っているんです。ということで、とりあえずPerlで書きます。 がる様の回答はとても参考になったのですが、具体的に「SMTPプロトコルを受け取れる処理周りが一式必要」とは、どういったもの(処理)が必要になるのですか?全く検討がつきません…。

関連するQ&A