Cố gắng kết nối với cổng SMTP và đảm bảo bạn lấy lại dòng từ bắt đầu bằng "220" và chứa các chữ cái "SMTP". Một ví dụ điển hình phản ứng sẽ là:
220 prod.monadic.cynic.net ESMTP Postfix (2.5.5)
Sau đó, hãy lịch sự và gửi "QUIT
\ r \ n" để ngắt kết nối.
Bạn có thể thực hiện thêm một số thử nghiệm, nếu bạn muốn, chẳng hạn như thử nghiệm để người dùng có thể gửi tin nhắn. Đối với điều này, bạn sẽ gửi một lệnh HELO với tên máy chủ của bạn (hoặc bất kỳ chuỗi nào, thực sự), một lệnh MAIL FROM
bằng địa chỉ e-mail của người dùng và RCPT TO:<[email protected]>
. Hầu hết các máy chủ tại thời điểm đó sẽ cho bạn biết nếu chuyển tiếp không được phép. (Tôi cho rằng bạn đang thực hiện việc này từ máy tính mà sau này bạn sẽ gửi thư.) Miễn là bạn QUIT
sau đó, thay vì phát hành lệnh DATA
và dữ liệu tin nhắn, sẽ không có nội dung nào được gửi.
Đây là phiên ví dụ, được thực hiện từ trình bao bằng lệnh "netcat", cho biết máy chủ của tôi tồn tại, nhưng sẽ không chuyển tiếp thư cho những người từ địa chỉ IP ngẫu nhiên.
$ nc prod.monadic.cynic.net. 25
220 prod.monadic.cynic.net ESMTP Postfix (2.5.5)
HELO cynic.net
250 prod.monadic.cynic.net
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
554 5.7.1 <[email protected]>: Relay access denied
QUIT
221 2.0.0 Bye
$
Nguồn
2009-06-05 11:35:26
Như đã nói, hãy thử kết nối và kiểm tra xem bạn có thể mở cổng không. Sau đó, hãy xem nếu bạn có một phản ứng, nhưng nếu cấu hình một máy chủ sẽ không gửi cho bạn ban đầu một cái gì đó. Vì vậy, để chắc chắn đầu tiên bắt đầu bằng lệnh 'HELO' hoặc 'EHLO' và kiểm tra phản hồi của nó. Bất kỳ lệnh nào khác bạn có thể thử để kiểm tra được liệt kê trong RFC 821, 2821 và 5321. – Oliver
Một máy chủ ban đầu sẽ gửi cho bạn một dòng 220 ngay sau khi bạn kết nối. Tôi đã thêm một ví dụ ở trên để làm cho điều này rõ ràng hơn. –
Hi Curt này là thực sự nhưng tôi có thể làm theo phần đầu tiên đúng cách nhưng tôi không thể hiểu được RCPT đồng bộ TO: <[email protected]> bạn có thể cung cấp cho một số mã trong C# cho việc này không. –