gon*_*one 10 email ssl networking gmail smtp
所以我正在学习SMTP,并试图telnet
通过SMTP发送一些邮件.
我很容易通过以下方式将邮件发送到我的Gmail帐户:
$ host gmail.com
...
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
...
$ telnet gmail-smtp-in.l.google.com 25
Trying 74.125.142.27...
...
Connected to gmail-smtp-in.l.google.com.
...
HELO <me@test.com>
...
Run Code Online (Sandbox Code Playgroud)
但是,我无法从我的Gmail帐户发送邮件.根据我对SMTP的理解,我应该使用SMTP将来自<mygmailaddress@gmail.com>的邮件发送到传出的gmail SMTP服务器,后者又使用SMTP将邮件传输到接收方传入的SMTP服务器等.
但是,我遇到了困难.如果我telnet
进入smtp.gmail.com
via端口465
(gmail传出smtp邮件服务器规范),我会在启动后立即断开连接HELO <blah@blah.com>
,或者要求STARTTLS
.我无法找到如何进行的答案.
任何帮助表示赞赏.
旁注:目前我正在使用星巴克的免费Wi-Fi访问互联网.我实际上无法telnet
直接从我的电脑(无路由到主机错误).相反,它只有在我首先ssh
进入我学校网络的远程linux盒子然后telnet
从那里工作时才有效.知道为什么会这样吗?
谢谢!
rha*_*oto 23
首先,看起来你使用的是错误的端口.Gmail中暴露的端口465 SMTP通过SSL和端口587与SMTP STARTTLS,作为记录在这里.这两者之间的区别在于,SSL over SSL首先建立安全的SSL/TLS连接并通过该连接进行SMTP,而带有STARTTLS的SMTP以未加密的SMTP开始,然后切换到SSL/TLS.这就是为什么你没有得到你的HELO的回应.
$ telnet smtp.gmail.com 587
Trying 74.125.25.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP fr1sm24834956pbb.26 - gsmtp
HELO <me@test.com>
250 mx.google.com at your service
STARTTLS
220 2.0.0 Ready to start TLS
Run Code Online (Sandbox Code Playgroud)
但即使你telnet到587端口,你仍然无法手动发送任何电子邮件.为了做任何有趣的事情,您将不得不使用STARTTLS,并且您将无法处理SSL/TLS二进制协议来协商加密.
Erw*_*and 17
telnet客户端不会为您协商TLS会话.您应该使用其他工具,例如OpenSSL的s_client.以下为您发出STARTTLS命令并处理TLS协商:
$ openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接连接到SMTPS端口:
$ openssl s_client -connect smtp.gmail.com:465 -crlf
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
78040 次 |
最近记录: |