2013-06-24 55 views
7

Vì vậy, tôi đang tìm hiểu về SMTP và đang cố gắng sử dụng telnet để gửi một số thư qua SMTP.Sử dụng SMTP, Gmail và STARTTLS

Tôi đã easilly thể gửi mail để tài khoản gmail của tôi qua:

$ 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 <[email protected]> 
... 

Tuy nhiên, tôi đang gặp sự cố khi gửi từ tài khoản gmail của tôi. Từ những gì tôi hiểu về SMTP, tôi nên sử dụng SMTP để gửi thư từ < [email protected]> đến các máy chủ SMTP gmail đi, sau đó sử dụng SMTP để chuyển thư đến máy chủ SMTP đến nhận ect.

Tuy nhiên, tôi đang gặp khó khăn. Nếu tôi telnet vào smtp.gmail.com qua cổng 465 (máy chủ thư gmail outmail smtp chuẩn), tôi bị ngắt kết nối ngay lập tức sau khi bắt đầu với HELO <[email protected]> hoặc được yêu cầu STARTTLS. Tôi không thể tìm thấy câu trả lời về cách tiến hành.

Mọi trợ giúp đều được đánh giá cao.

Sidenote: Hiện tại tôi đang sử dụng Wi-Fi miễn phí của Starbucks để truy cập internet. Tôi thực sự không thể telnet trực tiếp từ máy tính của tôi (Không có đường dẫn đến lỗi máy chủ). Thay vào đó, nó chỉ hoạt động nếu tôi ssh vào một hộp Linux từ xa trên mạng của trường trước tiên, sau đó telnet từ đó. Có ai biết vì sao lại thế này không?

Cảm ơn!

Trả lời

21

Trước hết, có vẻ như bạn đang sử dụng sai cổng. Gmail hiển thị cổng 465 cho SMTP qua SSL và cổng 587 cho SMTP với STARTTLS, dưới dạng documented here. Sự khác biệt giữa hai điều này là SMTP qua SSL đầu tiên thiết lập kết nối SSL/TLS an toàn và thực hiện SMTP qua kết nối đó và SMTP với STARTTLS bắt đầu bằng SMTP không được mã hóa và sau đó chuyển sang SSL/TLS. Đây là lý do tại sao bạn không nhận được phản hồi cho HELO của bạn.

$ 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 <[email protected]> 
250 mx.google.com at your service 
STARTTLS 
220 2.0.0 Ready to start TLS 

Nhưng ngay cả khi bạn telnet đến cổng 587 bạn vẫn sẽ không thể gửi bất kỳ email nào bằng tay. Để làm bất cứ điều gì thú vị, bạn sẽ phải STARTTLS và bạn sẽ không thể xử lý SSL/TLS binary protocol để thương lượng mã hóa.

+3

Check-out Swaks để thu hẹp khoảng cách giữa telnet liệu và một ứng dụng thư khách. http://www.jetmore.org/john/code/swaks/ – Jed

+0

đối với tôi STARTTLS không hoạt động, theo tài liệu 587 được sử dụng cho TLS và 465 cho SSL: https://support.google.com/a/ answer/176600? hl = vi – flotto

15

Ứng dụng khách telnet sẽ không thương lượng phiên TLS cho bạn. Bạn nên sử dụng một công cụ khác, chẳng hạn như s_client của OpenSSL. Những vấn đề lệnh STARTTLS cho bạn sau và xử lý quá trình đàm phán TLS:

$ openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf 

Ngoài ra, bạn có thể kết nối trực tiếp vào cổng SMTPS:

$ openssl s_client -connect smtp.gmail.com:465 -crlf 
Các vấn đề liên quan