Cài đặt Webmail trên Centos Stream 8

VPS Giza Data Tháng ba 8, 2023

Để cài đặt Webmail trên CentOS 8, bạn cần làm theo các bước sau đây:

Bước 1: Cài đặt Apache

Apache là một web server phổ biến để phục vụ trang web. Bạn có thể cài đặt Apache bằng cách sử dụng lệnh sau:

PowerShell
sudo dnf install httpd

Sau khi cài đặt xong, bạn cần khởi động Apache và thiết lập nó để khởi động cùng hệ thống.

PowerShell
sudo systemctl start httpd
sudo systemctl enable httpd

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

PHP là một ngôn ngữ lập trình phổ biến được sử dụng để phát triển các ứng dụng web động. Bạn có thể cài đặt PHP bằng lệnh sau:

PowerShell
sudo dnf install php php-mysqlnd php-xml php-json

Bước 3: Cài đặt MySQL

MySQL là một hệ thống quản trị cơ sở dữ liệu phổ biến và được sử dụng rộng rãi cho các ứng dụng web. Bạn có thể cài đặt MySQL bằng lệnh sau:

PowerShell
sudo dnf install mariadb-server mariadb

Sau khi cài đặt xong, bạn cần khởi động MariaDB và thiết lập nó để khởi động cùng hệ thống.

PowerShell
sudo systemctl start mariadb
sudo systemctl enable mariadb

Bước 4: Cài đặt webmail

Có nhiều lựa chọn cho webmail, ví dụ như Roundcube hoặc SquirrelMail. Ở đây, chúng ta sẽ cài đặt Roundcube.

Trước tiên, bạn cần tải xuống gói Roundcube từ trang web chính thức của nó.

PowerShell
sudo dnf install wget
sudo wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz

Sau khi tải xuống xong, bạn cần giải nén và di chuyển thư mục Roundcube vào thư mục web của Apache.

PowerShell
sudo tar xvf roundcubemail-1.5.2-complete.tar.gz
sudo mv roundcubemail-1.5.2 /var/www/html/roundcube

Tiếp theo, bạn cần tạo một cơ sở dữ liệu cho Roundcube và cấp quyền truy cập cho nó.

PowerShell
sudo mysql -u root -p
CREATE DATABASE roundcube;
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcubeuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

Sau đó, bạn cần cấu hình Roundcube bằng cách sao chép tệp config.inc.php.sample và đổi tên nó thành config.inc.php.

PowerShell
sudo cp /var/www/html/roundcube/config/config.inc.php.sample /var/www/html/roundcube/config/config.inc.php

Mở tệp config.inc.php và chỉnh sửa các thông số sau:

PowerShell
$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
$rcmail_config['smtp_server'] = 'ssl://localhost';
$rcmail_config['smtp_port'] = 465;
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
$rcmail_config['db_dsnw'] = 'mysql://roundcubeuser:password@localhost/roundcube';

Lưu và đóng tệp.

Sau đó, bạn cần thêm một mục nhập VirtualHost cho Roundcube vào tệp cấu hình Apache.

PowerShell
sudo nano /etc/httpd/conf.d/roundcube.conf

Thêm nội dung sau:

PowerShell
<VirtualHost *:80>
   ServerName mail.example.com
   Redirect permanent / https://mail.example.com/
</VirtualHost>

<VirtualHost *:443>
   DocumentRoot /var/www/html/roundcube
   ServerName mail.example.com
   SSLEngine on
   SSLCertificateFile /etc/pki/tls/certs/server.crt
   SSLCertificateKeyFile /etc/pki/tls/private/server.key
</VirtualHost>

Thay mail.example.com bằng tên miền của bạn và chỉnh sửa đường dẫn đến tệp chứng chỉ SSL nếu cần thiết.

Cuối cùng, khởi động lại Apache.

PowerShell
sudo systemctl restart httpd

Bây giờ, bạn có thể truy cập Roundcube bằng cách truy cập https://mail.example.com trên trình duyệt web. Bạn có thể đăng nhập bằng địa chỉ email và mật khẩu của người dùng được tạo trong hệ thống.

Fix lỗi nếu phát sinh

Nếu có lỗi là

PowerShell
[root@mail ~]# sudo systemctl restart httpd
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xe" for details.

Thông báo lỗi này cho thấy rằng dịch vụ Apache không khởi động thành công vì một lý do nào đó. Bạn cần kiểm tra trạng thái của dịch vụ Apache để tìm hiểu nguyên nhân của lỗi và khắc phục vấn đề đó.

Bạn có thể sử dụng lệnh sau để xem thông tin chi tiết về lỗi:

PowerShell
systemctl status httpd.service

Nó sẽ hiển thị trạng thái hiện tại của dịch vụ Apache và thông tin chi tiết về bất kỳ lỗi nào mà nó đã gặp phải.

Bạn có thể thử một số phương pháp khác nhau để khắc phục vấn đề này, nhưng phương pháp cụ thể sẽ phụ thuộc vào nguyên nhân của lỗi. Sau đây là một số giải pháp thường gặp để khắc phục vấn đề này:

  • Kiểm tra lại tệp cấu hình Apache để đảm bảo rằng không có lỗi cú pháp hoặc sai sót trong tệp đó.
  • Kiểm tra lại tệp cấu hình SSL để đảm bảo rằng đường dẫn đến các tệp chứng chỉ SSL đúng.
  • Kiểm tra lại tệp cấu hình VirtualHost để đảm bảo rằng tên miền và đường dẫn đến tệp SSL được chỉ định đúng.
  • Kiểm tra lại các gói phần mềm liên quan đến Apache và đảm bảo rằng chúng đã được cài đặt và cập nhật đầy đủ.
  • Tìm kiếm các thông tin khác trong nhật ký hệ thống (system log) để tìm hiểu nguyên nhân của lỗi.

Sau khi tìm ra nguyên nhân của lỗi và khắc phục được vấn đề đó, bạn có thể thử lại lệnh systemctl restart httpd.service để khởi động lại dịch vụ Apache.

Và nếu có lỗi là

PowerShell
[root@mail ~]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: failed (Result: exit-code) since Wed 2023-03-08 22:29:48 +07; 25s ago
     Docs: man:httpd.service(8)
  Process: 7033 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 7033 (code=exited, status=1/FAILURE)
   Status: "Reading configuration..."

Mar 08 22:29:48 mail.gizadigi.com systemd[1]: Starting The Apache HTTP Server...
Mar 08 22:29:48 mail.gizadigi.com httpd[7033]: AH00526: Syntax error on line 9 of /etc/httpd/conf.d/roundcube.conf:
Mar 08 22:29:48 mail.gizadigi.com httpd[7033]: Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Mar 08 22:29:48 mail.gizadigi.com systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
Mar 08 22:29:48 mail.gizadigi.com systemd[1]: httpd.service: Failed with result 'exit-code'.
Mar 08 22:29:48 mail.gizadigi.com systemd[1]: Failed to start The Apache HTTP Server.

Thông báo lỗi này cho thấy rằng Apache không thể khởi động vì có một lỗi cú pháp trong tệp cấu hình của Roundcube. Thông báo lỗi cụ thể là “Invalid command ‘SSLEngine'” – có vẻ như một lệnh không hợp lệ được định nghĩa trong tệp cấu hình.

Để khắc phục lỗi này, bạn có thể thực hiện các bước sau:

  • Mở tệp cấu hình roundcube.conf bằng trình soạn thảo văn bản:
PowerShell
sudo nano /etc/httpd/conf.d/roundcube.conf
  • Tìm và xóa hoặc bình luận (#) dòng chứa lệnh SSLEngine:
PowerShell
SSLEngine on
  • Lưu và đóng tệp cấu hình.
  • Kiểm tra lại tệp cấu hình bằng lệnh sau để đảm bảo rằng không có lỗi cú pháp khác:
PowerShell
sudo apachectl configtest
  • Nếu không có lỗi cú pháp, bạn có thể khởi động lại dịch vụ Apache:
PowerShell
sudo systemctl restart httpd

Sau khi hoàn tất các bước trên, bạn nên kiểm tra trạng thái của dịch vụ Apache để đảm bảo rằng nó đã được khởi động thành công:

PowerShell
sudo systemctl status httpd

Nếu Apache đã được khởi động thành công, bạn có thể tiếp tục cài đặt và cấu hình webmail trên CentOS 8.

Nếu có lỗi là:

PowerShell
[root@mail ~]# sudo apachectl configtest
AH00526: Syntax error on line 10 of /etc/httpd/conf.d/roundcube.conf:
Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration

Thông báo lỗi này cho thấy rằng cấu hình SSL trong tệp roundcube.conf của Apache không đúng. Cụ thể là lỗi “Invalid command ‘SSLCertificateFile'” – có vẻ như một lệnh không hợp lệ được định nghĩa trong tệp cấu hình.

Để khắc phục lỗi này, bạn có thể thực hiện các bước sau:

  • Mở tệp cấu hình roundcube.conf bằng trình soạn thảo văn bản:
PowerShell
sudo nano /etc/httpd/conf.d/roundcube.conf
  • Tìm và xóa hoặc bình luận (#) dòng chứa các lệnh SSLCertificateFileSSLCertificateKeyFile:
PowerShell
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
  • Lưu và đóng tệp cấu hình.
  • Kiểm tra lại tệp cấu hình bằng lệnh sau để đảm bảo rằng không có lỗi cú pháp khác:
PowerShell
sudo apachectl configtest
  • Nếu không có lỗi cú pháp, bạn có thể khởi động lại dịch vụ Apache:
PowerShell
sudo systemctl restart httpd

Sau khi hoàn tất các bước trên, bạn nên kiểm tra trạng thái của dịch vụ Apache để đảm bảo rằng nó đã được khởi động thành công:

PowerShell
sudo systemctl status httpd

Nếu Apache đã được khởi động thành công, bạn có thể tiếp tục cài đặt và cấu hình webmail trên CentOS 8.

Và nếu như:

PowerShell
[root@mail ~]# sudo apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using mail.gizadigi.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Nếu kết quả trả về là “Syntax OK”, điều đó có nghĩa là tệp cấu hình Apache của bạn đã được cập nhật thành công. Bạn có thể khởi động lại dịch vụ Apache để áp dụng thay đổi bằng lệnh sau:

PowerShell
sudo systemctl restart httpd

Sau khi hoàn thành các bước trên, bạn có thể kiểm tra lại trạng thái của dịch vụ Apache để đảm bảo rằng nó đang hoạt động đúng và không có lỗi:

PowerShell
sudo systemctl status httpd

Tiếp tục cài đặt và cấu hình webmail trên CentOS 8 sau khi xác nhận rằng Apache đã hoạt động chính xác.

Cần mở những port nào để sử dụng webmail full chức năng?

Để sử dụng Webmail với đầy đủ chức năng, bạn cần mở các cổng sau:

  • Port 80 (HTTP): Để truy cập giao diện Webmail thông qua HTTP.
  • Port 443 (HTTPS): Để truy cập giao diện Webmail thông qua HTTPS (SSL/TLS).

Ngoài ra, nếu bạn muốn sử dụng các tính năng bổ sung như IMAP, SMTP hoặc POP3, bạn cũng cần mở các cổng tương ứng:

  • Port 143 (IMAP): Để sử dụng IMAP (Internet Message Access Protocol) để truy cập và quản lý thư từ máy chủ.
  • Port 465 (SMTPS): Để sử dụng SMTP (Simple Mail Transfer Protocol) qua SSL/TLS.
  • Port 587 (SMTP): Để sử dụng SMTP qua STARTTLS.
  • Port 993 (IMAPS): Để sử dụng IMAP qua SSL/TLS.
  • Port 995 (POP3S): Để sử dụng POP3 (Post Office Protocol version 3) qua SSL/TLS.

Lưu ý rằng, tùy thuộc vào các cấu hình cụ thể của máy chủ email của bạn, các cổng này có thể khác nhau. Bạn nên kiểm tra với nhà cung cấp email hoặc quản trị viên hệ thống của mình để biết chính xác các cổng cần mở cho việc sử dụng Webmail và các tính năng liên quan.

Cài ssl cho webmail

Để cài đặt SSL cho Webmail, bạn có thể làm theo các bước sau:

  • Đăng ký và lấy chứng chỉ SSL từ một nhà cung cấp dịch vụ SSL (VD: Let’s Encrypt, Comodo, …).
  • Cài đặt module SSL cho Apache bằng lệnh sau:
PowerShell
sudo dnf install mod_ssl
  • Tạo một file SSL Virtual Host cho Webmail bằng cách tạo một file với tên tùy ý, ví dụ webmail_ssl.conf, trong thư mục /etc/httpd/conf.d/, và thêm các nội dung sau:
PowerShell
<VirtualHost *:443>
     ServerAdmin webmaster@example.com
     ServerName mail.example.com
     DocumentRoot /var/www/html/roundcubemail

     ErrorLog /var/log/httpd/webmail_error_log
     CustomLog /var/log/httpd/webmail_access_log combined

     SSLEngine on
     SSLCertificateFile /path/to/your_domain_name.crt
     SSLCertificateKeyFile /path/to/your_private.key
     SSLCertificateChainFile /path/to/intermediate_certificate_bundle.crt

     <Directory "/var/www/html/roundcubemail">
         AllowOverride All
         Require all granted
     </Directory>
</VirtualHost>
  • Trong đó:
    • ServerAdmin: Email của người quản trị.
    • ServerName: Tên miền của Webmail.
    • DocumentRoot: Thư mục chứa nội dung của Webmail.
    • SSLEngine on: Kích hoạt SSL cho Virtual Host.
    • SSLCertificateFile: Đường dẫn tới chứng chỉ SSL đã lấy.
    • SSLCertificateKeyFile: Đường dẫn tới khóa bí mật.
    • SSLCertificateChainFile: Đường dẫn tới tập tin chứa chuỗi các chứng chỉ gốc.
    • <Directory>: Cấu hình cho phép các yêu cầu tới thư mục DocumentRoot.
  • Khởi động lại Apache để áp dụng cấu hình:
PowerShell
sudo systemctl restart httpd

Sau khi hoàn thành các bước trên, bạn có thể truy cập vào Webmail thông qua HTTPS bằng địa chỉ https://your_domain.com/roundcubemail.

Quảng Cáo