Xử lý sự cố spam trên Zimbra

Tác giả: 14/09/2023

Vấn đề hệ thống gửi spam mail ra ngoài

Vấn đề này gây ảnh hưởng rất nghiêm trọng trong việc gửi nhận mail.

Nguyên nhân

  • IP bị blacklist
  • Không thể gửi email đi vì hàng đợi bị đầy do các spam mail chiếm chỗ.

Hướng xử lý

Việc đầu tiên bạn cần xác định tài khoản đang thực hiện spam ra ngoài. Khi đã xác định được tài khoản spam thì sẽ dễ xử lý hơn.

Cách 1: Xem spam trên giao diện

anh 33
anh 35

Cách 2: Kiểm tra bằng lệnh

cat /var/log/zimbra.log | sed -n 's/.*sasl_username=//p' | sort | uniq -c | sort -nr
CleanShot 2022 07 19 at 14.35.48

Ngay lúc này bạn cần reset mật khẩu của account nghi ngờ (thường nằm trong 4 account đầu tiên) , thực hiện vô hiệu tài khoản đó và khởi động lại Zimbra MTA.

su - zimbra
zmmtactl restart

Để phòng tránh việc một người dùng chưa được xác thực gửi email ra ngoài, bạn thực hiện theo tài liệu này. Cụ thể là:

  • Cập nhật zimbraMtaSmtpdRejectUnlistedRecipient & zimbraMtaSmtpdRejectUnlistedSender, với quyền zimbra:
zmprov mcf zimbraMtaSmtpdRejectUnlistedRecipient yes
zmprov mcf zimbraMtaSmtpdRejectUnlistedSender yes
zmmtactl restart
zmconfigdctl restart
  • Thiết lập zimbraMtaSmtpdSenderLoginMaps
zmprov mcf zimbraMtaSmtpdSenderLoginMaps proxy:ldap:/opt/zimbra/conf/ldap-slm.cf +zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch
  • Chỉnh sửa file smtpd_sender_restrictions

Bạn cần chỉnh sửa file /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf và thêm vào phía sau mục permit_mynetworks một mục mới là reject_sender_login_mismatch.

vi /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf

Thêm vào dòng sau vào file

permit_mynetworks, reject_sender_login_mismatch
  • Khởi động lại mailboxd service
zmmailboxdctl restart

Cần đảm bảo rằng zimbraMtaMyNetworks chỉ chứa IP của chính mail server hoặc network mà bạn tin tưởng cho phép gửi mail mà không cần xác thực. Bạn có thể xem tham số này bằng lệnh:

zmprov gs $(zmhostname) zimbraMtaMyNetworks
zimbraMtaMyNetworks: 127.0.0.0/8 1.2.3.4/32

Trong đó 1.2.3.4/32 là IP của server.

Vấn đề server bị spammer tấn công vào

Vấn đề:

  • Không thể gửi hoặc nhận mail
  • Có các deferred mail trong hàng đợi.

Giải pháp

Kiểm tra các hàng đợi, với quyền root:

/opt/zimbra/libexec/zmqstat
hold=2054
corrupt=0
deferred=2
active=20000
incoming=37593

Dùng lệnh sau để tìm ra IP nào tạo nhiều kết nối nhất:

cat /var/log/zimbra.log | grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'| sort | uniq -c | sort -nr
19884 192.168.1.246
11587 192.168.5.1
2723 192.168.5.246

REJECT email từ các địa chỉ IP nghi ngờ này. Bạn có thể dùng postfix:

Kiểm tra xem đã cấu hình postfix_blacklist chưa:

su - zimbra
zmprov gacf zimbraMtaRestriction
zimbraMtaRestriction: check_client_access lmdb:/opt/zimbra/conf/postfix_blacklist
zimbraMtaRestriction: check_client_access lmdb:/opt/zimbra/conf/postfix_rbl_override

Edit file /opt/zimbra/conf/postfix_blacklist và thêm vào các IP đã tìm ra ở trên:

192.168.1.246 REJECT
192.168.5.1 REJECT
192.168.5.246 REJECT

Xem lại các cấu hình DNSBL, nếu chưa triển khai thì cấu hình sử dụng một số blacklist thông dụng:

zmprov mcf +zimbraMtaRestriction "reject_rbl_client zen.spamhaus.org"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client b.barracudacentral.org"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client bl.spamcop.net"

Với lệnh sau bạn sẽ đưa tất cả các MAILER-DAEMON vào hàng đợi, với quyền root:

/opt/zimbra/postfix/sbin/postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "MAILER-DAEMON" ) print $1 }' | tr -d '!*' | /opt/zimbra/common/sbin/postsuper -h

Sau khi đã đưa các mail vào hàng đợi hold, bạn có thể thấy các hàng đợi khác đã trống và có thể gửi nhận mail bình thường:

/opt/zimbra/libexec/zmqstat

Output

hold=43464
corrupt=0
deferred=0
active=0
incoming=0

Trả lời