При использовании telnet или netcat для проверки исходящей электронной почты SMTP я не могу завершить сообщение «».на линии сам по себе " - PullRequest
2 голосов
/ 15 января 2011

При отправке простого электронного письма через telnet или netcat на 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

Это отлично работает на другом компьютере в той же сети и у провайдера с другой версией telnet.

netcat зависает так жена обоих компьютерах.

Я думал, что это может иметь какое-то отношение к LINEMODE, так как сеанс telnet, который не может отправить электронную почту, находится в LINEMODE и не может переключиться на CHARMODE.Есть ли обходные пути?

Ответы [ 3 ]

3 голосов
/ 15 января 2011

Новые строки, которые вы отправляете, - это, вероятно, просто возврат каретки или просто символ перевода строки.SMTP требует возврата каретки с последующим переводом строки для завершения строки.

http://tools.ietf.org/html/rfc5321#section-2.3.8

http://tools.ietf.org/html/rfc5321#section-4.1.1.4

Попробуйте завершить каждую строку с помощью Control-M Control-J, используя другую терминальную программу и / или используя что-то отличное от telnet.

0 голосов
/ 15 января 2011

Чтобы увидеть, что на самом деле происходит, вы можете использовать один из этих инструментов:

  • strace записывает все системные вызовы, включая все, что вы пишете или читаете в файлы или сеть.Вы можете проверить выходные данные этой программы, чтобы увидеть, правильно ли завершены строки с помощью \r\n.
  • wireshark записей и отображен сетевой трафик.Используйте его для записи трафика, выполните фильтрацию по tcp.port==25, а затем Следуйте по потоку TCP , чтобы увидеть, какие байты действительно были отправлены по проводам.
0 голосов
/ 15 января 2011

Снимок в темноте, но, возможно, попробуйте нажать CTRL-J вместо Enter после ввода ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...