アプリ版:「スタンプのみでお礼する」機能のリリースについて

SMTPコマンドを自動で実行したいと考えています。

# telnet localhost 25

と実行させます。
その後、自動で helo , quit といったコマンドを自動で
実行させれないでしょうか?
シェルの機能を使ってもいいですし、telnetのオプションで実現可能で
あればそれでもいいです。

# telnet localhost 25 はシェルスクリプトやcronから実行させる予定です。

よろしくお願いします。

A 回答 (3件)

必要なコマンドを列記したファイルを用意しておいてリダイレクトしてやるのが


ふつ~じゃないですか?

telnet <in_file

in_file:
open localhost 25
helo

quit

みたいな感じで。

この回答への補足

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

やってみたのですが、connection closed by foreign host.
とクローズされてしまうようです。

補足日時:2002/05/29 13:39
    • good
    • 0
この回答へのお礼

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

やってみたのですが、openの段階でconnection closed by foreign host.
とクローズされてしまいます。
heloは実行されないようです。

お礼日時:2002/05/29 14:12

あぁ、ごめんなさい。

SMTPサーバがメッセージを返し終わる前に次の行を送る
と、ブチ切られちゃうみたいです。それぞれのコマンドの間に、適当な時間を
開けなくちゃいけません。

で、今試してみたのが
echo open localhost 25
sleep 3
echo helo
sleep 3

echo quit
なんていうスクリプトを書いておいて、パイプでtelnetに流し込む方法です。
とりあえずウマくいったような感じです。
    • good
    • 0
この回答へのお礼

見事にできました。

どうもありがとうございます。

お礼日時:2002/05/30 15:52

"mail"コマンドでは駄目なのでしょうか?



SMTP叩く必要があるのなら,PerlでSMTPモジュール使うのが保守面で楽でしょう。世間に落ちてる情報量も多いですし。

シェルスクリプトにこだわるのなら,bashで多少インタラクティブに仕上げることもできます。
------------------------------------------------
#!/anywhere/bin/bash

while read str <&3 && read command <&4 && echo $str | grep -q "^2"
do
echo "server message: $str"
echo "command string: $command >&3
done 3<>/dev/tcp/localhost/25 4<<COMMAND_LIST
HELO
MAIL From: nobody@localhost

QUIT
COMMAND_LIST

echo "server message: $str"
-----------------------------------------------
その他のシェルでも,FIFO(ref. mkfifoコマンド)を使えば,同様にインタラクティブな操作を行えるかも?

# んー,telnetをまったく使っていないことに気が付いた。(^^;;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!