Hướng dẫn cài đặt Postfix Mail Server trên CentOS 8


Postfix là gì? 

Postfix là chương trình mã nguồn mở và miễn phí (free and open-source) dùng để gửi thư điện tử (Mail Transfer Agent – MTA) được tạo ra ban đầu tại IBM với mục tiêu là thay thế chương trình gửi mail phổ biến là Sendmail. Postfix được phát triển dựa trên mục tiêu là nhanh, dễ quản lý và bảo mật.

Install-configure-Postfx-Server-CentOS8

Chuẩn bị:

  • Hệ điều hành: Máy chủ CentOS 8
  • Địa chỉ IP: 192.168.10.103
  • Tên máy chủ: srv.cloudfly.vn (Đảm bảo tên miền được trỏ đến IP của máy chủ)

Bước 1. Đặt tên máy chủ và cập nhật  /etc/hosts file

Sử dụng lệnh hostnamectl dưới đây để đặt tên máy chủ trên hệ thống của bạn,
hostnamectl set-hostname srv.cloudfly.vn

Bạn cần thêm tên máy chủ và IP của hệ thống trong file  /etc/hosts

# vi /etc/hosts 
192.168.10.103 srv.cloudfly.vn

Bước 2. Cài đặt Postfix Mail Server

# dnf install postfix -y

Khởi động và kích hoạt dịch vụ Postfix Service

# systemctl start postfix
# systemctl enable postfix

Kiểm tra trạng thái Postfix bằng câu lệnh sau

​​# systemctl status postfix
 
[root@srv ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-08-24 04:09:09 UTC; 41min ago
  Process: 13652 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
  Process: 13670 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 13669 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 13666 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 13738 (master)
    Tasks: 4 (limit: 12525)
   Memory: 6.8M
   CGroup: /system.slice/postfix.service
           ├─13738 /usr/libexec/postfix/master -w
           ├─13739 pickup -l -t unix -u
           ├─13740 qmgr -l -t unix -u
           └─13802 tlsmgr -l -t unix -u

Aug 24 04:10:01 srv.cloudfly.vn postfix/smtpd[13800]: connect from localhost[::1]
Aug 24 04:13:19 srv.cloudfly.vn postfix/smtpd[13800]: NOQUEUE: reject: RCPT from localhost[::1]: 
Tiếp theo, chúng ta sẽ cấu hình Postfix để gửi email cục bộ đến máy chủ của chúng ta.

Bước 3.Cài đặt  mailx email client

dnf install mailx

Bước 4. Cấu hình Postfix Mail Server

 File cấu hình của Postfix nằm trong /etc/postfix/main.cf . Chúng ta cần thực hiện một vài thay đổi trong file cấu hình.
# vi /etc/postfix/main.cf
Make changes to the following lines:

myhostname = srv.cloudfly.vn
mydomain = cloudfly.vn
myorigin = $mydomain
## Uncomment and Set inet_interfaces to all ##
inet_interfaces = all
## Change to all ##
inet_protocols = all
## Comment ##
#mydestination = $myhostname, localhost.$mydomain, localhost
##- Uncomment ##
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## Uncomment and add IP range ##
mynetworks = 192.168.10.0/24, 127.0.0.0/8
## Uncomment ##
home_mailbox = Maildir/

 

Sau khi hoàn tất, hãy lưu và thoát khỏi tệp cấu hình. Khởi động lại dịch vụ postfix.
# systemctl restart postfix

 

Bước 5. Testing  Postfix Mail Server

Create a test user.
# useradd postfixuser
# passwd postfixuser
Tiếp theo, chạy lệnh bên dưới để gửi email từ người dùng cục bộ pkumar tới người dùng khác ' postfixuser '
# telnet localhost smtp
# telnet localhost 25
Nếu dịch vụ telnet chưa được cài đặt, bạn có thể cài đặt nó bằng lệnh:
# dnf install telnet -y
Khi bạn chạy lệnh như đã chỉ ra trước đó, bạn sẽ nhận được đầu ra như hình minh họa
[root@srv systemd]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 srv.cloudfly.vn ESMTP Postfix
ehlo
501 Syntax: EHLO hostname
ehlo localhost
250-srv.cloudfly.vn
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
mail from:<pkumar>
250 2.1.0 Ok
rcpt to:<postfixuser>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Hello, welcome to mailserver

quit

 

Bạn sẽ có thể xem email được gửi tại thư mục chính của người dùng mới.
[root@srv ~]# ls /home/postfixuser/Maildir/new
1598242511.V801I18933b1M94396.srv.cloudfly.vn
Để đọc email, chỉ cần sử dụng lệnh cat như sau:
[root@srv ~]#cat /home/postfixuser/Maildir/new/1598242511.V801I18933b1M94396.srv.cloudfly.vn
Return-Path: <pkumar@cloudfly.vn>
X-Original-To: postfixuser
Delivered-To: postfixuser@cloudfly.vn
Received: from localhost (localhost [IPv6:::1])
        by srv.cloudfly.vn (Postfix) with ESMTP id 7679E10A0B4E
        for <postfixuser>; Mon, 24 Aug 2020 04:13:56 +0000 (UTC)
Message-Id: <20200824041416.7679E10A0B4E@srv.cloudfly.vn>
Date: Mon, 24 Aug 2020 04:13:56 +0000 (UTC)
From: pkumar@cloudfly.vn

Hello, welcome to mailserver


[root@srv ~]#

Bước 6.Xem logs Postfix mail server 

Postfix mail server mail logs được lưu trữ theo đường dẫn  “/var/log/maillog“, sử dụng dòng lệnh dưới đây để xem logs

# tail -f /var/log/maillog
[root@srv ~]# tail -f /var/log/maillog
Aug 24 04:13:30 srv postfix/smtpd[13800]: connect from localhost[::1]
Aug 24 04:14:16 srv postfix/smtpd[13800]: 7679E10A0B4E: client=localhost[::1]
Aug 24 04:15:11 srv postfix/cleanup[14013]: 7679E10A0B4E: message-id=<20200824041416.7679E10A0B4E@srv.cloudfly.vn>
Aug 24 04:15:11 srv postfix/qmgr[13740]: 7679E10A0B4E: from=<pkumar@cloudfly.vn>, size=337, nrcpt=1 (queue active)
Aug 24 04:15:11 srv postfix/local[14054]: 7679E10A0B4E: to=<postfixuser@cloudfly.vn>, orig_to=<postfixuser>, relay=local, delay=74, delays=74/0.02/0/0.05, dsn=2.0.0, status=sent (delivered to maildir)
Aug 24 04:15:11 srv postfix/qmgr[13740]: 7679E10A0B4E: removed
Aug 24 04:15:19 srv postfix/smtpd[13800]: disconnect from localhost[::1] ehlo=1/2 mail=1 rcpt=1 data=1 quit=1 commands=5/6

7. Cài SSL Postfix Mail Server 

Trong hướng dẫn này, chúng tôi sẽ tạo chứng nhận Tự ký cho postfix bằng lệnh openssl ,
Tôi giả sử openssl đã được cài đặt trên hệ thống của bạn, trong trường hợp nó chưa được cài đặt thì hãy sử dụng lệnh sau dnf,
# dnf install openssl -y
Tạo Khóa cá nhân và CSR (Yêu cầu ký chứng chỉ) bằng lệnh openssl bên dưới,
# openssl req -nodes -newkey rsa:2048 -keyout mail.key -out mail.csr
[root@srv ~]#  openssl req -nodes -newkey rsa:2048 -keyout mail.key -out mail.csr
Generating a RSA private key
....................................................................................+++++
...............................+++++
writing new private key to 'mail.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Ha Noi
Locality Name (eg, city) [Default City]:Ha Noi
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:srv.cloudfly.vn
Email Address []:cloudfly@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:1234
An optional company name []:
[root@srv ~]#
Bây giờ Tạo chứng chỉ tự ký bằng lệnh openssl sau đây,
# openssl x509 -req -days 365 -in mail.csr -signkey mail.key -out mail.crt
[root@srv ~]# openssl x509 -req -days 365 -in mail.csr -signkey mail.key -out mail.crt
Signature ok
subject=C = IN, ST = Ha Noi, L = Ha Noi, O = IT, OU = IT, CN = srv.cloudfly.vn, emailAddress = cloudfly@gmail.com
Getting Private key
[root@srv ~]#
Sao chép khóa cá nhân và tệp chứng chỉ vào thư mục /etc/postfix
# cp mail.key mail.crt /etc/postfix

Cập nhật Khóa cá nhân và đường dẫn của tệp Chứng chỉ trong tệp cấu hình postfix,

# vi /etc/postfix/main.cf 
……… 
#Comment dòng 709 và 715
smtpd_use_tls = yes 
smtpd_tls_cert_file = /etc/postfix/mail.crt 
smtpd_tls_key_file = /etc/postfix/mail.key 
smtpd_tls_security_level = may 
Khởi động lại dịch vụ postfix
#systemctl restart postfix 

Gửi email nội bộ cục bộ từ người dùng pkumar tới postfixuser

[root@srv new]# echo "test email" | mailx -s "Test email from Postfix MailServer" -r pkumar@cloudfly.vn postfixuser@cloudfly.vn
[root@srv new]# cd /home/postfixuser/Maildir/new/
[root@srv new]# ll
total 12
-rw------- 1 postfixuser postfixuser 426 Aug 24 04:15 1598242511.V801I18933b1M94396.srv.cloudfly.vn
-rw------- 1 postfixuser postfixuser 565 Aug 24 07:23 1598253812.V801I18933b2M822698.srv.cloudfly.vn
-rw------- 1 postfixuser postfixuser 559 Aug 24 07:24 1598253857.V801I18933b3M756639.srv.cloudfly.vn
[root@srv new]# cat 1598253857.V801I18933b3M756639.srv.cloudfly.vn
Return-Path: <pkumar@cloudfly.vn>
X-Original-To: postfixuser@cloudfly.vn
Delivered-To: postfixuser@cloudfly.vn
Received: by srv.cloudfly.vn (Postfix, from userid 0)
        id B799810A0B4E; Mon, 24 Aug 2020 07:24:17 +0000 (UTC)
Date: Mon, 24 Aug 2020 07:24:17 +0000
From: pkumar@cloudfly.vn
To: postfixuser@cloudfly.vn
Subject: Test email from Postfix MailServer
Message-ID: <5f436b21.fzAku5wqLd/yLYda%pkumar@cloudfly.vn>
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

test email
[root@srv new]#








































 

**Vui lòng đăng nhập để có thể trả lời bài viết này**