我有一个创建文件的 bash 脚本,我想在最后通过 telnet 发送一封电子邮件。然而,有时它会执行,有时它不会。
最后的命令是
cat tempfile | telnet mail.domain.com 25
在接收服务器上,我在 mail.log 中看到失败时出现以下错误:
improper command pipelining after EHLO from domain.com ....etc
如果我在 localhost 中启动 telnet 会话而不是 mail.domain.com,则相同的脚本可以完美运行,因此我很确定文件格式正常,并且 bash 脚本的其余部分也可以正常工作。
我也尝试过使用标准重定向而不是管道
telnet mail.domain.com 25 < tempfile
但同样的结果有时是好的有时不是。我认为重定向和 telnet session 命令之间需要有一个小的延迟,以便在建立 telnet 会话并给出响应后给出输入,但我不知道该怎么做。我试过在管道和重定向之间使用 sleep 命令,它可能不起作用,因为输入被重定向到 sleep 命令。
e.g. cat tempfile | telnet mail.domain.com 25 & sleep 1
限制是我必须在 bash 脚本中执行此操作。可能吗?另外我不知道它是否重要,但脚本用于在 debian 挤压中的服务器之间使用 postfix/courier 设置工作,现在接收端使用 debian wheezy 和 postfix/dovecot 设置。
在此先感谢您的帮助