当通过 telnet 或 netcat 向我的 ISP 的 SMTP 服务器发送一封简单的电子邮件时,我无法用句点终止该消息。最终连接超时,但消息未送达。
root@zeus:/tmp# telnet mail.charter.net 25
220 imp09 smtp.charter.net ESMTP server ready 20110115 000442
HELO charter.net
250 imp09 hello [97.94.115.109], pleased to meet you
MAIL FROM: test@gmail.com
250 2.1.0 <test@gmail.com> sender ok
RCPT TO: test@gmail.com
250 2.1.5 <test@gmail.com> recipient ok
DATA
354 enter mail, end with "." on a line by itself
test body
.
.
/n.
/n
.
\n
.
QUIT
这在同一网络和 ISP 上使用不同版本的 telnet 的另一台计算机上工作正常。
netcat 在两台计算机上以相同的方式挂起。
我在想这可能与LINEMODE有关,因为无法发送电子邮件的telnet session 处于LINEMODE并且无法切换到CHARMODE。有什么变通办法吗?
最佳答案
您发送的换行符可能只是回车符或换行符。 SMTP 需要回车符后跟换行符来结束一行。
https://www.rfc-editor.org/rfc/rfc5321#section-2.3.8
https://www.rfc-editor.org/rfc/rfc5321#section-4.1.1.4
尝试以 Control-M Control-J 结束每一行,使用不同的终端程序,和/或使用 telnet 以外的程序。
关于linux - 使用 telnet 或 netcat 测试外发 SMTP 电子邮件时,我无法结束消息 'with "."on a line by itself',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698127/