ファイルを作成する bash スクリプトがあり、最後に telnet 経由で電子メールを送信したいと考えています。ただし、実行される場合と実行されない場合があります。
最後のコマンドは
cat tempfile | telnet mail.domain.com 25
受信サーバーで、失敗すると mail.log に次のエラーが表示されます。
improper command pipelining after EHLO from domain.com ....etc
mail.domain.com の代わりに localhost で telnet セッションを開始すると、同じスクリプトが完全に機能するので、ファイル形式が問題なく、残りの bash スクリプトも機能していると確信できます。
また、パイプの代わりに標準のリダイレクトを使用してみました
telnet mail.domain.com 25 < tempfile
しかし、やはり結果は時々大丈夫です。telnet セッションが確立されて応答が返された後に入力が行われるように、リダイレクトと telnet セッション コマンドの間にわずかな遅延が必要だと思いますが、その方法がわかりません。パイプとリダイレクトの間に sleep コマンドを使用しようとしましたが、おそらく入力が sleep コマンドにリダイレクトされるため、機能しません。
e.g. cat tempfile | telnet mail.domain.com 25 & sleep 1
制限は、bash スクリプトで実行する必要があることです。出来ますか?また、それが重要かどうかはわかりませんが、スクリプトは、postfix/courier セットアップを使用して debian スクイーズでサーバー間で動作していましたが、現在、受信側は debian wheezy と postfix/dovecot でセットアップされています。
助けてくれてありがとう