Như chúng ta đã biết trong bài Internet Protocol có rất nhiều giao thức kéo Mail về như HTTP, POP3, IMAP, MAPI… nhưng hầu hết trong này lại sử dụng giao thức SMTP để gởi mail đi
Trong bài này chúng ta sẽ tìm hiểu riêng về SMTP để hiểu cơ chế gởi Mail đi của một máy tính như thế nào. Vì vậy trong mô hình này tôi cần 2 máy tính để gởi và nhận Mail với nhau trong đó:
- Máy thứ 1 đã cài EX và có domain là gccom.net
- Máy thứ 2 đã cài EX và có domain là kythuatvien.com
Cấu hình IP các máy như sau:
Máy | Đặc tính | PC01 | PC02 |
Card Lan | Name | server.gccom.net | pc01.kythuatvien.com |
IP Address | 192.168.1.1 | 192.168.1.2 | |
Subnet Mask | 255.255.255.0 | 255.255.255.0 | |
Default gateway | 192.168.1.1 | 192.168.1.2 | |
Preferred DNS | 127.0.0.1 | 127.0.0.1 | |
Forwarders | 192.168.1.2 | 192.168.1.1 | |
Card Lan: nối gián tiếp 2 máy PC01 & PC02 với nhau thông qua Switch |
Để các máy có thể gởi mail cho nhau tại DNS của từng máy tôi phải tạo các MX Record và Alias mail (Xem lại bài DNS)
Bây giờ từ máy PC02 tôi dùng Command DOS để gởi mail đến máy PC01. Tại dấu nhắc DOS nhập
Nhập tiếp dòng lệnh
Màn hình thông báo gởi Mail hoàn tất. Tất nhiên để làm được việc này bạn phải Enable Service Microsoft Exchange POP3 trong Services của PC01 lên (Xem lại bài Internet Protocol)
Tại máy PC01 check mail của gccom1 thấy nhận được Mail. Tuy nhiên ta nhận thấy rằng người dùng có thể hoàn toàn giả mạo Email để gởi đến bất cứ ai, trong bài này chúng ta sẽ không đề cập đến vấn đề này và tôi sẽ nói lại trong phần Anti Spam ở bài sau.
Như vậy kết hợp với bài Internet Protocol ta thấy việc gởi và nhận Mail trong nội bộ không có vấn đề gì. Bây giờ ta thử tiến hành gởi mail ra ngoài Internet xem sao
Tất nhiên để gởi được Mail ra ngoài thì ngay tại Outgoing mail (SMTP) ta phải nhập địa chỉ hoặc IP của Server Mail mà ta muốn gởi đến. Trong bài này giả sử tôi đã có IP của Server Yahoo Mail là 209.191.118.103 vì vậy tại Account Properties của OE tôi nhập:
Incoming mail (POP3): vì tôi không cần thiết phải kéo mail về nên tại đây tôi nhập đại IP nào đó ví dụ 1.2.3.4
Outgoing mail (SMTP): 209.191.118.103
Gởi thử một mail đến vitinhgocong@yahoo.com thấy gởi thành công
Tuy nhiên nếu tôi gởi mail đến các địa chỉ Mail khác Yahoo ví dụ như Gmail thì lập tức bị lỗi, lý do IP 209.191.118.103 chính là IP Mail Server của Yahoo vì vậy khi mail ra ngoài sẽ không hiểu Mail Server của Gmail có IP là gì nên nó phản hồi lỗi ngay.
Trở lại màn hình Account Properties nhập lại giá trị:
Outgoing mail (SMTP): 192.168.1.1
Nhận thấy lúc này ta có thể gởi Email đến mọi Domain tốt. Lý do:
Khi Email được gởi ra ngoài nó sẽ đi theo giao thức SMTP và nó tìm máy nào có IP là 192.168.1.1 mà gởi đến. Tuy nhiên do từ trước chúng ta đã cài DNS lên chính máy này nên đến đây DNS sẽ phân giải và hiểu các Server Mail của Yahoo, Gmail… ở đâu và lập tức gởi Email của chúng ta đến các Mail Server này.
Nhưng nếu trong hệ thống của chúng ta đã cài Exchange Server rồi thì cho dù phân giải tên miền thành công nhưng Email này vẫn chưa ra được vì mặc định Exchange không cho gởi Mail ra ngoài. Vì vậy tại Organization Configuration chọn Hub Transport chọn tiếp Tab Send Connectors nhấp phải vào cùng trống chọn New Send Connector
Tạo một Connector mới đặt tên là To Internet chẳng hạn
Để gởi được mọi domain tại Address space bạn chỉ add một dấu * duy nhất mà thôi
Chọn Use domain name system (DNS) “MX” records to route mail automatically
Giữ nguyên giá trị mặc định nhấp Next
Màn hình sau khi hoàn tất
Bây giờ gởi thử Email cho các Domain khác nhau thấy rất tốt.
Bây giờ ta sẽ tìm hiểu đến một cách thức gởi mail khác đó là Exchange Relay Mail to Exchange
Trong các hệ thống mạng lớn nhất là đối với các công ty có nhiều chi nhánh trên nhiều quốc gia vì một lý do nào đó (hoặc để hệ thống luôn được thông suốt dù có sự cố từ ISP hoặc vì tính riêng tư) mà người ta thuê hẳn một đường Cable riêng để nối các Exchange lại với nhau.
Như vậy thông thường Email từ các máy thuộc mạng thứ 1 khi gởi ra ngoài sẽ được gởi đến máy EX và từ đó gởi ra ngoài Internet. Tuy nhiên khi có sự cố từ nhà cung cấp dịch vụ ISP thì toàn bộ hệ thống sẽ không thể gởi mail ra vào được nữa.
Khi đó vì có đường Cable riêng nên từ mạng thứ 1 máy EX sẽ gởi các Email này theo đường Line riêng của mình đến một máy EX khác thuộc hệ thống của nó nằm tại một vị trí địa lý hoàn toàn khác và không bị ảnh hưởng bởi sự cố của ISP. Từ đó máy EX của mạng thứ 2 sẽ nhận các Email này và chuyển tiếp chúng ra Internet
Như vậy đến đây bạn có thể hình dung được vấn đề tương tự như DHCP Relay Agent vậy…
Giả sử tôi muốn EX từ domain gccom.net sẽ Relay Email đến EX của domain kythuatvien.com
Nên để 2 máy hiểu domain của nhau ta phải Forwarders máy này sang Domain máy kia và ngược lại (Xem lại bài DNS)
Và phải đảm bảo rằng phải tồn tại các MX record và Alias mail
Tại máy PC02 (EX của domain kythuatvien.com) tôi tạo một Mailbox User là RelayAccount và Password là 123
Gán cho Account vừa tạo quyền Relay bằng cách chạy Exchange Power Shell lên nhập
Tại domain gccom.net bạn vào Hub Transport của Organization Configuration chọn tiếp Tab Send Connectors sau đó nhấp phải chọn New Send Connectors
Giả sử tôi chỉ muốn Relay các Email gởi đến Yahoo mà thôi nên tôi sẽ tạo một Connector là RelayYahoo
Tại Address space bạn Add Domain là *.yahoo.com và chọn Include all subdomains
Trong Network settings bạn chọn Route mail through the following smart hosts để chị định máy Relay
Bạn nhập chính xác IP máy Exchange của domain kythuatvien.com hoặc nhập FQDN của máy Exchange đó
Chọn Basic Authentication trong cửa sổ Configure smart host authentication settings
Và nhập chính xác User/Pass của Account RelayAccount vừa tạo lúc nãy tại kythuatvien.com vào
Màn hình sau khi hoàn tất
Tiếp tục vào Services Restart dịch vụ Microsoft Exchange Transport lại
Bây giờ tại gccom.net bạn gởi một mail ra Yahoo
Bật EX của kythuatvien.com lên chọn Queue Viewer trong Toolbox lên
Sẽ thấy có các Email đang chờ gởi ra Yahoo do EX của gccom.net gởi tới.
OK mình vừa trình bày xong phần SMTP của Exchange Server 2007 trong 70-236 của MCSA.