• ベストアンサー

SMTPコマンドを自動で実行したい。

SMTPコマンドを自動で実行したいと考えています。 # telnet localhost 25 と実行させます。 その後、自動で helo , quit といったコマンドを自動で 実行させれないでしょうか? シェルの機能を使ってもいいですし、telnetのオプションで実現可能で あればそれでもいいです。 # telnet localhost 25 はシェルスクリプトやcronから実行させる予定です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

あぁ、ごめんなさい。SMTPサーバがメッセージを返し終わる前に次の行を送る と、ブチ切られちゃうみたいです。それぞれのコマンドの間に、適当な時間を 開けなくちゃいけません。 で、今試してみたのが echo open localhost 25 sleep 3 echo helo sleep 3 … echo quit なんていうスクリプトを書いておいて、パイプでtelnetに流し込む方法です。 とりあえずウマくいったような感じです。

kyoui7
質問者

お礼

見事にできました。 どうもありがとうございます。

その他の回答 (2)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.3

"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をまったく使っていないことに気が付いた。(^^;;

回答No.1

必要なコマンドを列記したファイルを用意しておいてリダイレクトしてやるのが ふつ~じゃないですか? telnet <in_file in_file: open localhost 25 helo … quit みたいな感じで。

kyoui7
質問者

お礼

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

kyoui7
質問者

補足

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

関連するQ&A