用netcat发送电子邮件

时间:2017-05-29 20:42:33

标签: email netcat esxi

我尝试从我的ESXI服务器发送电子邮件,但由于某种原因我不知道我收到了错误。

这是我用来发送电子邮件的命令:

nc -Cv smtp.relay.us 25 < /vmfs/volumes/Vcloud-Datatstore/Tools/mail.txt

这是mail.txt文件:

HELO smtp.relay.us
MAIL FROM:<maillog@gkmonitor.fr>
RCPT TO:<systemsupport@gkit.fr>
DATA
From: [Log Server] <maillog@gkmonitor>
To: <systemsupport@gkit.fr>
Date: Mon, 29 May 2017 20:25:38 +0000
Subject: Resultat de la restauration de GED
blabla
blabla

.

我得到了这些输出:

220-*****************************
220 *****************************
250 smtp.relay.us
250 2.1.0 Ok
250 2.1.5 Ok
503 5.5.0 <DATA>: Data command rejected: Improper use of SMTP command pipelining
502 5.5.2 Error: command not recognized
...
...

我不明白我做错了什么。非常感谢提前。

2 个答案:

答案 0 :(得分:2)

最后让它发挥作用。

我不知道为什么,但是一旦到达DATA部分邮件,nc一次发送大量信息。即使用-i选项引入每一行之间的间隔也没有帮助。

所以这就是我的工作原理(受GhettoVCB剧本的启发):

 cat "mail.txt" |while read L; do sleep "1"; echo "$L"; done | "nc" -C -v "smtp.relay.us" "25"

mail.txt中没有任何变化

再见

答案 1 :(得分:1)

需要睡眠的原因是SMTP是&#34;会话&#34;。服务器收到一行后,会回复一些内容。客户端回复,服务器回复。但是,TCP并不关心内容。 (这里特别重要的是换行符。)TCP获取数据流和目的地。它会删除协商的(在比您的应用程序更低的级别,因此这超出您的控制)数据的八位字节数并发送它们。并重复直到完成。

问题是当服务器收到具有换行符的TCP段时,赔率(negotiated_octet_count为1)将包含下一行的某些数量。服务器在这一点上说,&#34;你不是让我说话,所以这不是一个对话,我们不会继续。&#34;

所以,这就是你的第一次尝试失败的原因。第二次尝试成功的原因是netcat并不要求每个TCP段都满。它适用于流,而不是文件。所以netcat没有工作到EOF。它一直有效,直到stdin关闭(如果指定了一个,则达到超时)。当stdin&#34;延迟&#34;时,它会发送它所拥有的内容。这可确保您的服务器获得以换行符结束的TCP段。您可能会发现您的服务器可以处理小于1秒的睡眠时间。我是.05,但你可能想用.1给它一些安全感。

I gave an example here但是我要重复一遍,因为你的报价对我来说非常不合理。

$ cat email_msg.txt
HELO localhost
MAIL FROM:<system@example.com>
RCPT TO:<bbronosky@example.com>
DATA
From: [IES] <system@example.com>
To: <bbronosky@example.com>
Date: Fri, 27 Oct 2017 06:14:11 +0000
Subject: Test Message

Hi there! This is supposed to be a real email...

Have a good day!
-- System


.
QUIT

$ function slowcat(){ cat "$1" | while read; do sleep .05; echo "$REPLY"; done; }

$ slowcat email_msg.txt | nc localhost 25
220 et3 ESMTP Exim 4.89 Fri, 27 Oct 2017 06:18:14 +0000
250 et3 Hello localhost [::1]
250 OK
250 Accepted
354 Enter message, ending with "." on a line by itself
250 OK id=1e7xyA-0000m6-VR
221 et3 closing connection