Gửi email giả mạo?

Xin lưu ý:

  • Bài viết này chỉ mang tính “education purpose”, mình tuyên bố là không có trách nhiệm với những ai đem cái này đi “phá làng phá xóm”.
  • Mình cũng chỉ 1 đứa hay tò mò thôi, không phải cao siêu gì hết. Kiến thức là lụm lặt được ở wikipedia này nọ thôi. Có gì sai thì từ từ chửi, vì mình mong manh dễ vỡ :joy:

Vào trọng tâm thôi :joy: Tất cả mọi thứ này chỉ là CƠ BẢN thôi nha :3
Số là mình hiện có ít ‘tym’ nên muốn làm 1 cái topic sống ảo :3 (ahihi, đùa thôi) Thực ra là mình đặt ra câu hỏi là: Gửi email là như thế nào? Chung quy là mình muốn tìm hiểu mail server.
Hỏi Google-sama một lát là mình thấy cái này trên Wikipedia. Mình mở telnet và test thử thì ôi thôi nó thành công các chế ạ :smile: Quá trình của mình test như sau:

  • Mình chọn trang ThrowAwayMail để test vì nó không tự động ngắt kết nối khi mình đang gõ :3. Đia chỉ mail hiện tại của mình: [email protected] (nó tự động tạo chứ mình không được chọn)
  • Bây giờ ta biết mail này có host là housat.com, nhưng mail server thì ta chưa biết. Dùng lệnh nslookup để dò mail server:
    Trên GNU/Linux, gõ nslookup -query=mx housat.com
    Kết quả trả về: housat.com mail exchanger = 10 mail.housat.com. Ta thấy được máy chủ mail ta cần hướng tới là mail.housat.com.
  • Bây giờ tới phằn gửi email nà :joy: telnet tới mail.housat.com. Trên bash, gõ telnet mail.housat.com 25 (kết nối tới mail.housat.com tới cổng 25) vì cổng SMTP là 25. Đoạn chat giữa mình và server sẽ được tóm lược như sau: (Những dòng bắt đầu bằng số 200, 250,… là của server trả về)
  • Check inbox trong kia lại xem nào:

    RAW DATA:
From [email protected]  Fri Jan 13 XX:XX:XX 2017
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from nicklauri.mail (unknown [42.XX.XXX.XXX])
	by server.throwawaymail.com (Postfix) with SMTP id C5FFB1360CBD
	for <[email protected]>; Fri, 13 Jan 2017 XX:XX:XX +0100 (CET)
from: "Tester" <[email protected]>
to: "Ahihi" <[email protected]>
subject: This is just a test

Nothing to see here.
Bye!

(mình phải che IP nên nó XXX nha :joy: )

Mình sẽ giải thích từng lệnh:

  • HELO domain.name: muốn nói chuyện với mail server thì phải chào nó 1 cái. <domain.name> là cái gì cũng được, như ví dụ ở trên, không hề có domain nào là nicklauri.mail cả.
  • MAIL FROM: [email protected]: tự giới thiệu email (giả) của bạn.
  • RCPT TO: [email protected]: gửi email này tới ai? (RCPT là “recipient”).
  • DATA: bắt đầu gửi nội dung mail. Cấu trúc nội dung mail:
  • From: "your_name" <[email protected]>: Tự “khai” tên bạn (dĩ nhiên là bất cứ thứ gì).
  • To: "anyname" <[email protected]>: Bạn có thể đặt tên cho người khác bằng tên gì cũng được.
  • Cc: [email protected]: có thể bỏ qua phần này :3 (nó là thêm địa chỉ mail CC thôi).
  • Subject: tiêu_đề: chắc mình không cần phải nói cái này là gì.
  • Hãy bỏ 1 dòng trống và bắt đầu email-body và kết thúc bằng \r\n.\r\n (tức là gõ enter rồi gõ 1 dấu chấm rồi enter).
  • QUIT: Chúng ta đã xong việc, ngắt kết nối thôi!

Mình cũng thử test trên Yahoo mail và gửi thành công :wink: dĩ nhiên là nó nằm trong mục Spam rồi. Còn mình thử test với Gmail nhưng nó báo là địa chỉ IP mình không đủ răng (rank, IP reputation) nên nó không thèm gởi luôn :slight_smile: . Và để thõa mãn “dã tâm” của mình, thì mình dùng Python viết 1 đoạn script nhỏ (nhưng vì mùa thi cử, mình không chăm chút nhiều được), tham khảo tại đây: mailer.py (yêu cầu phải cài thư viện dnspython - thật ra có thể dùng popen và parse output). Để script chạy được thì phải clone hết repo của mình về mới xài được @@, mình xin lỗi vì sự bất tiện này. Script chạy tốt trên Linux, mình chưa thử trên Windows.

Tài liệu tham khảo: en.wikipedia.org
P/s: nếu chủ đề này không bị phản đối và có người đọc thì lâu lâu mình làm 1 cái cho vui nha :3

13 Likes

1 Trym cho thanh niên :heart_eyes:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?