Triển khai mail server trên linux

29/10/2020 10:54 | Lượt xem : 265

Bài viết này, BKNS xin hướng dẫn các bạn triển khai mail server đơn giản trên hệ điều hành linux (cụ thể là Centos 7) và hoàn toàn miễn phí. Trên nền tảng linux ta có 2 ứng dụng mã nguồn mở nổi tiếng đó là Postfix và Dovecot.

Triển khai mail server trên linux

  • Postfix dùng để thiết lập dịch vụ gửi mail đến các MDA. Postfix được gọi là một MTA – Mail Transfer Agents và nó sử dụng giao thức SMTP với cổng 25 truyền thống để gửi email.
  • Dovecot dùng để thiết lập một dịch vụ nhận và chuyển tiếp mail đến từng mail box, nó là một MDA – Mail Delivery Agent. Dịch vụ này chạy với các giao thức IMAP, POP3 trên cổng 143 và cổng 110.

1. Cài đặt và cấu hình Postfix 

Chạy lệnh bên dưới để cài đặt gói:

# yum -y install postfix

Chỉnh sửa file config postfix: /etc/postfix/main.cf

# vi /etc/postfix/main.cf

Di chuyển đến cuối file và thêm các dòng lệnh sau:

myhostname = mail.yourdomain.com #thay bằng tên miền của bạn
mydomain = yourdomain.com #thay bằng tên miền của bạn
myorigin = $myhostname
myorigin = $mydomain
inet_interfaces = all
  • Cấu hình  SASL cho Postfix

Chạy lệnh bên dưới để cài đặt gói:

# yum -y install cyrus-sasl

Chỉnh sửa file config postfix: /etc/postfix/main.cf

# vi /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Khởi động và cho phép dịch vụ chạy:

# systemctl restart postfix
# systemctl enable postfix
  • Cấu hình firewallD cho phép dịch vụ SMTP
# firewall-cmd --permanent --add-service=smtp
# firewall-cmd --reload

Kiểm tra xem port 25 đã được chạy hay chưa.  Sử dụng lệnh sau:

# sudo lsof -i:25
Trạng thái port (Listen) là port đang hoạt động
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
exim 826 mail 4u IPv4 15958 0t0 TCP *:smtp (LISTEN)

2. Cài đặt Dovecot IMAP và POP3 Server

  • Cài đặt gói dịch vụ Devecot
# yum -y install dovecot
  • Cấu hình Devecot

cho phép giao thức và daemon service chạy trên Devecot

Sửa cấu hình trong đường dẫn /etc/dovecot/dovecot.conf

# vi /etc/dovecot/dovecot.conf

Tìm và sửa dòng lệnh sau thành:

protocols = imap imaps pop3 pop3s

Cho phép và khởi động dịch vụ:

# systemctl start dovecot
# systemctl enable dovecot

Thực hiện cấu hình cho phép dịch vụ trên tường lửa:

# firewall-cmd --permanent --add-port=110/tcp
success
# firewall-cmd --permanent --add-port=143/tcp
success
# firewall-cmd --permanent --add-port=995/tcp
success
# firewall-cmd --permanent --add-port=993/tcp
success
# firewall-cmd --reload

3. Kiểm tra email

Kiểm tra bằng cách gửi 1 email xem đã thành công hay chưa. (ví dụ ở đây gửi 1 email đến tài khoản gmail cá nhân)

echo "test mail" | mail -s "check mail" 

Những email này có thể bị rơi vào Spam, vì vậy các bạn có thể kiểm tra chúng ở thư mục rác hoặc spam.

Cảm ơn bạn đã đón đọc bài viết. Có thể bạn cũng quan tâm đến Hướng dẫn cài đặt mail công ty trên iPhone, iPad iOS 9.x

Linh BKNS

Bước 1: Chuẩn bị

Nguyên liệu để chuẩn bị làm món "mail server" gồm có

  • Máy chủ Centos, có thể dùng Ubuntu cũng được nhưng bài viết này hướng dẫn cụ thể trên Centos
  • Tên miền với bản ghi mail.congty.com được trỏ đến địa chỉ IP của máy chủ nói trên. Trong bài viết này tên miền được sử dụng làm ví dụ là thuonghieuweb.com và tên miền con mail.thuonghieuweb.com được trỏ đến máy chủ 198.56.238.133.
  • Phần mềm mail client thông dụng là Outlook Express. Phiên bản sử dụng trong bài viết này là 2007.

Bước 2: Cài đặt

Trên nền tảng linux có 2 ứng dụng mã nguồn mở nổi tiếng và hoàn toàn miễn phí là dovecot và postfix. Dovecot dùng để thiết lập một dịch vụ nhận và chuyển tiếp mail đến từng mail box, nó là một MDA - Mail Delivery Agent. Dịch vụ này chạy với các giao thức IMAP, POP3 trên cổng 143 và cổng 110. Còn postfix dùng để thiết lập dịch vụ gửi mail đến các MDA. Postfix được gọi là một MTA - Mail Transfer Agents và nó sử dụng giao thức SMTP với cổng 25 truyền thống để gửi email. Việc cài đặt 2 dịch vụ này được thực hiện bằng một lệnh đơn giản như sau:

# yum install postfix dovecot

Sau khi cài đặt các gói trên, các bạn có thể kiểm tra version và kết quả của việc cài đặt bằng các lệnh như trong hình sau:

Triển khai mail server trên linux


Bước 3: Cấu hình dovecot

# vi /etc/dovecot.conf

Tìm kiếm và gỡ bỏ # ở các dòng sau:

protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir
pop3_uidl_format = %08Xu%08Xv
login_process_size = 64 
(lưu ý: chỉ áp dụng nếu như cấu hình trên Centos 64 bit)

Sau các bước cấu hình trên, hãy khởi động và kiểm tra dịch vụ dovecot

# service dovecot start
# telnet localhost 110

Nếu bạn có được hình vẽ sau là ok. (Nhớ bấm CTRL+ ] để thoát khỏi telnet port 110)

Triển khai mail server trên linux

Bước 4: Cấu hình postfix

# vi /etc/postfix/main.cf

Tìm kiếm, gỡ bỏ # và chỉnh sửa các dòng sau (lưu ý thay thuonghieuweb.com bằng tên miền của bạn, địa chỉ 198.56.238.0 thay bằng địa chỉ mạng lớp C của bạn ví dụ địa chỉ máy chủ của bạn là 113.17.35.45 thì địa chỉ mạng lớp C là 113.17.35.0/24)

  • myhostname = mail.thuonghieuweb.com
  • mydomain = thuonghieuweb.com
  • myorigin = $mydomain
  • inet_interfaces = all
  • mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  • mynetworks = 198.56.238.0/24, 127.0.0.0/8
  • relay_domains = $mydestination
  • home_mailbox = Maildir/

Sau các bước cấu hình trên, hãy khởi động và kiểm tra dịch vụ postfix

# service postfix start
# telnet localhost 25

Lưu ý: Hệ điều hành Centos thường bật sẵn dịch vụ sendmail là một dịch vụ tương tự như postfix và chiếm cổng 25, do vậy bạn nên kiểm tra dịch vụ này và tắt nó đi trước khi chạy postfix

# service sendmail status
# service sendmail stop

Nếu bạn có được hình vẽ sau là ok. (Nhớ bấm CTRL+ ] để thoát khỏi telnet port 25)

Triển khai mail server trên linux

Bước 5: Khắc phục lỗi firewall.

Trong một số trường hợp, bạn có thể không có được màn hình như trên, điều đó có thể là do iptable và selinux là 2 công cụ firewall của Centos đang được mở và nó kiểm soát chặt chẽ các lệnh thao tác với dovecot và postfix. bạn cần kiểm tra và tắt 2 cơ chế firewall này đi bằng các lệnh sau:

# service iptables status
# service iptables stop
# vi /etc/sysconfig/selinux
 và gõ vào 2 dòng dưới đây:
SELINUX=disable
SELINUXTYPE=targeted

Sau đó khởi động lại máy chủ. Nếu sau các bước trên mà các bạn vẫn gặp lỗi khi telnet vào dovecot và postfix thì bạn cần phải gửi cho chúng tôi xem tình huống cụ thể để bug lỗi. Còn nếu đã telnet được cổng 25 thì tiếp tục với các bước sau đây.

Bước 6: Gửi thử email từ localhost bằng lệnh telnet

Để gửi mail test chúng ta dùng lệnh telnet cổng 25 và user root sẵn có của Centost. Lệnh này sẽ tạo một email và gửi qua dịch vụ của postfix, cổng 25. Các bước thực hiện như trong hình vẽ bên dưới

Triển khai mail server trên linux

Giải thích các lệnh trong telnet port 25
- helo thuonghieuweb.com là chuỗi khởi đầu để mailserver thiết lập phiên giao dịch
- mail from: .... là xác định account của người gửi, tạm thời dùng account root
- rcpt to: ... để xác định địa chỉ mail người nhận
- data ....... là bắt đầu nội dung email
- Enter, sau đó gõ dấu . là để các định kết thúc của nội dung mail và bắt đầu gửi thư đi
- quit, là để thoát khỏi telnet port 25.

Lưu ý: Trong bước này các bạn có thể gặp lỗi 554 5.7.1: Relay access denied đừng quá lo lắng. Nguyên nhân là do phần mềm telnet client của bạn là phiên bản mới và khi kết nối đến localhost, nó sẽ dùng giao thức IPv6 thay cho IPv4, bạn chỉ cần thêm địa chỉ IPv6 loclahost vào dòng mynetworks trong file /etc/postfix/main.cf như sau là ổn:

mynetworks = 0.0.0.0/0, 127.0.0.0/8, [::1]/128

Bước 7: Khởi tạo các user

Khi bước 5 thành công có nghĩa là máy chủ này đã trở thành một mail server thực thụ. Bây giờ công việc còn lại là tạo các user theo yêu cầu của sếp mà thôi. Dovecot và Postfix sử dụng ngay các user của hệ điều hành làm account email. Nên các bạn có thể dùng lệnh useradd và lệnh passwd để tạo các user và gắn password cho các account này

#useradd hai
#passwd hai

Tuy nhiên cần lưu ý là các user này cần phải có một thư mục trong /home/ten user/Maildir để nhận các email. Các bạn tạo thư mục này và gắn quyền như sau:

#mkdir /home/hai/Maildir
#cd home/hai
#chmod -R 700 Maildir
#chown hai:hai Maildir

Sau này các bạn sẽ thấy là dovecot sẽ tạo thêm 3 thư mục trong Maildir là cur, new và tmp để lưu các email nhận về.

Lưu ý về users:

  • Trong centos thường có sẵn các users sau: root, admin vì vậy các bạn nên tránh tạo các user trùng tên với các user này. Nếu thực sự cần các email gắn với user này thì chỉ cần tạo thư mục nhưu trên, đặt password cho user
  • Trong /etc có file aliases là file gán các bí danh và user đại diện cho các user của hệ thống. Mở file này ra các bạn sẽ thấy có các users info, marketing, sales, support đã được gán là bí danh cho user postmaster. Do vậy nếu bạn có tạo các user trên cho người dùng mail thì sẽ gặp lỗi là các mail gửi đến các user này đều được gửi cho root. Muốn các email này hoạt động bình thường, bạn cần khóa các dòng gán bí danh này lại bằng cách đặt trước đó một dấu #, sau đó khởi động lại dịch vụ mail

Sau khi đã có user chúng ta có thể dùng các lệnh của POP3 để kiểm tra việc nhận mail. Trước hết hãy quay lại bước 6 nói trên để gửi thử một email đến user vừa tạo (trong ví dụ là ) hoặc lấy một hòm thư yahoo, gmail gửi đến địa chỉ mail này cũng được. Sau đó trong linux gõ lệnh:

# telnet localhost pop3 (hoặc # telnet localhost 110)

Bạn sẽ thấy màn hình như ở bước 3. Giờ chúng ta dùng các lệnh sau để kiểm tra email có đến hòm thư hay không (hình ảnh trong ví dụ này là hòm thư )

Triển khai mail server trên linux

Giải thích:

- lệnh user testmail là lệnh đăng nhập vào hòm thư với user testmail.

- lệnh pass anna là lệnh cung cấp password để kiểm tra password là anna

- lệnh list để kiểm tra xem có bao nhiêu email trong inbox, trong hình ảnh ví dụ, có 4 email.

- lệnh retr 4 là đọc email số 4, sau lệnh này nội dung email sẽ được list ra, tuy nhiên trong hình bạn không thấy nội dung mail vì tôi đã cắt đi.

- khi đọc xong mail chúng ta gõ lệnh quit để ra khỏi dovecot.

    Bước 8: Làm việc với Outlook

    Sau khi đã có mail server, bạn có thể check mail bằng bất cứ phần mềm mail client nào. Trong hướng dẫn này chúng tôi thực hành trên outlook 2007. Vấn đề check mail trên webmail thông qua trình duyệt sẽ được đề cập đến ở một bài viết khác. Việc khai báo cấu hình Oulook các bạn cũng đã quá quen thuộc rồi nên tôi chỉ có mấy lưu ý sau:

    - Vì server này là dùng riêng cho một tên miền nên phần account setting chỉ cần gõ username mà không cần gõ đầy đủ @tên miền, như hình vẽ dưới đây:

    Triển khai mail server trên linux

    - Trong phần More Setting, đừng đánh dấu vào mục My outgoing server (SMTP) requires authentication. Do cấu hình postfix nói trên ở dạng mì ăn liền nên tôi chưa hướng dẫn các bạn cài đặt authentication method cho SMTP khi gửi mail. Việc authentication cho SMTP sẽ bàn sau.
    - Do outlook là client offline và có thể làm việc từ nhiều địa chỉ IP khác nhau và do vậy khi bạn kết nối vào internet và gửi mail từ outlook đến postfix server sẽ bị báo lỗi là 554 5.7.1: Relay access denied. Để khắc phục lỗi này bạn phải mở rộng phạm vi mạng tin cậy trong cấu hình postfix như sau:

    # vi /etc/postfix/main.cf

    Tìm kiếm và sửa nội dung như sau:

    mynetworks = 0.0.0.0/0, 127.0.0.0/8 (chấp nhận client từ internet và tất cả các mạng)

    Sau đó khởi động lại postfix bằng lệnh #postfix reload