(+84) 236.3827111 ex. 402

Cấu hình máy chủ Email đơn giản nhất trên Linux - Phần 1


1.Giới thiệu cấu hình máy chủ Email

Để thiết lập một máy chủ email đơn giản đầy đủ chúng ta sẽ sử dụng Postfix làm máy chủ SMTP, Dovecot để cung cấp chức năng POP/IMAP và RoundCube là một chương trình webmail hoặc ứng dụng khách để người dùng có thể kiểm tra và nhận email từ web.

Trong đó:

  • Dovecot: là một máy chủ email sử dụng giao thức IMAP và POP3 mã nguồn mở cho các hệ thống Linux hoặc UNIX, được viết với mục đích bảo mật chủ yếu.
  • Postfix: Postfix là một mã nguồn mở dùng để định tuyến và chuyển thư điện tử từ máy chủ này sang máy chủ khác qua internet.
  • Roundcube: Khi các thư đã được gửi vào hộp thư, hầu hết người dùng sẽ cần một giao diện dễ sử dụng giúp họ có thể đọc thư. Roundcube là một ứng dụng đa ngôn ngữ dựa trên trình duyệt với giao diện người dùng giống như ứng dụng. Nó cung cấp đầy đủ chức năng mà chúng ta mong đợi từ một ứng dụng email, bao gồm hỗ trợ MIME, sổ địa chỉ, thao tác thư mục, tìm kiếm thư và kiểm tra chính tả.

2. Thiết lập máy chủ Email

Bước 1: Chúng ta cần thực hiện cập nhật và đặt hostname cho máy chủ của chúng ta:

Chúng ta bắt đầu với các gói mới nhất đảm bảo tất cả các bản vá lỗi trước đó được áp dụng:

[root@blogd-net-lab01 ~]# dnf update

CentOS-8 - AppStream 1.6 MB/s | 7.0 MB 00:04

CentOS-8 - Base 1.6 MB/s | 2.2 MB 00:01

CentOS-8 - Extras 6.2 kB/s | 5.9 kB 00:00

Dependencies resolved.

Nothing to do.

Complete!

Thực thi lệnh sau để đặt hostname cho máy chủ:

[root@blogd-net-lab01 ~]# hostnamectl set-hostname mail.blogd.net

Thực hiện khởi động lại máy chủ để áp dụng hostname mới:

[root@blogd-net-lab01 ~]# init 6

Sau khi khởi động lại, chúng ta sẽ kiểm tra hostname đã được cấu hình đúng chưa bằng cách thực thi chuỗi lệnh sau:

[root@mail ~]# hostname

mail.blogd.net

[root@mail ~]# hostname -s

mail

[root@mail ~]# hostname -f

mail.yandex.ru

[root@mail ~]# hostname -A

mail.blogd.net

[root@mail ~]# hostname -i

77.88.21.37 2a02:6b8::a4

[root@mail ~]# cat /etc/hostname

mail.blogd.net

Ngoài ra, kiểm tra xem tên miền có trả lời đúng các truy vấn cục bộ hay không bằng cách thực thi các lệnh bên dưới:

[root@mail ~]# getent ahosts mail.blogd.net

77.88.21.37 STREAM mail.yandex.ru

77.88.21.37 DGRAM

77.88.21.37 RAW

2a02:6b8::a4 STREAM

2a02:6b8::a4 DGRAM

2a02:6b8::a4 RAW

[root@mail ~]# ping blogd.net

PING blogd.net (157.230.45.115) 56(84) bytes of data.

64 bytes from 157.230.45.115 (157.230.45.115): icmp_seq=1 ttl=128 time=358 ms

64 bytes from 157.230.45.115 (157.230.45.115): icmp_seq=2 ttl=128 time=46.9 ms

64 bytes from 157.230.45.115 (157.230.45.115): icmp_seq=3 ttl=128 time=47.1 ms

^C

--- blogd.net ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 6ms

rtt min/avg/max/mdev = 46.941/150.849/358.481/146.818 ms

[root@mail ~]# ping mail.blogd.net

PING mail.yandex.ru (77.88.21.37) 56(84) bytes of data.

64 bytes from mail-yandex-ru-production-external.stable.qloud-b.yandex.net (77.88.21.37): icmp_seq=1 ttl=128 time=378 ms

64 bytes from mail-yandex-ru-production-external.stable.qloud-b.yandex.net (77.88.21.37): icmp_seq=2 ttl=128 time=418 ms

^C

--- mail.yandex.ru ping statistics ---

3 packets transmitted, 2 received, 33.3333% packet loss, time 3ms

rtt min/avg/max/mdev = 378.313/398.192/418.072/19.889 ms

Bước 2: Cài đặt postfix, Apache và PHP:

Chúng ta cần chuyển thư để xử lý việc gửi thư từ máy chủ email của chúng ta. Để cài đặt postfix, hãy chạy lệnh dưới đây:

[root@mail ~]# dnf install postfix postfix-mysql httpd vim policycoreutils-python-utils epel-release -y

Last metadata expiration check: 0:01:09 ago on Sat 16 May 2020 11:36:36 AM EDT.

Package vim-enhanced-2:8.0.1763-13.el8.x86_64 is already installed.

Package policycoreutils-python-utils-2.9-3.el8_1.1.noarch is already installed.

Dependencies resolved.

...

PHP sẽ được Roundcube sử dụng để hiển thị các trang trên trình duyệt của bạn và do đó cần phải cài đặt nó. Sau khi PHP được cài đặt, hãy thêm các gói PHP bổ sung như sau:

[root@mail ~]# dnf install -y php-common php-json php-xml php-mbstring php-mysql

Last metadata expiration check: 0:05:21 ago on Sat 16 May 2020 11:42:23 AM EDT.

Package php-common-7.4.6-1.el8.remi.x86_64 is already installed.

Package php-json-7.4.6-1.el8.remi.x86_64 is already installed.

Package php-xml-7.4.6-1.el8.remi.x86_64 is already installed.

Package php-mbstring-7.4.6-1.el8.remi.x86_64 is already installed.

Dependencies resolved.

...

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

Chúng ta cần thực hiện cấu hình postfix để thực hiện việc nhận và gửi thư. Chúng ta sẽ sử dụng trình soạn thảo yêu thích của chúng ta để chỉnh sửa:

[root@mail ~]# vi /etc/postfix/master.cf

Chúng ta thực hiện bỏ ghi chú các dòng sau:

submission inet n - n - - smtpd

-o syslog_name=postfix/submission

-o smtpd_tls_security_level=encrypt

-o smtpd_sasl_auth_enable=yes

-o smtpd_tls_auth_only=yes

-o smtpd_reject_unlisted_recipient=no

-o smtpd_client_restrictions=$mua_client_restrictions

-o smtpd_helo_restrictions=$mua_helo_restrictions

-o smtpd_sender_restrictions=$mua_sender_restrictions

-o smtpd_recipient_restrictions=

-o smtpd_relay_restrictions=permit_sasl_authenticated,reject

-o milter_macro_daemon_name=ORIGINATING

Và thêm dòng sau vào cuối file cấu hình:

dovecot unix - n n - - pipe

flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

Chúng ta sẽ cài đặt và cấu hình dovecot. Lưu file sau khi chúng ta đã thực hiện các thay đổi ở trên.

Tiếp theo thực hiện mở file cấu hình /etc/postfix/main.cf để thực hiện các thay đổi sau:

Bỏ ghi chú dòng myhostname và thay thế bằng host.domain.tld tên máy chủ của chúng ta:

myhostname = mail.blogd.net

Thêm tên miền của chúng ta vào như sau:

mydomain = blogd.net ## Input your unique domain here

Bỏ ghi chú hoặc thêm các dòng sau vào file:

myorigin = $myhostname

inet_interfaces = all

inet_interfaces = localhost

inet_protocols = all

mydestination = $myhostname, localhost.$mydomain, localhost

smtpd_recipient_restrictions = permit_mynetworks

home_mailbox = Maildir/

append_dot_mydomain = no

biff = no

config_directory = /etc/postfix

dovecot_destination_recipient_limit = 1

message_size_limit = 4194304

smtpd_tls_key_file = /etc/postfix/ssl/yourkey.key ##SSL Key

smtpd_tls_cert_file = /etc/postfix/ssl/yourcertificate.crt ##SSL Cert

smtpd_use_tls=yes

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_tls_security_level=may

virtual_transport = dovecot

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

Thêm cấu hình sau đây cũng cho phép Postfix truy cập vào dữ liệu liên quan đến tài khoản mà chúng ta sẽ tạo và lưu trữ trong cơ sở dữ liệu:

virtual_mailbox_domains = mysql:/etc/postfix/database-domains.cf

virtual_mailbox_maps = mysql:/etc/postfix/database-users.cf

virtual_alias_maps = mysql:/etc/postfix/database-alias.cf

(còn tiếp...)