Web Server và Mail Server trên Debian 12

Đăng nhập lần đầu vào hệ thống

login: root (user quản trị).

password: (tạo lúc cài đặt Hệ Điều Hành).

apt update

Lệnh trên liên hệ với các nguồn cung cấp gói phần mềm trong file sources.list hoặc các tệp trong thư mục /etc/apt/sources.list.d/ để lấy thông tin về các gói phần mềm mới nhất có sẵn.

Lệnh $sudo apt update không thực sự cài đặt bất kỳ gói nào mà chỉ cập nhật thông tin về các gói phần mềm. Việc này giúp bạn chuẩn bị sẵn sàng cho việc cài đặt các bản cập nhật mới nhất bằng lệnh $sudo apt upgrade hoặc $sudo apt dist-upgrade.

apt upgrade

Lệnh trên chỉ nâng cấp các gói phần mềm lên phiên bản mới nhất có sẵn, nhưng không thực hiện bất kỳ thay đổi cấu trúc nào về các gói đang cài đặt hoặc có thể gây ra các phụ thuộc không đồng nhất.

apt dist-upgrade

Là một cấp độ nâng cấp cao hơn, nó không chỉ nâng cấp các gói phần mềm lên phiên bản mới nhất, mà còn thực hiện các thay đổi trong cấu trúc gói, bao gồm việc loại bỏ hoặc cài đặt các gói mới để đảm bảo các phụ thuộc đồng nhất. Điều này có thể bao gồm loại bỏ các gói không còn cần thiết hoặc cài đặt các gói mới để giải quyết các phụ thuộc mới.

Tạo tài khoản có quyền root

Đăng nhập vào chế độ root. Dấu nhắc $ cho biết user hiện tại đang không phải root. Dấu nhắc# cho biết dòng lệnh đang có quyền root.

$sudo -s

Tạo người dùng mới.

#adduser zapnho

Gán quyền sudo cho người dùng.

#usermod -aG sudo zapnho

Đổi tên máy chủ, quản lý tên máy chủ trong file /etc/hosts.

#hostnamectl set-hostname z-log.net
#nano /etc/hosts

Đăng xuất khỏi tài khoản root và đăng nhập với tài khoản mới.

#exit
$su - zapnho
zapnho@z-log:~$_

Kiểm tra phiên bản Debian và nâng cấp lên phiên bản mới hơn

sudo lsb_release -a
sudo cat /etc/debian_version
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Cài giao diện đồ họa GNOME

$sudo apt update
$sudo apt upgrade
$sudo apt install gnome

Chuyển đổi giữa giao diện đồ họa và giao diện dòng lênh bằng tổ hợp phím.

Ctrl+Alt+F2~F6

Nếu đã đăng nhập giao diện đồ họa ở phiên làm việc tty1 thì Ctrl+Alt+F2~F6 chuyển đến phiên làm việc dòng lệnh tty2~6.

Quay trở lại giao diện đồ họa.

Ctrl+Alt+F1

Tắt khởi động tự động vào giao diện đồ họa.

Xem trình quản lý hiển thị chạy lệnh.

systemctl status display-manager

GNOME là trình quản lý là gdm.

vô hiệu hóa trình quản lý đăng nhập hiện tại.

sudo systemctl disable gdm
sudo reboot

Đăng nhập thủ công vào giao diện đồ họa, từ giao diện dòng lệnh chạy lệnh.

startx

Cài nhiều trang web trên máy chủ Webserver Linux

Để cấu hình Multisite trên một máy chủ Linux, bạn cần sử dụng một ứng dụng máy chủ web như Apache hoặc Nginx cùng với một hệ quản trị cơ sở dữ liệu như MySQL hoặc MariaDB và PHP – Gọi tắt là LAMP (Linux, Apache, MySQL, and PHP).Đây là các bước tổng quát để thiết lập một môi trường Multisite sử dụng Apache, PHP và MySQL trên Linux:

  1. Cài đặt LAMP – Apache, MariaDB(hoặc mySQL) và PHP

Cài Apache

sudo apt-get update
sudo apt-get install apache2

Mở port 80 và 443 trên firewall cho webserver (nếu chưa mở).

sudo apt install ufw
sudo ufw enable
sudo ufw status
sudo ufw allow 22/tcp (cho SSH)
sudo ufw allow 80/tcp (cho HTTP) 
sudo ufw allow 443/tcp (cho HTTPS)
sudo ufw status (kiểm tra lại các port đã mở)

Kiểm tra trạng thái của Apache 

Mở trình duyệt trên máy chủ nhập localhost hoặc trình duyệt trên máy khách thì nhập địa chỉ IP, hoặc tên miền (nếu đã trỏ tên miền về host):

http://localhost
http://IP
http://ten_mien

Nếu đã cài thành công thì trang web sẽ hiện thông tin về Apache.

Cài PHP, phpmyadmin

sudo apt-get install php php-cli php-mysql libapache2-mod-php
sudo apt-get install phpmyadmin
(chọn cấu hình cho apache2)

Sau khi cài đặt PHP, khởi động lại Apache để nó nhận biết các thay đổi:

sudo systemctl restart apache2

(Tùy chọn) Kiểm tra PHP, phpmyadmin

Tạo một tệp tin PHP để kiểm tra xem PHP đã hoạt động chưa. Ví dụ, tạo một tệp tin info.php trong thư mục gốc của web server (/var/www/html/) với nội dung sau.

sudo nano /var/www/html/info.php
<?php
phpinfo();
?>

Thoát và lưu Ctr-X->Y->Enter.

Mở trình duyệt và nhập địa chỉ http://localhost/info.php hoặc http://địa_chỉ_IP_của_máy/info.php nếu cài đặt thành công sẽ hiển thị thông tin về PHP. Đăng nhập vào phpmyadmin bằng đường dẫn http://localhost/phpmyadmin.

http://localhost/info.php
http://địa_chỉ_IP_của_máy/info.php
http://localhost/phpmyadmin
http://địa_chỉ_IP_của_máy/phpmyadmin

(Tùy chọn) Cấu hình thêm:

Bạn có thể cấu hình thêm các tùy chọn cho PHP thông qua file cấu hình của nó (php.ini) hoặc cấu hình Apache để xác định các thư mục root của web server và các cài đặt khác.

sudo nano /etc/php/8.2/apache2/php.ini

(Tùy chọn) Kích hoạt extension mysqli:

php --ini | grep "Loaded Configuration File" (tìm đường dẫn)
sudo nano /đường/dẫn/php.ini
extension=mysqli

Bỏ comment để thành lệnh (loại bỏ dấu ; ở đầu dòng).

Khởi động lại Apache.

sudo systemctl restart apache2

Cài đặt Cơ sỡ dữ liệu mariaDB

sudo apt update
sudo apt install mariadb-server

Khởi động và kiểm tra trạng thái của MariaDB:

sudo systemctl start mariadb
sudo systemctl status mariadb

(Tùy chọn) Tùy chỉnh và cấu hình bảo mật:

sudo mysql_secure_installation
  1. Tạo database mới, user mới kết nối database với user MariaDB

Đăng nhập vào MariaDB:

sudo mariadb -u root -p

Tạo cơ sở dữ liệu mới:

CREATE DATABASE ten_co_so_du_lieu;

Tạo người dùng mới và cấp quyền.

CREATE USER 'ten_nguoi_dung'@'localhost' IDENTIFIED BY 'mat_khau';
GRANT ALL PRIVILEGES ON ten_co_so_du_lieu.* TO 'ten_nguoi_dung'@'localhost';

Áp dụng thay đổi và thoát khỏi MariaDB.

FLUSH PRIVILEGES;
EXIT;

Giờ có thể đăng nhập bằng username và password vào phpmyadmin.

  1. Cài đặt WordPress

Tải WordPress từ trang web chính thức: WordPress.org.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz (giải nén) 
touch wordpress/.htaccess (tạo file truy cập)
chmod 660 wordpress/.htaccess (cấp quyền cho file)
mkdir /var/www/z-log.net (tạo thư mục chứa website)
sudo cp -a wordpress/. /var/www/z-log.net/ (copy source wordpress vào thư mục)
cd /var/www/z-log.net/
sudo cp wp-config-sample.php wp-config.php
sudo chown -R www-data:www-data /var/www/z-log.net/
sudo find /var/www/z-log.net/ -type d -exec chmod g+s {} \;
sudo chmod g+w wp-content/
sudo chmod -R g+w wp-content/themes/
sudo chmod -R g+w wp-content/plugins/
cat wp-config.php
su (đăng nhập root)
wget -qO- https://api.wordpress.org/secret-key/1.1/salt > wordpress_keys.txt
cat wordpress_keys.txt
nano wp-config.php

Copy secret-key từ lệnh $cat thay vào trong file cấu hình ở các mục define (‘AUTH_KEY’,…

Đổi tên DATABASE, USER, PASSWORD.

define( 'DB_NAME', 'ten_database_mariaDB' );
define( 'DB_USER', 'username_mariaDB' );
define( 'DB_PASSWORD', 'matkhau' );

Cấu hình WordPress Multisite:

Thêm dòng sau trước dòng “/* That’s all, stop editing! Happy blogging. */”:

define('WP_ALLOW_MULTISITE', true);

Đóng lưu Ctrl+X->Y->Enter.

Khởi động lại mariaDB.

sudo systemctl restart mariadb

Cấu hình Apache cho Multisite:

Cấu hình multisite.

sudo a2enmod rewrite
sudo a2enmod vhost_alias
  • Cấu hình Virtual Hosts, copy file cấu hình mặc định ra 2 file theo tên của 2 website.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite1.conf
  • Chỉnh sửa các tệp cấu hình Virtual Hosts cho các trang web khác nhau.
sudo nano /etc/apache2/sites-available/mysite1.conf

Ví dụ cấu hình mẫu cho mysite1.conf:

apache

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName mysite1.com
ServerAlias www.mysite1.com
DocumentRoot /var/www/mysite1

<Directory /var/www/mysite1>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

<Directory /var/www/mysite1>
Directoryindex index.php
</Directory>
...
</VirtualHost>

Tương tự, chỉnh sửa mysite2.conf cho website thứ hai.

sudo nano /etc/apache2/sites-available/mysite2.conf
  • Kích hoạt các Virtual Hosts:
sudo a2ensite mysite1.conf
sudo a2ensite mysite2.conf

Tắt site mặc định.

sudo a2dissite 000-default.conf
  • Khởi động lại Apache để áp dụng thay đổi:
sudo systemctl restart apache2

Thoát và lưu file.

Cài đặt ban đầu wordpress bằng trình duyệt.

http://ip/wp-admmin/

Đăng nhập bằng User và pastword của mariaDB.

Cài đặt tuần tự theo hướng dẫn.

  1. Cài SSL (Apache)
  • Cài đặt Cerbot.
sudo apt-get update
sudo apt-get install certbot
  • Cài đặt Apache/Nginx plugin (nếu cần).
sudo apt-get install python3-certbot-apache
  • Lấy và cài đặt chứng chỉ SSL.
sudo certbot --apache -d ten_mien1
sudo certbot --apache -d ten_mien2
  • Theo hướng dẫn và hoàn tất quá trình cấu hình.

Nhập email->y->y.

  • (Tùy chọn) Cấu hình tự động gia hạn với crontab.

Thêm một nhiệm vụ cron job bằng cách chạy $sudo nano crontab -e.

sudo nano crontab -e

và thêm dòng sau vào:

0 0 * * 0 certbot renew

Điều này sẽ tự động gia hạn chứng chỉ SSL mỗi tuần vào thứ Bảy lúc 00:00.


Cài đặt và cấu hình Mail Server với Postfix và Dovecot

(nguồn youtuber: Hetman Software: Data Recovery for Windows).

Tạo các DNS record

Vào trang quản lý tên miền (cloudflare.com) cấu hình các DNS record :

Record A

Mục Name: tên miền (z-log.net)

Mục IPv4 address: địa chỉ IP máy chủ (193.114.36.98)

Proxy status: DNS only

Record A

Mục Name: mail

Mục IPv4 address: 193.114.36.98

Record MX

Name: z-log.net

Mail server: mail.z-log.net

TTL: Auto

Priority: 10

Cài đặt và cấu hình Postfix

sudo apt-get install postfix

Chạy postfix.

sudo systemctl start postfix

Kiểm tra trạng thái Postfix.

sudo systemctl status postfix

Cấu hình lại Postfix.

sudo dpkg-reconfigure postfix

->Internet Site->z-log.net->(để trống)-><No>->(mặc định)->0->+->all.

Chạy thử telnet kết nối mail smtp.

Cài telnet nếu chưa có.

sudo apt update
sudo apt install telnetd
telnet gmail-smtp-in.l.google.com 25
quit

Thoát khỏi telnet bằng lệnh quit.

Cài các công cụ mail.

sudo apt install mailutils

Gửi thử mail.

/usr/sbin/sendmail diachimail@gmail.com
Test mail
Ctrl+D

Cấu hình file main.cf của Postfix.

sudo nano /etc/postfix/main.cf

Thêm dòng cuối.

myhostname = mail.z-log.net
mydomain = z-log.net
home_mailbox= Maildir/ 

Maildir/ cấu hình mail box riêng cho từng user thay vì mbox mặc định gôm chung tất cả các mail.

Đóng và lưu.

Ctrl+X-> Y->Enter.

Tiếp theo, bạn đặt vị trí của bảng virtual_alias_maps ánh xạ các tài khoản email tùy ý đến các tài khoản hệ thống Linux. Bạn sử dụng câu lệnh sau đây, ánh xạ vị trí của bảng đến một tệp cơ sở dữ liệu hash có tên /etc/postfix/virtual.

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Lúc này, bạn đã xác định được vị trí của virtual maps trong tệp main.cf. Bạn có thể tự tạo tệp đó và bắt đầu mapping các tài khoản email đến tài khoản user trên hệ thống Linux của mình.

sudo nano /etc/postfix/virtual

Liệt kê các địa chỉ bạn cho phép nhận email, tiếp theo là một dấu cách và tên user Linux bạn muốn nhận email.

contact@z-log.net zapnho
admin@z-log.net zapnho
zapnho@z-log.net zapnho

Áp dụng mapping đã thực hiện xong bằng câu lệnh:

sudo systemctl restart postfix

Tiếp theo hãy tiến hành cấu hình tường lửa với UFW. Tường lửa sẽ mặc định chặn kết nối từ bên ngoài đến dịch vụ trên server, trừ khi các kết nối đó được cho phép.

sudo ufw allow Postfix

Cài đặt Client và khởi tạo cấu trúc Maildir

Cài đặt gói phần mềm s-nail để tương tác với email nhận được. Đây là một phiên bản đa tính năng của client BSD xmail giúp xử lý định dạng Maildir chính xác.

Trước khi cài đặt client, bạn cần bảo đảm biến môi trường MAIL được thiết lập chính xác. s-nail sẽ tìm đến biến này để xác định nơi tìm email cho user của bạn.

Để chắc chắn rằng biến MAIL được thiết lập bất kể bạn truy cập tài khoản của mình thông qua ssh, su, su – hay sudo, hãy đặt nó trong tệp /etc/bash.bashrc và thêm biến đó vào một tệp trong /etc/profile.d để bảo đảm biến này được thiết lập mặc định cho tất cả user.

Để thêm biến vào các file này, sử dụng lệnh:

echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Để đọc biến vào phiên hiện tại của bạn, hãy khởi tạo file /etc/profile.d/mail.sh:

source /etc/profile.d/mail.sh

Sau khi hoàn tất, bạn cài đặt trình email client s-nail.

sudo apt install s-nail

Trước khi chạy client, bạn cần thay đổi một số thiết lập. Mở tệp /etc/s-nail.rc trong trình soạn thảo văn bản:

sudo nano /etc/s-nail.rc

Ở cuối tệp, bạn thêm dòng sau:

. . .
set emptystart
set folder=Maildir
set record=+sent

Đây là những nội dung tương ứng của các dòng sẽ thực hiện:

  • set emptystart: Cho phép client mở ngay cả khi hộp thư đến trống.
  • set folder=Maildir: Đặt thư mục Maildir vào biến nội bộ folder.
  • set record=+sent: Tạo một tệp sent mbox để lưu trữ email đã gửi trong bất kỳ thư mục nào được đặt làm biến folder, ở trường hợp này là Maildir.

Một cách nhanh chóng để tạo cấu trúc Maildir trong thư mục chính đó là gửi cho chính bạn một email bằng lệnh s-nail. Bởi vì file sent sẽ chỉ khả dụng khi Maildir được tạo do đó bạn nên tắt chế độ ghi lại cho email ban đầu này bằng cách truyền tùy chọn -Snorecord.

Bạn gửi email bằng cách nối một chuỗi vào lệnh s-nail. Điều chỉnh lại câu lệnh để đánh dấu user Linux của bạn là người nhận:

echo 'init' | s-nail -s 'init' -Snorecord zapnho

Kiểm tra để đảm bảo rằng thư mục đã được tạo thành công bằng cách tìm kiếm ~/Maildir:

ls -R ~/Maildir

Kiểm tra Client:

Kiểm tra mail bằng lệnh $s-nail hoặc $mail, quay lại danh sách tin nhắn bằng cách nhập h, quay lại màn hình terminal, bạn gõ q, xem lại các tin nhắn đã gửi bằng cách gõ lệnh file +sent.

s-nail
mail
h
q
file +sent

Gửi mail bằng tập tin văn bản.

nano ~/test_message
Hello there
cat ~/test_message | s-nail -s 'Test email subject line' -r contact@z-log.net user@gmail.com

Cài đặt và cấu hình Dovecot

sudo apt install dovecot-imapd dovecot-pop3d

Chạy lại dovecot.

sudo systemctl restart dovecot

Cấu hình file dovecot.conf.

sudo nano /etc/dovecot/dovecot.conf

Thêm vào dòng cuối.

protocols = pop3 pop3s imap imaps

Ctrl+X->Y->Enter.

Cấu hình file 10-mail.conf cho mail user.

sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir

Thay đổi đường dẫn hộp thư thành Maildir.

Thoát và lưu.

Cấu hình file 10-auth.conf cho mã hóa mail.

sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login

Bỏ comment # để sử dụng lệnh trên, thêm login cho lệnh dưới.

Thoát và lưu.

Cấu hình file /etc/dovecot/conf.d/10-master.conf.

sudo nano /etc/dovecot/conf.d/10-master.conf  
unix_listener dict {
    #mode = 0600
    user = postfix
    group = postfix

Bỏ comment ở 2 dòng user và group thêm vào sử dụng postfix.

Thoát và lưu.

Kiểm tra pop3.

telnet localhost pop3
user zapnho
pass ******
retr 1 (xem thư số 1)
QUIT

QUIT để logout.

Cài đặt và cấu hình Webmail (SquirrelMail).

Cài các gói phụ thuộc để có thể sử dụng webmail và cài SquirrelMail.

sudo apt update
sudo apt install apache2 php libapache2-mod-php php-pear php-mcrypt php-imap
$

Vào trang quản lý tên miền cập nhật bản ghi SPF và DMARC và DKIM.

TXT Name(z-log.net) Content (v=spf1 ip4:193.114.39.98 a mx ~all) TTL(Auto)

TXT Name(_dmarc) Content(v=DMARC1; p=quarantine; aspf=r; sp=none) TTS(Auto)

Cài đặt và cấu hình DKIM

sudo apt-get install opendkim opendkim-tools
sudo systemctl start opendkim
sudo systemctl enable opendkim
sudo mkdir /etc/opendkim
opendkim-genkey -D /etc/opendkim/ --domain z-log.net --selector mail
sudo cat /etc/opendkim/mail.txt

Copy code từ lệnh $cat dán vào content của record bỏ dấy “”, ghép 2 hàng dài lại.

sudo chown -R opendkim:opendkim /etc/opendkim
sudo nano /etc/opendkim.conf 

Thêm các dòng.

Autorestart yes
AutorestartRate 10/1h
LogWhy yes
Mode sv
UMask 002
#Socket local:/run/opendkim/opendkim.sock (thêm # để loại bỏ dòng code)
Socket inet:8891@localhost (chọn)

Thêm 5 dòng vào cuối.

ExternalIgnoreList refile/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
SignatureAlgorithm rsa-sha256

Thoát lưu.

Tạo file TrustedHosts.

sudo nano /etc/opendkim/TrustedHosts
z-log.net

Thoát và lưu.

Tạo file KeyTable.

sudo nano /etc/opendkim/KeyTable
mail._domainkey.z-log.net z-log.net:mail:/etc/opendkim/dkim.private

Thoát và lưu.

Tạo file SigningTable.

sudo nano /etc/opendkim/SigningTable
*@z-log.net mail._domainkey.z-log.net

Thoát và.

Khởi động lại postfix và opendkim.

sudo systemctl restart postfix
sudo systemctl restart opendkim

Kiểm tra DKIM truy cập trang https://dmarcian.com/dkim-inspector/.

Nhập z-log.net -> mail ->  Inspect DKIM.

Kiểm tra trạng thái cấu hình email trên trang https://mxtool.com.

Nhập địa chỉ mail server vào ô MX Lookup và kiểm tra.

Test gửi mail.

/usr/sbin/sendmail diachimail@gmail.com
From:zapnho@z-log.net
Subject: Test mail
Hello there
Di choi giao thua khong ban
:)))
Phím Ctrl+D (để gửi)

Cập nhật các record DNS SPF và DMARC để khắc phục bị đưa vào spam mail.

Type(TXT) Name(_dmarc) TTL(Auto)
Content(
v=DMARC1; p=quarantine; aspf=r; sp=none
)
Type(TXT) Name(z-log.net) TTL(Auto)
Content(
v=spf1 ip4:133.xxx.xxx.37 a mx ~all
)

Kiểm tra lại các bản ghi tại trang.

https://dmarcian.com/

Bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *