
1. Nhận biết
- VPS của bạn tự nhiên chậm, RAM và CPU tăng cao
- Email không đến được người nhận
- DirectAdmin thông báo lượng mail gửi ra nhiều
- Địa chỉ IP bị Blacklist

2. Nguyên nhân
Nếu là máy chủ website có thể source code bạn có vấn đề. Hãy chắc chắn rằng các module, plugin, theme là đáng tin cậy.
- SMTP spam: Có thể tài khoản nào đó bị đánh cắp
- User chủ động spam mail ra ngoài (Email Marketing)
- Do hàm
mail()
được enable và bị lạm dụng
3. Cách xác định
Step 1: Kiểm tra số lượng mail trong queue.
Nếu con số >100 thì cũng đồng nghĩa là VPS đang thực hiện spam mail ra ngoài
exim -bpc

Step 2: Kiểm tra danh sách mail trong queue
Để biết cụ thể user account mail nào đang thực hiện spam
exim -bp

Kiểm tra mail có chứa script mã độc
Lấy ví dụ 1 ID : 1nxghK-00086Q-SC
exim –Mvh 1nxghK-00086Q-SC
Step 3: Kiểm tra log mail
cd /var/log/exim
tail -n 100 mainlog |more
Hoặc
tail -n 10000 mainlog |grep user@example.com |more // lệnh này sẽ liệt kê log theo user được truy vấn
Step 4: Kiểm tra nội dung mail
exim -Mvh [id] // id dạng 1YlI6V-0004K0-MT
4. Cách khắc phục
Step 1: Trước tiên cần thực hiện xóa/gửi toàn bộ/một mail trong queue
exim -Mrm {message-id} // xóa 1 mail trong queue, id dạng 1YlI6V-0004K0-MT
exim -bp | awk '{ print $3 }' | xargs exim -Mrm // xóa tòa bộ mail trong queue
exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm // xóa tòa bộ mail trong frozen
/usr/sbin/exim -bp |awk '{print $3}' | xargs -n 1 -P 40 /usr/sbin/exim -v -M //gửi toàn bộ mail trong queue
Step 2: Thực hiện config và stop service exim
vi /etc/exim.conf //Chỉnh sửa bất kỳ 1 dòng nào sau đó lưu lại
/etc/init.d/exim stop //Stop service exim
Step 3: Disable hàm mail()
php -i | grep php.ini //Xác định file php.ini
Giả sử kết quả trả về file php.ini
nằm trong /usr/local/php74/lib/php.ini
grep disable_functions /usr/local/php74/lib/php.ini //Kiểm tra xem hàm nào bị disable
sed -i 's/disable_functions =/disable_functions = mail/' /usr/local/php54/lib/php.ini //Thực hiện disable hàm mail()
/etc/init.d/httpd restart //Restart service httpd
Step 4: Nếu có sử dụng control DirectAdmin, thực hiện giới hạn email mỗi user được gửi phép gửi ra mỗi ngày
Login vào control DirectAdmin với quyền admin --> tìm đế mục Extra Features --> click Administrator Setting
Thực hiện nhập 1 con số trong "Daily Email Limit per DirectAdmin User" để giới hạn mỗi usre được phép gửi ra số lượng mail mỗi ngày, sau đó Save lại

Step 5: Xóa toàn bộ mail queue
Xóa toàn bộ mail:
exim -bp | awk '{ print $3 }' | xargs exim -Mrm
