Bài số 6: Thiết lập hệ thống email giữa 2 domain

Thực hiện các bước tương tự như bài thực hành trên, máy chủ mail.edu.vn được cấu hình để cung cấp thêm dịch vụ email cho domain “edu.vn”. Trong bài thực hành này, các máy chủ Email cần kết nối được với nhau để chuyển tiếp mail giữa 2 domain có các thông số cấu hình như sau:
Zone “edu.vn”:                       name: mail.edu.vn
                                                            IP: 192.168.56.4
Zone “mydomain.vn”:            name: mail.mydomain.vn
                                                            IP: 192.168.56.3
Các bước thực hiện như sau:

  • Bước 1: Kiểm tra hệ thống hàng đợi email
  • Bước 2: Kết nối với hệ thống DNS
  • Bước 3: Kiểm tra vận hành hệ thống

Bước 1: Kiểm tra hệ thống hàng đợi mail

Khi một user trong domain “mydomain.vn” gửi mail cho một user khác trong cùng domain, mail này sẽ được chuyển ngay vào mailbox của user trên máy chủ email. Trường hợp gửi cho một user nằm ngoài domain, mail sẽ được đưa vào hàng đợi để Postfix trên các máy chủ email liên lạc với nhau và chuyển tiếp mail. Lệnh postqueue -p hiển thị danh sách các mail đang thuộc hàng đợi. Mỗi mail được gán với một mã số Queue ID:

> postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
7411B4019A      397 Thu Nov 12 12:02:32  root@mydomain.vn
(connect to mail.edu.vn[1.2.3.4]:25: Connection refused)
hp@edu.vn

EFFD840180      402 Thu Nov 12 11:49:59  root@mydomain.vn
(connect to mail.edu.vn[2.3.4.5]:25: Connection refused)
root@edu.vn

Để xem nội dung một mail đang trong hàng đợi, sử dụng lệnh postcat -q với mã số mail trong hàng đợi:

> postcat -q EFFD840180
*** ENVELOPE RECORDS deferred/E/EFFD840180 ***
message_size:             402             199               1               0             402
message_arrival_time: Thu Nov 12 11:49:59 2015
create_time: Thu Nov 12 11:49:59 2015
named_attribute: rewrite_context=local
sender_fullname: root
sender: root@mydomain.vn
original_recipient: root@edu.vn
recipient: root@edu.vn
*** MESSAGE CONTENTS deferred/E/EFFD840180 ***
Received: by mydomain.vn (Postfix, from userid 0)
id EFFD840180; Thu, 12 Nov 2015 11:49:59 -0500 (EST)
Date: Thu, 12 Nov 2015 11:49:59 -0500
From: root <root@mydomain.vn>
To: root@edu.vn
Subject: test
Message-ID: <20151112164959.GA1466@mydomain.vn>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.20 (2009-12-10)

abc
:wq!

*** HEADER EXTRACTED deferred/E/EFFD840180 ***
*** MESSAGE FILE END deferred/E/EFFD840180 ***

Tùy theo cấu hình, Postfix liên lạc với nhau và gửi mail đang nằm trong các hàng đợi. Sử dụng lệnh postqueue -f để yêu cầu Postfix gửi ngay email đang nằm trong hàng đợi.

Bước 2: Kết nối với hệ thống DNS

Nhìn vào nội dung hàng đợi có thể thấy trạng thái các mail. Hiện tại đều có trạng thái là “connect to mail.edu.vn[1.2.3.4]:25: Connection refused”. Có thể thấy ngay địa chỉ IP của các máy chủ mail đang sai. Các thông báo lỗi chi tiết có thể được xem trong file log với lệnh “tail /var/log/maillog”. Sử dụng dịch vụ DNS để sửa lại các dịa chỉ IP của mail server cho đúng. Ví dụ, đối với zone “edu.vn”, cần cập nhật lại resource record kiểu MX:

$TTL 1D ; resource record can be cached by other server for maximum 1 day
$ORIGIN edu.vn.
@       IN      SOA     ns1.edu.vn. hostmaster.edu.vn. (
                        20151108        ; serial
                        1D      ; refresh
                        1H      ; retry
                        1W      ; expire
                        3H )    ; minimum
                NS      ns1.edu.vn.
                MX 10   mail.edu.vn.
ns1             A       192.168.56.4
mail            A       192.168.56.4
			 

Xử lý tương tự trên máy chủ DNS zone “mydomain.vn”:

$TTL 1D ; resource record can be cached by other server for maximum 1 day
@       IN      SOA     ns1.mydomain.vn. hostmaster.hp.vn. (
                        20151108        ; serial
                        1D      ; refresh
                        1H      ; retry
                        1W      ; expire
                        3H )    ; minimum
                NS      ns1.mydomain.vn.
                MX 10   mail.mydomain.vn.
ns1             A       192.168.56.3
mail            A       192.168.56.3
			 

Khợi động lại các dịch vụ DNS trên các máy chủ DNS và dùng nslookup kiểm tra các máy chủ mail.mydomain.vnmail.edu.vn đã được cập nhật địa chỉ IP đúng.

Bước 3: Kiểm tra và vận hành hệ thống

Sử dụng postqueue -f để yêu cầu postfix chuyển tiếp tất cả các mail trong hàng đợi và lại kiểm tra hàng đợi bằng postqueue -p:

> postqueue -f
> postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
7411B4019A      397 Thu Nov 12 12:02:32  root@mydomain.vn
(connect to mail.edu.vn[192.168.56.4]:25: Connection refused)
hp@edu.vn

EFFD840180      402 Thu Nov 12 11:49:59  root@mydomain.vn
(connect to mail.edu.vn[192.168.56.4]:25: Connection refused)
root@edu.vn

-- 1 Kbytes in 2 Requests.

Có thể thấy các mail vẫn chưa được chuyển đi nhưng trạng thái đã thay đổi (chuyển thành “Connection refused”) cùng với các địa chỉ IP của mail server đã được cập nhật chính xác. Có thể phán đoán được rằng postfix trên máy mydomain.vn đã tìm được đúng địa chỉ IP của mail server cho tên miền “edu.vn” nhưng khi kết nối thì chưa thành công.
Lý do ở đây là vấn đề đảm bảo an ninh. Postfix được cấu hình mặc định không nhận chuyển tiếp mail từ bên ngoài. Nó chỉ nhận mail qua card mạng localhost. Trong tình huống hiện tại, các Postfix trên máy mail.edu.vnmail.mydomain.vn cần phải liên lạc với nhau qua cổng 25. Có thể kiểm tra bằng lệnh telnet vào cổng 25 hoặc netstat xem các dịch vụ của hệ thống đang nghe kết nối trên card mạng nào:

> netstat -a | grep smtp
tcp        0      0 localhost:smtp              *:*                         LISTEN
tcp        0      0 localhost:smtp              *:*                         LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     10785  private/smtp

Sửa lại tham số inet_interfaces trong file cấu hình /etc/postfix/main.cf để cho phép Postfix nhận kết nối từ tất cả các card mạng của máy chủ:

net_interfaces = all

Khởi động lại dịch vụ Postfix và kiểm tra với netstat:

> service postfix restart
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]
> netstat -a | grep smtp
tcp        0      0 *:smtp                      *:*                         LISTEN
tcp        0      0 *:smtp                      *:*                         LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     26792  private/smtp

Sử dụng postqueue -f để yêu cầu chuyển tiếp mail trong hàng đợi và check lại bằng postqueue -p. Khi mail đã được chuyển đi thành công, sử dụng mail hoặc mutt trên các máy chủ mail.edu.vnmail.mydomain.vn để kiểm tra gửi nhận mail đã chạy tốt giữa 2 domain.