Bài viết này sẽ hướng dẫn các bạn cách cài mail server trên CentOS 7 một cách cơ bản. Ở đây chúng tôi sử dụng Postfix cho SMTP, Dovecot cho POP/ IMAP và Dovecot SASL cho SMTP AUTH. Hãy đảm bảo rằng bạn đã gán IP tĩnh cho server và có kết nối internet để cài đặt và chú ý là IP tĩnh của các bạn không được nằm trong blacklist của các hệ thống chống thư rác nhé.
Thay đổi hostname.
Để đổi tên server, ta dùng lệnh sau
[root@mail ~]# hostnamectl set-hostname mail.langcongnghe.com
Để lưu lại tên của máy chủ ta mở file /ect/hosts bằng lênh.
[root@mail ~]# vi /ect/hosts
Sau đó thêm dòng sau đây vào cuối file (nhớ là sửa ip và domain của các bạn nhé).
107.172.217.178 mail.langcongnghe.com
Cài đặt các gói.
Vậy là xong được phần mở đầu, tiếp theo chúng ta bắt đầu chạy lệnh để hệ thống cập nhật phiên bản mới nhất
[root@mail ~]# yum -y update
Chúng ta cần cài đặt 3 gói postfix, dovecot và opendkim. Do opendkim lưu thông tin cài đặt trên gói EPEL cho nên chúng ta cần cập nhật lại gói này.
[root@mail ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Bây giờ thì mọi thứ đã sẵn sàng rồi, bắt đầu cài đặt các gói cần thiết nào.
[root@mail ~]# yum -y install postfix dovecot opendkim
Cài xong thì mình bật chế độ tự chạy sau khi khởi động hệ điều hành.
[root@mail ~]# systemctl enable postfix [root@mail ~]# systemctl enable dovecot [root@mail ~]# systemctl enable opendkim
Cấu hình Postfix
Đầu tiên là bạn cần có chứng chỉ SSL, có hai cách để có được chứng chỉ SSL đó là mua SSL do các là cung cấp chứng chỉ đại trà cung cấp (tôi mua trên https://ssls.com giá cũng tương đối rẻ) hoặc tự tạo self-certificate. Ưu điểm của SSL mua là rất an toàn và được chấp nhận bởi hầu hết các ứng dụng, còn với self-certificate thì độ tin cậy với các ứng dụng kém hơn nên mỗi khi mở lên sẽ phải xác nhận thông tin để đảm bảo an toàn.
Tạo thư mục để lưu ssl bằng lệnh sau.
[root@mail ~]# mkdir /etc/postfix/ssl
Bây giờ mở file /etc/postfix/main.cf để thay đổi.
[root@mail ~]# vi /etc/postfix/main.cf
Thêm các dòng sau vào cuối file.
myhostname = mail.langcongnghe.com mydomain = langcongnghe.com myorigin = $mydomain home_mailbox = mail/ mynetworks = 127.0.0.0/8 inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtp_tls_security_level = may smtpd_tls_security_level = may smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_key_file = /etc/postfix/ssl/server.key smtpd_tls_cert_file = /etc/postfix/ssl/server.crt smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
Mở file /etc/postfix/master.cf, thêm dòng lệnh bên dưới sau dòng “smtp inet n – n – – smtpd”.
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Đến đây là xong phần cấu hình cho postfix, các bạn kiểm tra lại xem có lỗi postfix có bị lỗi làm gì hay không băng lệnh sau, nếu không hiển thị ra cái gì thì có nghĩa là không có lỗi nhé các bạn.
postfix check
Tiếp theo đến phần cấu hình Dovecot SASL cho SMTP Auth. Mở file /etc/dovecot/conf.d/10-master.conf, tìm dòng “# Postfix smtp-auth” và thêm các dòng bên dưới.
unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }
Mở file /etc/dovecot/conf.d/10-auth.conf, tìm “auth_mechanisms = plain” và thêm login vào giá trị như bên dưới.
auth_mechanisms = plain login
Cấu hình Postfix hoàn thành rồi đấy. Bây giờ khởi động lại cả postfix thôi.
[root@mail ~]# systemctl restart postfix
Thêm các rule tường lửa để cho phép các port 25, 587, 465.
Anh em dùng iptable thì chạy lệnh này
[root@mail ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 25,465,587 -j ACCEPT [root@mail ~]# service iptables save
Dùng firewalld thì chạy lệnh này
[root@mail ~]# firewall-cmd --permanent --add-service=smtp [root@mail ~]# firewall-cmd --permanent --add-port=587/tcp [root@mail ~]# firewall-cmd --permanent --add-port=465/tcp [root@mail ~]# firewall-cmd --reload
Bây giờ hãy kiểm tra kết nối của từng cổng 25,587,465 bằng telnet. Hãy đảm bảo rằng bạn nhận được dòng AUTH PLAIN LOGIN sau khi phát lệnh ehlo mail.langcongnghe.com trong telnet. Bước tiếp theo trong cài mail server trên CentOS 7 là cấu hình Dovecot.
Cấu hình Dovecot
Mở file /etc/dovecot/conf.d/10-mail.conf, tìm #mail_location và thêm directory giống như home_mailbox trong file config của postfix.
mail_location = maildir:~/mail
Mở file /etc/dovecot/conf.d/20-pop3.conf, tìm và uncomment bên dưới.
pop3_uidl_format = %08Xu%08Xv
Khởi động lại dovecot.
[root@mail ~]# systemctl restart dovecot
Thêm rule tường lửa để cho phép port 110,143,993 và 995.
iptables
[root@mail ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 110,143,993,995 -j ACCEPT [root@mail ~]# service iptables save
firewalld
[root@mail ~]# firewall-cmd --permanent --add-port=110/tcp [root@mail ~]# firewall-cmd --permanent --add-service=pop3s [root@mail ~]# firewall-cmd --permanent --add-port=143/tcp [root@mail ~]# firewall-cmd --permanent --add-service=imaps [root@mail ~]# firewall-cmd --reload
Kiểm tra kết nối của các port 110,143,993 và 995 bằng telnet. Sau đó, hãy tạo tài khoản user.
Tạo tài khoản người dùng
Bây giờ tạo một tạo khoản để kiểm tra thử. Tạo tài khoản người dùng với /sbin/nologin shell để hạn chế quyền truy cập đăng nhập.
[root@mail ~]# useradd -m phongph -s /sbin/nologin [root@mail ~]# passwd phongph
Xong rồi thì dùng outlook hay bất kể một mail client nào mà các bạn hay dùng hãy thử đăng nhập vào xem đã được chưa nhé.
Cấu hình DKIM
Lưu ý là bản cài đặt DKIM mình áp dụng cho multi domain nhé nếu sử dụng 1 domain thì bỏ đi cấu hình domain thứ 2 là được!
Mở file /etc/opendkim.conf
[root@mail ~]# vi /etc/opendkim.conf
Lưu ý chỉ cần chỉnh sửa các dòng sau còn lại thì comment
PidFile /var/run/opendkim/opendkim.pid Mode sv Syslog yes SyslogSuccess yes LogWhy yes UserID opendkim:opendkim Socket inet:8891@127.0.0.1 Umask 002 SendReports yes SoftwareHeader yes Canonicalization relaxed/simple Domain langcongnghe.com Selector default MinimumKeyBits 1024 KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts OversignHeaders From
Cấu hình KeyTable: /etc/opendkim/KeyTable
# Cấu hình cho domain mặc định sử dụng DKIM default._domainkey.langcongnghe.com langcongnghe.com:default:/etc/opendkim/keys/default.private # Cấu hình cho domain thứ 2 sử dụng DKIM mail._domainkey.moffice.vn moffice.vn:mail:/etc/opendkim/keys/mail.private
Cấu hình SigningTable: /etc/opendkim/SigningTable
# Cấu hình cho domain mặc định *@langcongnghe.com default._domainkey.langcongnghe.com # Cấu hình cho domain thứ 2 *@moffice.vn mail._domainkey.moffice.vn
Cấu hình TrustedHosts: /etc/opendkim/TrustedHosts
127.0.0.1 ::1 #host.example.com #192.168.1.0/24 # Danh sách domain *.langcongnghe.com *.moffice.vn
Tạo khoá công khai và khoá bí mật.
# Tạo khóa mặc định dành cho domain mặc định là default.private và default.txt opendkim-default-keygen # Tạo khóa cho doamin thứ 2 với tên là mail.private và mail.txt opendkim-genkey -s mail -d lmoffice.vn # hoặc dùng lệnh này opendkim-genkey -D /etc/opendkim/keys/ -d moffice.vn -s mail
Tạo quyền cho khóa để Postfix có thể truy cập đọc được
chown opendkim:opendkim mail.private
Lúc này bạn sẽ có 1 file .private và 1 file .txt. Mở file .txt để lấy thông tin khóa cấu hình trên DNS, các bạn copy nguyên phần v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI…. sau đó tạo một bản ghi TXT trên DNS của domain với name = default._domainkey và value = “v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI…”.
Tiếp theo cấu hình Postfix nhận openDKIM. Mở file: /etc/postfix/main.cf và thêm cấu hình sau vào cuối file.
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 2
Cuối cùng khởi động lại service Postfix và Opendkim
systemctl restart postfix systemctl restart opendkim
Kiểm tra lại SPF và DKIM
Có 2 cách để kiểm tra, cách thứ nhất là gửi một email đến địa chỉ check-auth@verifier.port25.com sau đó nhận email thông báo kết quả check. Cách 2 là gửi email đến hòm thư của bạn ở gmail, sau đó xem trong phần “Show original” bạn sẽ thấy thông tin google check DKIM mail server của bạn.
Trên đây là toàn bộ các bước trong bài hướng dẫn cách cài đặt mail server trên centos 7. Nếu bạn có góp ý gì thì hẫy để lại ý kiến của mình trong phần bình luận. Nếu thấy bài viết hay và hữu ích thì hãy cho chúng tôi một chia sẻ. Xin chân thành cảm ở và chúc các bạn thành công.