26 thg 4, 2008

Mail & Relay

Bài viết sau mình diễn tả quá trình gửi mail đến được đích như thế nào.
Để mail đến được đích sẽ thông qua 2 bước sau:
B1 : Xác định một thứ gọi là MX Record của mail server đích ( nói cách khác là xác định dns name và IP của SMTP server của domain đích )
B2 : server nguồn kết nối với server đích trên port 25. Dùng SMTP command gửi thư.

* Chi tiết thực hiện
B1 : Xác định thông số MX record, IP và DNS name của server
Run – cmd - Lệnh nslookup
Set type=mx
Yahoo.com ( gõ Tên domain đích ở đây )
Kết quả của 2 lệnh trên chúng ta sẽ xác định được MX record, IP và Name server của domain đích.
B2 : chúng ta dùng command để gửi message đến server đích

- Các Lệnh dưới đây phải gõ chính xác tên và khoảng trống. Nếu gõ sai thì không được nhấn nút lùi rồi gõ lại. Gõ lại nó sẽ không thực thi. Gõ sai nhấn enter để kết thúc lệnh, sau đó gõ lại đúng lệnh đó.
Các lệnh sau là các lệnh telnet vì vậy phải mở chương trình telnet và port đi kèm để có thể thực hiện lệnh.
Telnet
Set localecho
Open destIP 25 (thiết lập kết nối đến server đích)
220 ( return code ) : 220 là mã xác nhận rằng ta đã kết nối thành công ( Nếu mã trả về khác 220 nghĩa là thất bại -> gõ lại lệnh trên đến khi nào kết nối. Nếu thử nhiều lần mà thất bại có nghĩa là port 25 đã bị khóa)
Helo têndomainđích
250 (giá trị trả về thành công : số khác là thất bại -> kết nối lại lệnh Helo này tiếp đến khi thành công)
Mail from:250 (code trả về)
Rcpt to: vd : cuti@microsoft.com
250
Data (lệnh này có nghĩa là chúng ta nói với server đích rằng chúng ta bắt đầu gõ nội dung của thử bao gồm thư gửi cho ai, từ ai gửi đến, chủ đề thư và nội dung bức thư)
354 (code trả về)
To : Tí (tí là tên người nhận thư)
From : Tèo (tèo là người gửi thư)
Subject : Thư của Teo gửi cho Ti

Đây là nội dung bức thư : Vd : E khỏe không cu. Trời nóng quá ra hồ con Rùa bơi đi.
.

250 (code trả về)
- Chú ý : Giữa subject và nội dung bức thử phải có một dòng trống. Nếu viết liền thì nó sẽ hiểu đó là subject của bức thư chứ không thuộc về nội dung của bức thư.
Dấu . cuối bức thư nói với server đích rằng : nội dung thư của tôi cần gửi đã kết thúc rồi. Không có sai xót gì thi hãy trả về cho tôi code 250 để báo cho tôi biết là thư gửi thành công.

- Trong các dòng lệnh trên có những thông tin đi kèm không đòi hỏi phải chính xác 100%. Ví dụ :
1: Nội dung bức thư ta có thể chế biến
2: địa chỉ email người gửi là mình ->mình có thể bịa ra cái domain giả thế nào chả được vì mục đích ở đây ta đang nói việc gửi mail chứ không nhận mail -> thông tin trên không quan trọng. Đây là lí do tại sao mà mạng nội bộ hay ngồi ngoài phòng net ta có thể gửi cho địa chỉ mail yahoo, gmail của mình. Yahoo mail sẽ kiểm tra Ipwan của bức thư. Nếu IP này không nằm trong blacklist nó sẽ cho vào bulk (điều này là hiển nhiên – IP động mà lị). Còn nếu nằm trong bộ lọc của nó hoặc trong blacklist nó sẽ drop bức thư.

- Với các bước trên là chúng ta có thể gửi thư được rồi. Nhưng không lẽ chúng ta bắt người dùng phải nhớ từng ấy thứ để gửi một bức thư. Cái họ cần là một công cụ tích hợp sẵn các lệnh trên, đi kèm là một giao diện sáng sủa và đẹp mắt để họ soạn thư và gửi dễ dàng chỉ bằng cách nhấn nút SEND. Công cụ đó chính là các trình duyệt mail (Outlookup Express, Microsoft Outlook …). Mình s/d OE để minh họa.
Bật OE :
+ Menu tool – account – tab mail – nút add – chọn mail
Display name : Tên này chúng ta có thể bịa tùy ý ví dụ : Teo – next

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Email address : địa chỉ email của người gửi (như đã nói ở trên bạn muốn gõ gì cũng được) Vd: cuteo@tenmienbia.com – next

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Hộp thoại Email server name xuất hiện 2 thành phần
Incoming mail và outgoing mail : 2 thành phần này có nghĩa gì ?
Trong 1 server mail vậy lý sẽ tồn tại 2 server luận lý :

1/ Incoming Mail Server (POP3, IMAP4, HTTP server):
- Nhiệm vụ là đối nộ : điều phối mail trong Lan. Các user khi mở trình duyệt mail thì trình duyệt mail này sẽ đi check mail trong incoming mail server . Nói cách khác là pop3 trục trặc bạn sẽ không check được mail. IMAP4, HTTP ít người dùng và Không được hỗ trợ bằng POP3 (s/d port 110 và 995)

2/ Outgoing Mail Server (SMTP )
- Nhiệm vụ là đối ngoại : Gửi và nhận mail với domain bên ngoài -> nếu SMTP (port:25) trục trặc thì bạn sẽ không thể nhận cũng như gửi thư ra domain bên ngoài

Incoming mail :Ở đây chúng ta không quan tâm đến việc nhận mail nên gõ IP gì cũng được. Nếu ở đây bạn khai báo một số IP bịa nào đó thì khi bạn bật OE lên thì OE lập tức đi tìm POP3 server (tức là IP bạn khai ở phần Incoming mail) để check mail. Khi bật OE lên chú ý góc dưới bên trái có từ connect - nhấp vào nó chọn stop vì đây là con số IP bịa nên nó không có hiệu lực, nó connect một hồi báo không tìm thấy -> phải cancel thôi)

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Outgoing Mail : gõ địa chỉ IP của yahoo.com 66.218.71.63 (đang giả định gửi cho yahoo)

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Để có IP của yahoo người dùng phải thực hiện như B1: phân giải để có IP, mx record, name server. -> Next

Hộp thoại internet mail logon :
Thông tin ở đây chính là thông tin cần check mail – next luôn – finish.

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


- Nhấn nút create mail để gửi thư bằng giao diện đồ họa giống webmail.
- Hình bên dưới mô tả 2 bước thực hiện gửi mail đến dest server. Gửi trực tiếp từ User và Mail browser đến dest Server không thông qua trung gian.

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 1024x768


- User vẫn chưa vừa lòng với các bước hướng dẫn trên. Vì mỗi lần gửi đến 1 Dest Server khác thì User phải cấu hình lại 2 bước với IP khác trong Outgoing mail . Phức tạp quá. Họ muốn rằng chỉ phải nhớ 1 con số IP nào đó thôi (con số này phải cố định). Lúc này ta phải xậy dựng 1 chú SMTP server1 trung gian để mọi user gửi thư đến. Sau đó SMTP Server này sẽ chuyển thư của mọi user đến Dest server

Quá trình mà Mail Browser gửi thư đến SMTP Server 1 và nhờ gửi đi đến Dest Server gọi là RELAY (hay Relay mail)
Còn những server mà nhận và gửi mail dùm cho mọi user, dù user đó ở trong cùng domain hay ở ngoài domain, dù xa lạ hay quen biết thì Server đó được gọi là OPEN RELAY (có nghĩa là relay mọi thư gửi đến không cần biết đối tượng nhờ gửi là ai). Trạng thái Open Relay quá nguy hiểm. Vài năm trước đây có thể search ra được các server Open Relay. Còn hiện tại mọi mail server đều khóa tính năng này lại. Chỉ khi nào cần thử nghiệm vấn đề gì hoặc cho phép 1 số IP nhất định được phép relay qua server thì mới bật lên.
Trên diễn đàn X_boy và NN có cho mượn account relay trong vài ngày để test và vọc mail server. Không thương mại.
http://nhatnghe.com/forum/showthread.php?t=12556

Cấu hình relay trong OE :
Các bước giống như ở trên. Riêng phần Outgoing mail ta gõ IP của SMTP Server1.. Finish.

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Sau đó gửi mail ra yahoo.

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Bạn nhận thông báo lỗi : trong đám rừng đó có một từ khóa unable to relay for dangduya147@yahoo.com. Như đã nói ở trên mail server khóa chức năng open relay. Server mail đó nói rằng anh muốn relay mail qua tôi ư: ít ra anh phải chứng minh được anh có họ hàng bà con với tôi. Còn không ư : quên đi cưng.
Nói cho dễ hiểu thì là như vầy:
Bạn có cậu em tên Tèo. Lúc bé thì nó rất khờ, ai sai gì nó cũng làm. Bạn nhờ nó gửi dùm thư – OK gửi thì gửi. Anh hàng xóm thấy nó khờ quá nên lợi dụng sai nó làm đủ việc – Ok làm thì làm (Lúc này Cu Tèo đang ở tình trạng OPEN RELAY – ai sai nhờ gì nó cũng làm mà lị). Lớn lên nó bắt đầu khôn ra, anh hàng xóm nhờ nó làm – OK được thôi nhưng lúc này nó yêu cầu anh ta phải chứng minh rằng anh có quan hệ bà con với nó trước đã. Chứng mình bằng cách nào : nó bắt hàng xóm liệt kê ra một đống thông tin đại loại : anh phải sống chung nhà, phải có cùng họ …. Tất nhiên là anh ta kô thể chứng minh hoặc chứng minh không chính xác. Nó Drop cái yêu cầu của anh ngay lập tức. Đến phiên bạn nhờ nó. Nó giở chiêu cũ bắt bạn cung cấp thông tin ( đề phóng luôn với người nhà – quá chắc ăn. Tốt) -> thế là bạn khai với nó các thông tin

+ Khai báo thông tin họ hàng bà con với server trong OE:
Menu tool – account – tab mail – chọn account – chọn properties – tab general :bắt đầu khai báo đây.
1/ Sửa lại email address giống domain server
VD : của mình phải sửa lại là cuteo@dda147.com thay cho cuteo@tenmienbia.com (domain của mình là dda147.com)

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


2/ Tab server : check vào My server require authentication

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


– Chọn nút setting kế bên, khai báo tài khoản và pass tồn tại trong domain (tất nhiên ở chung nhà là phải có thông tin này).

Hình ảnh này đã được thay đổi kích thước. Click vào đây để xem hình ảnh gốc với kích thước là 800x600


Sau khi khai báo xong thông tin bạn quay lại OE bạn nhấn nút send all trong nút SendReceive . Thư đi ngon lành. Vậy là xong vụ relay qua SMTP server1.

+ Lúc này phát sinh thêm một tình huống mới.
Một ngày đẹp trời các user thông báo với bạn rằng sao mail của tôi không thể gửi cho yahoo. Chỉ sau vài phút thử nghiệm bạn thấy đúng là không thể gửi mail cho yahoo. Gửi thử mail cho gmail, hotmail … Bật công cụ theo dõi mail lên thì thấy mail gửi đi ngọt sớt, không gặp bất kì trục trặc nào (công ty mới mua IP tĩnh chơi lease line cực kỳ hoành tráng mà lị). Gọi điện cho mấy thằng bạn hỏi thăm tình hình thì tụi nó báo không có trục trặc gì cả. Sao chỉ có một mình mình dính chưởng. Thế là lên mạng lục tung các diễn đàn mới phát hiện ra vụ IP blacklist. Kiểm tra thì IP đang nằm trong sổ đen của các tổ chức spam -> hèn gì thằng yahoo nó chặn mail lại (thằng yahoo này có trong tay danh sách IP balcklist). Liên hệ với tổ chức này thì họ remove IP. Thở phào nhẹ nhóm vì user thông báo là họ gửi được rồi. Qua vài ngày sau đến lượt gmail drop mail user của bạn. Lên NN hỏi thăm đủ người thì được TonyHien cho biết : IP của vietnam toàn cùi bắp -> dễ dàng bị lọt vào tổ chức chống spam. TonyHien khuyên nên relay mail qua một SMTP server2 có uy tín (tốt nhất là của nước ngoài) để nó chuyển đi dùm cho (tất nhiên là tốn phí cho nó tùy số lượng mail Relay hàng tháng).

Với hình vẽ trên bạn đã cấu hình relay mail từ SMTP SERVER 1 (mail server công ty bạn) qua SMTP server 2 (nhờ nó relay mail dùm). Lúc này SMTP server 1 trở thành RELAYER (tức người chuyển tiếp relay mail). Còn SMTP server2 bây giời là SMART HOST (cung cấp tính năng relay mail cho những domain có nhu cầu). Khái niệm về Relay mail coi như giải quyết xong.

http://www.nhatnghe.com/forum/showthread.php?t=18914

2 nhận xét:

zheing nói...

Điều tốt đẹp
cảm ơn MCSE

MCSE nói...

nhờ thông tin tốt.
MCSE