Hôm trước mình có hướng dẫn các bạn cách cài đặt một Mail Server với iRedMail, tuy nhiên cách đó vẫn hơi phức tạp. Hôm nay mình sẽ giới thiệu một cách mới, cài đặt Mail Server dễ dàng hơn với Mail-in-a-Box.

Mail-in-a-box

Thay vì đưa ra rất nhiều tùy chọn khi cài đặt như iRedMail thì Mail-in-a-Box giúp bạn lựa chọn những gì tốt nhất và tự động cài đặt. Với kinh nghiệm quản lý Mail Server hơn 15 năm của tác giả Joshua Tauberer, chúng ta có thể hoàn toàn tin tưởng sử dụng Mail-in-a-Box.

Để bảo mật cho server, Mail-in-a-Box sử dụng Fail2ban và SSL certificate (self-signed). Nó cũng tự cấu hình UFW firewall và chỉ mở những port cần thiết. Ngoài ra, để chống spam, Mail-in-a-Box sử dụng các tính năng bảo mật như graylisting, SPF, DKIM, DMARC, opportunistic TLS, strong ciphers, HSTS, và DNSSEC (với DANE TLSA).

Mail-in-a-Box được thiết kế để xử lý SMTP, IMAP/POP, spam filtering, webmail, và thậm chí tự quản lý DNS, bạn sẽ không cần phải cấu hình SPF, DKIM bằng tay nữa. Tuy nhiên, không phải nhà cung cấp domain nào cũng hỗ trợ tạo Nameserver record nên mình sẽ không hướng dẫn trong bài này.

Mục tiêu cuối cùng: tạo được Mail Server hoạt động độc lập với domain chính pibox.vn, sử dụng subdomain mail.pibox.vn. Email có dạng account@pibox.vn.

1. Deploy VPS ở Vultr

Để cài được Mail-in-a-Box, bạn cần sử dụng hệ điều hành Ubuntu 14.04 x86-64, trong bài này mình sử dụng VPS ở Vultr. VPS cần ít nhất 768 MB RAM, tốt nhất nên là 1GB.

Email tên miền mình sử dụng vẫn là pibox.vn, tên miền mới tinh nên khả năng cao email gửi đi sẽ bị vào Spam. Mình sẽ dùng tên miền này để tìm cách đảm bảo email gửi đi vào được Inbox. DNS quản lý ở CloudFlare.

Sau khi tạo Deploy xong VPS ở Vultr, bạn hãy vào tab IPv4 để update Reverse DNS về mail.pibox.vn. Nhớ trỏ record mail của tên miền về địa chỉ IP của VPS nữa nhé.

Vultr Reverse DNS

Tạo MX  record

– Để nhận được mail, bạn hãy tạo record MX với name là pibox.vn, Server: mail.pibox.vn và Priority mặc định 1

– Ngoài ra, để xác nhận chính xác mail được gửi đi từ server, bạn cần thêm một record SPF nữa. Record type: TXT, Name: pibox.vn với Content: v=spf1 ip4:IP_ADDRESS -all

Kết quả tương tự như hình bên dưới:

DNS Records

Để test SPF record bạn có thể sử dụng http://mxtoolbox.com với câu lệnh: spf:domain.com

Thay đổi hostname

Đảm bảo hostname của VPS được chuyển thành pibox.vn.

echo "pibox.vn" > /etc/hostname
hostname -F /etc/hostname

Thay đổi tiếp trong file hosts

nano /etc/hosts

Thêm một dòng chứa IP nếu chưa có, ví dụ của mình:

45.63.59.104     mail.pibox.vn

Restart lại VPS shutdown -r now và chạy lệnh hostname xem đã chuẩn chưa nhé.

root@pibox:~# hostname
pibox.vn

2. Cài đặt Mail-in-a-Box

Script cài đặt Mail-in-a-Box sẽ tự động cài toàn bộ những package cần thiết. Chúng ta chỉ cần chạy duy nhất một lệnh đơn giản:

curl -s https://mailinabox.email/bootstrap.sh | sudo bash

Bạn sẽ nhận được một thông báo giới thiệu về Mail-in-a-Box như sau, nhấn Enter để tiếp tục.

Mail-in-a-Box Installation

Tiếp theo hãy nhập tài khoản mail admin.

Mail-in-a-Box Admin Email Address

Trong bảng Hostname, hãy sử dụng subdomain mail.

Mail-in-a-Box Hostname

Country Code hãy chọn, VN Vietnam, nó ở ngay trên cùng.

Mail-in-a-Box Country

Sau đó, quá trình cài đặt sẽ tự động diễn ra. Bạn hãy nhập password cho tài khoản admin khi được hỏi:

Okay. I'm about to set up admin@pibox.com for you. This account will also have access to the box's control panel.
password:

Nếu không có vấn đề gì xảy ra, cuối cùng bạn sẽ nhận được thông báo như bên dưới:

mail user added
added alias postmaster@pibox.vn (=> administrator@mail.pibox.vn)
added alias hostmaster@mail.pibox.vn (=> administrator@mail.pibox.vn)
updated DNS: pibox.vn
web updated

alias added
added alias admin@mail.pibox.vn (=> administrator@mail.pibox.vn)
added alias postmaster@mail.pibox.vn (=> administrator@mail.pibox.vn)

-----------------------------------------------

Your Mail-in-a-Box is running.

Please log in to the control panel for further instructions at:

https://45.63.59.104/admin

You will be alerted that the website has an invalid certificate. Check that
the certificate fingerprint matches:

A5:31:33:99:80:61:D3:F0:DC:F2:B6:35:44:C7:1B:AF:98:8C:05:84

Then you can confirm the security exception and continue.

3. Cấu hình Mail-in-a-Box

Bây giờ các bạn có thể truy cập vào trang quản lý Mail-in-a-Box có dạng http://ip_address/admin, login sử dụng tài khoản và password như đã nhập trong bước trước.

Bởi vì server sử dụng chứng chỉ self-signed, nên bạn sẽ nhận được cảnh báo warning như bên dưới, hãy nhấn Advanced, rồi Proceed.

Certificate Warning

Giao diện trang admin sẽ như sau:

Admin Interface

  • System: cấu hình và quản lý hệ thống
  • Mail: thêm/sửa/xóa account và các thông tin IMAP/SMTP/Exchange/ActiveSync
  • Contacts/Calendar: thông số cấu hình để synchronize trên các thiết bị di động hoặc ứng dụng
  • Web: nội dung khi truy cập mail.pibox.vn
  • Version: phiên bản hiện tại và kiểm tra nâng cấp

Việc cần làm đầu tiên là vào menu System, chọn External DNS để Mail-in-a-Box kiểm tra tình trạng hiện tại và đưa ra các thông số cấu hình domain. Bước này rất quan trọng do chúng ta không sử dụng chức năng quản lý DNS của Mail-in-a-Box, không thực hiện thì email gửi đi sẽ bị vào SPAM.

Các thông tin đưa ra như bên dưới:

Mail-in-a-Box External DNS

Tiếp theo, bạn hãy vào CloudFlare và add từng record như thông tin Mail-in-a-Box cung cấp (bỏ qua ns1.mail.pibox.vn và ns2.mail.pibox.vn). Cần add những record Required và Recommended, Optional thì tùy từng DNS Server mà có hỗ trợ hay không. Đây là điểm mình đánh giá rất cao, bạn cứ copy rồi paste thôi, vậy là đảm bảo domain được cấu hình chuẩn rồi.

Lưu ý: có thể mất một khoảng thời gian để DNS được cập nhật xong, lúc này kết quả mới chính xác nhất. Đừng vội lo lắng khi email của bạn bị rơi vào SPAM.

4. Truy cập Webmail và gửi Email

Sau khi cấu hình các bản ghi cho tên miền, các bạn truy cập link https://mail.pibox.vn/mail để vào hòm mail. Giao diện Roundcube quen thuộc sẽ xuất hiện:

Mail-in-a-Box Roundcube

Giờ hãy login và gửi thử sang Gmail, sẽ thấy mail bay thẳng vào Inbox luôn.

Để email không bị coi là Spam cần lưu ý:

  1. Cấu hình đầy đủ SPF record, DKIM record cho tên miền.
  2. VPS cần cấu hình hostname chuẩn, nhớ restart lại VPS để check lại một lần nữa trước khi cài đặt tiếp.
  3. VPS cần cấu hình Reverse DNS chuẩn. Thường mất vài tiếng đến cả ngày mới update xong rDNS nên bạn cần kiên nhẫn.
  4. Với mỗi tài khoản mail, cần phải có Display Name. Cài đặt trong phần Settings/Identities/Display Name. Nên tạo tài khoản mới để test sendmail, đừng dùng tài khoản postmaster/admin.
  5. Cuối cùng cần đảm bảo IP của bạn không bị liệt vào danh sách blacklist: http://mxtoolbox.com/blacklists.aspx

5. Kết quả

Cuối cùng, mình đã cài đặt thành công một Mail Server với Mail-in-a-Box. Đặc biệt Mail Server hoạt động độc lập với Web Server.

Đường link để đăng nhập có dạng http://mail.pibox.vn; email có dạng account@pibox.vn. Tất nhiên bạn sẽ tạo được không giới hạn số tài khoản với Mail-in-a-Box.

Lưu ý: mình không khuyến khích các bạn tự cài đặt một Mail Server, nên sử dụng các dịch vụ trung gian cho email để đảm bảo hệ thống hoạt động ổn định, ví dụ như:

  • G Suite
  • Yandex
  • Zoho
  • Gandi (5 email address, 1.000 forwarding addresses )
  • GoDaddy (100 email alias)

Nếu muốn gửi email marketing, mời bạn tham khảo 2 nhà cung cấp nổi tiếng hiện nay là GetResponseSendy.

Chúc các bạn thành công!

Comment của bạn

Your email address will not be published. Required fields are marked *

103 Comments

  1. Khoa Nguyen 8 comment

    Xin chào!
    Ad có thể viết bài hướng dẫn chi tiết cài mail server để nhận và gửi mail trên VPS centos7 dùng hococvps script được ko Ad?
    Thanks!

    1. Việt Phương Moderator

      Trong chính bài viết đó bạn, Mail-in-a-Box
      Còn nếu bạn không có nhiều kinh nghiệm quản trị thì nên sử dụng MailServer bên thứ 3, như Yandex, Gsuite,…

  2. Thanh 2 comment

    sao tới bước đặt mật khẩu, mình bấm tất cả các phím mà cũng ko đặt mật khẩu.. cái bước này làm cách nào vậy bạn.. mong hướng dẫn bấm nút nào để đặt được password..

    1. Việt Phương Moderator

      Mật khẩu vẫn được ghi nhận nhưng sẽ không hiện trên màn hình bạn nhé. Bạn cứ gõ bình thường thôi

    1. Việt Phương Moderator

      Bị redirect lặp nhé. Bạn kiểm tra cấu hình web server liên quan

      1. chinh 12 comment

        có phải chỉnh sửa trong cloudflare phải không ạ
        domain e trở về cloudflare r đó a

        1. Việt Phương Moderator

          Không. Trong VPS. Còn CF thì bạn có thể tắt đám mây vàng(nếu bật)

  3. 18 comment

    Cài mailinabox xong mình có chạy luôn web php được không ad
    Mình cài ssl xong toàn báo lỗi 403 Forbidden là sao nhỉ

    1. Việt Phương Moderator

      Không thấy team dev đề cập gì, mình nghĩ là không giới hạn

  4. Ngô Văn Hồng Phúc 6 comment

    mình ko biết về server mail, cho mình hỏi. Cấu hình như trên thì gưi bao nhiêu email / ngày hoặc /giờ
    cám ơn.

    1. Việt Phương Moderator

      Mail Server của bạn nên trừ giới hạn từ chính nhà cung cấp VPS còn đâu thì thoải mái nhé

      1. Ngô Văn Hồng Phúc 6 comment

        như gói vps ở trên hướng dẫn thì gửi dc bao nhiêu email / ngày vậy Mod, cám ơn nhiều

  5. Jack Man 18 comment

    Làm sao để đọc mail của tất cả user thông qua API của mail-in-a-box bằng tài khoản admin nhỉ?
    Mình tìm không thấy phần đọc nội dung.
    Có thể giúp mình vấn đề này được không ?

    1. Việt Phương Moderator

      Vấn đề này mình không rõ rồi, bạn nghiên cứu thêm xem sao

      1. Jack Man 18 comment

        bên forum mail-in-a-box, họ bảo chỉ có thể xem từng tài khoản qua IMAP, nhưng mình vẫn chưa tìm được chỗ lưu data mail cho toàn bộ user trên server, nếu biết được file thì có thể lấy được rất nhanh vì mail-in-a-box dùng sqlite.
        Still find it….

  6. Dũng 10 comment

    Chào ad! Cho em hỏi ngu chút là e dùng smtp của yandex để gửi mail nhưng khi lên vps của digital thì nó lại không gửi được. Vậy khi khởi tạo vps trên đó có cần phải cài đặt những thứ này không ạ? Em cảm ơn!

    1. Việt Phương Moderator

      1. Có thể bân đó họ chặn hoặc VPS chặn cổng SMTP 25. Phải xem log mới biết ntn
      2. Không, cái này là mail server riêng rồi. Bạn dùng mail server Yandex mà

          1. Việt Phương Moderator

            Vậy bạn dùng gì để gửi mail? Hay tự code? Nếu WordPress thì bạn dùng SMTP WordPress thông báo ntn

          2. Việt Phương Moderator

            Không báo gì, không có log gì thì chịu thôi không phán định được bạn à

          3. Dũng 10 comment

            Em thấy nó báo

            Apr 9 13:49:35 digitalocean postfix/postfix-script[1405]: starting the Postfix mail system
            Apr 9 13:49:35 digitalocean postfix/master[1406]: daemon started — version 2.6.6, configuration /etc/postfix

            Như vậy là sao ạ? Mong Việt Phương hỗ trợ em!

          4. Việt Phương Moderator

            Thông báo dạng bình thường, không phải lỗi hay gì cả. Chịu rồi
            Thế bạn gửi mail test từ server thì có gửi đc không
            echo "Subject: test" | /usr/lib/sendmail -v support@hocvps.com

          5. Dũng 10 comment

            Em đã check và kết quả là cổng 25 có mở và tài khoản của em cũng đúng bác ạ.

  7. 18 comment

    Cái này có tốn nhiều tài nguyên ko Luân, mình cài trên vps 128mb của ramnode đc ko?
    Mình định dùng để nhận mail ( nhiều mail) liệu có bị suspend vps ko?

  8. sgdavid 1 comment

    Sao e reinstall vps cài lại mấy lần rồi mà vẫn bị lỗi này nhỉ
    Nó cứ chạy đến đây là dừng lại
    Download of http://download.z-push.org/final/2.3/z-push-2.3.8.tar.gz did not match expected checksum.
    Found:
    66b1613faef61590836682ff1a43d559827fe08b /tmp/z-push.tar.gz

    Expected:
    aae5093212ac0b7d8bf2d79fd5b87ca5bbf091cb /tmp/z-push.tar.gz

  9. Hai Au 1 comment

    Luân Trần ơi mình sử dụng vps của Vultr Ubuntu 14.04 x64.
    DNS quản lý ở Godaddy
    mình setup theo các bước bạn hướng dẫn cho domain abcxyx.com (tên domain đã thay đổi)
    mình tạo account mới test1@abcxyz.com để test và kết quả như sau:
    – gửi mail từ test1@abcxyz.com tới gmail -> vào spam
    – gửi từ gmail tới test1@abcxyz.com -> lỗi: Address not found
    Your message wasn’t delivered to test1@abcxyz.com because the address couldn’t be found. Check for typos or unnecessary spaces and try again.

    cho mình hỏi:
    – làm sao để gửi vào gmail ko bị vào spam
    – làm sao để nhận được mail

    thanks.

    1. Việt Phương Moderator

      _Bộ lọc của Google mạnh bạn à. Bạn áp dụng các bước của Để email không bị coi là Spam cần lưu ý: chưa?
      _Bạn tạo MX record chưa?

  10. Nguyễn Thiên Thuật 1 comment

    Vậy là mỗi 1 domain muốn dùng là phải setup 1 lần hả em? hay setup 1 lần có thể add nhiều domain?

  11. Dũng 1 comment

    Mình dùng VPS của vultr, mình chỉ cấu hình được rDNS của IPV6 thôi, không có phần cho IPV4, và mail vẫn cứ vô phần spam. Có cách nào giải quyết không bạn ?

  12. Đinh Lê Giang 51 comment

    Cảm ơn bác Luân nha. Đã cài đặt thành công
    Gửi và nhận đều vô inbox
    Đã test trên web/thunderbird/outlook2013/mobile Android đều dễ dàng

    1. Trinh Nguyen 34 comment

      mình cài, cấu hình hoài mà vẫn vô spam 🙁 buồn ghê là buồn

  13. Thuc Le 13 comment

    Ủa Luân cho mình hỏi, cài xong hết rồi mà nó bị chặn port 25, mình dùng mấy cái hướng dẫn trên mạng để open port 25 như:
    sudo iptables -A INPUT -p tcp -m tcp –dport 25 -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -m tcp –dport 25 -m conntrack –ctstate ESTABLISHED -j ACCEPT

    rồi cũng thử: sudo ufw allow 25, sudo ufw reload, rồi mà lúc check status thì hệ thống vẫn báo port 25 bị chặn, bạn giúp mình với

    1. Luân Trần Admin

      Bạn dùng server ở đâu nhỉ, lưu ý một số nhà cung cấp chặn gửi mail nha

  14. Linh 1 comment

    Mình đang muốn cài mail server này chung với server vps centos đang chạy web
    cài có được không, có phải cấu hình gì đặc biệt ko luân

    1. Luân Trần Admin

      Không cài được nhé bạn, nếu dùng Mail-in-a-Box thì phải cài trên VPS mới

  15. Lữ Phú Hòa 17 comment

    Mọi người cho hỏi nếu đã có webserver LAMP rồi thì muốn install thêm phần email server này có smtp pop webmail thì minh làm sao nhỉ? vì để ý mail in a box chạy LEMP nhỉ?xin cảm ơn

    1. Luân Trần Admin

      Bạn phải tạo server mới tinh thì mới dùng được cái này nhé, không cài cùng webserver LAMP được.

  16. Nguyễn Hòa 1 comment

    Luân ơi cho mình hỏi POP3 nó nằm ở đâu vậy cậu? mình chỉ thấy có mục IMAP và SMTP mà thôi

  17. Văn Hùng 1 comment

    sao mình gửi thử vào 2 cái gmail của mình thì nó đều vào spam hết nhỉ, bạn Luân có cách khắc phục không?

  18. Nguyễn Minh Mẫn 1 comment

    Luân ơi cho mình hỏi “Thay đổi hostname” là chỗ nào nhỉ mình không tìm thấy

      1. Bang Nguyen 3 comment

        Cảm ơn Admin, nên cài email server nào thì phù hợp với gói vps 512mb Centos ạ? Postfix có được không nhỉ?

          1. Bang Nguyen 3 comment

            Hì, nếu không ngôn RAM nhiều thì tốt rùi. Thanks Admin Luân Trần (y)

  19. Hoàng Trần 1 comment

    Bạn nào có thể chỉ mình cách gửi hòm thư Gmail không bị vào mục Spam không ? mình đã cài đặt theo đúng yêu cầu của hệ thống. Với các Email doanh nghiệp khác (hoặc ngoài hệ thông gmail) thì vào inbox còn gửi trong hệ thống của Gmail hoàn toàn vào Spam. Bạn nào có cách khắc phục chỉ dẫn giúp mình với.

    Cám ơn !

  20. khoi 6 comment

    Mình cài gửi mail oke rùi 😀 Luân cho mình hỏi cách check xem smtp của nó là bao nhiêu không tại mình muon dùng outlook. Hay có bài hướng dẫn nào không Luân gửi mình nhé

    1. Thuc Le 13 comment

      Luân ơi , mình cũng bị tình trạng này, mình đang xài của thằng Vultr.com, port 25 mình đã mở rồi:

      https://thugianmotti.tinytake.com/sf/MTA3NDE5OV80MzEzNzI1
      mình thử dùng lệnh của bạn là: echo “Subject: test” | /usr/lib/sendmail -v admin@hocvps.com, kết quả là:

      root@mails:~# echo “Subject: test” | /usr/lib/sendmail -v admin@hocvps.com
      Mail Delivery Status Report will be mailed to .
      root@mails:~#

      bạn xem giúp mình với

      1. Luân Trần Admin

        Bạn liên hệ Vultr nhé, khả năng tài khoản của bạn mới, nên bị chặn send mail rồi.

  21. Quang Vinh 1 comment

    Network

    Outbound mail (SMTP port 25) seems to be blocked by your network. You will not be able to send any mail. Many residential networks block port 25 to prevent hijacked machines from being able to send spam. A quick connection test to Google’s mail server on port 25 failed.

    Mình cài đặt xong okie tất cả/
    – Nhân Email được cơ mà gửi đi thì bên kia không nhận được. Vấn đề giải quyết thế nào vậy bạn?

    Cám ơn !

        1. Luân Trần Admin

          Giờ bạn check xem server có block sendmail đi không nhé, sử dụng lệnh sau và quan sát output:
          echo "Subject: test" | /usr/lib/sendmail -v admin@hocvps.com

          1. Vũ Văn Hơn 5 comment

            Em cũng đang bị lỗi tương tự, dùng lệnh của anh thì lại bị báo là :
            root@mobanews:~# Subject: test” | /usr/lib/sendmail -v vuvanhon5793@gmail.com
            Subject:: command not found
            Mail Delivery Status Report will be mailed to .

            Anh coi lại giúp em

  22. can ho aqua 6 comment

    Luân ơi cho Mình hỏi nếu dùng digital ocean bước đầu tiên chỗ reverse dns mình có cần cấu hình không hay bỏ qua luôn Luân

  23. Tùng Thanh 8 comment

    Mail-in-a-Box only supports being installed on Ubuntu 14.04, sorry. You are running:

    Không cài được trên centos 7 hả mọi người 🙁

    1. Luân Trần Admin

      Cài đặt cái này bạn cần chuẩn bị một server mới tinh nhé, Reinstall VPS rồi cài lại thôi.

  24. Minh 1 comment

    Plan RAM / VSwap CPU
    512MB SVZ 512 / 256 MB 2 Cores
    với cấu hình đó đủ cài 1 email domain không bác?

  25. Nguyễn Thế Phu 2 comment

    Trong phần quản lý DNS của CloudFlare mình không thấy trường: SSHFP và TLSA ? Và Luân cho mình hỏi vì sao phải bỏ qua ns1.mail.pibox.vn và ns2.mail.pibox.vn như Luân nói ?

    1. Luân Trần Admin

      Nếu bạn tạo Nameserver riêng được thì tốt quá, đỡ phải verify những record khác.
      Do nhiều dịch vụ DNS không hỗ trợ tạo Nameserver nên mình không khuyến khích dùng thôi.

      1. Nguyễn Thế Phú 2 comment

        Mình đã cấu hình xong, gửi mail qua Gmail (tạm thời vào Spam). Luân cho mình hỏi các thông số để cài trên Microsoft Outlook.

        1. Luân Trần Admin

          Mình nhớ trong các page admin, có page cung cấp thông tin này đó bạn.

  26. Phong 2 comment

    Minh đã cài đặt thành công nhưng không hiểu sao gởi mail đến zoho thì được . nhưng gởi đến gmail thì không thấy đâu, có cách nào khắc phục không Luân?

    1. Luân Trần Admin

      Gmail nó có cơ chế chặn khác biệt, nhiều khi mail phải vài hôm mới xuất hiện. Hoặc nó sẽ xuất hiện trong Spam. Bạn check cẩn thận xem sao?

  27. Đức 16 comment

    Hmailserver chạy đc nhiều domain, nhưng phần giao diện webmail phải tìm mã nguồn mở trên mạng. Mình hay xài hmailserver với roncube. Cũng đáng đồng tiền bát gạo

  28. Ken Pham 2 comment

    Hi Luân, Không biết là có phần mềm nào có thể add nhiều domain vào 1 Mail Server không nhỉ hay mỗi VPS chỉ chạy được cho 1 domain thôi?