Lỗi “IMAP Auth process broken 993”

Lỗi “IMAP Auth process broken 993” thường có nghĩa là phần daemon xác thực (auth) cho IMAP (cổng 993 = IMAPS) không hoạt động/không trả lời được, hoặc có lỗi SSL/TLS, quyền truy cập socket, hoặc service bị chặn. Dưới đây là checklist chẩn đoán và các lệnh thực tế (dùng trên máy Linux) — chạy từng bước, đọc kết quả, sửa theo hướng dẫn.

1) Kiểm tra service IMAP (ví dụ Dovecot, Courier)

Nếu bạn dùng Dovecot:

sudo systemctl status dovecot
sudo journalctl -u dovecot -n 200
sudo dovecot -n          # show dovecot config (kiểm tra auth, ssl, sockets)

Nếu dùng Courier:

sudo systemctl status courier-authdaemon
sudo journalctl -u courier-authdaemon -n 200

Mục tiêu: thấy service active (running); nếu crash hoặc restart nhiều lần thì xem log để biết lý do.

2) Kiểm tra log mail để tìm lỗi chi tiết

Các file log thường:

sudo tail -n 200 /var/log/mail.log
sudo tail -n 200 /var/log/maillog
sudo grep -i "auth" /var/log/mail.log | tail -n 100

Tìm dòng kiểu: auth: Fatal: ..., imap-login: Disconnected ..., auth: Error: ... — copy những dòng đó nếu cần gửi vào đây.

3) Kiểm tra socket/auth permissions (vì lỗi “auth process broken” rất thường do socket)

Dovecot ví dụ:

sudo ls -l /var/run/dovecot/
sudo ls -l /var/run/dovecot/auth-client

Hoặc:

sudo ls -l /var/run/dovecot/*auth*

Nếu socket không tồn tại hoặc quyền sai — dovecot-auth không thể giao tiếp. Sửa quyền hoặc owner theo config; thường owner là dovecot:dovecot hoặc root:dovecot.

4) Kiểm tra cổng 993 lắng nghe và process

ss -ltnp | grep :993
sudo lsof -iTCP:993 -sTCP:LISTEN -Pn

Bạn phải thấy process (dovecot, courier-imapd, cyrus-imapd) đang LISTEN trên 0.0.0.0:993 hoặc ip cụ thể.

5) Kiểm tra SSL/TLS (chứng chỉ hỏng/hết hạn hoặc key không đọc được gây lỗi auth)

Test TLS handshake:

openssl s_client -connect your.domain.tld:993 -crlf -servername your.domain.tld

Quan sát: có certificate chain hiển thị không? Có error kiểu SSL routines:... hay handshake failure? Nếu cert sai/hết hạn, thay cert (Let’s Encrypt hoặc cert khác) và reload dovecot.

Dovecot config liên quan:

sudo dovecot -n | grep -i ssl

Kiểm tra đường dẫn ssl_cert ssl_key trong config có tồn tại và permission cho user dovecot đọc được không.

6) Kiểm tra cơ chế xác thực (PAM, passwd-file, LDAP, SQL)

Nếu bạn dùng SQL/LDAP để auth, thử test bằng lệnh doveadm:

sudo doveadm auth test username@example.com password

Kết quả sẽ cho biết backend trả lời hay lỗi. Nếu báo lỗi kết nối DB/LDAP — sửa cấu hình backend.

7) Kiểm tra fail2ban / firewall / SELinux

  • Fail2ban có thể block IP client:
sudo fail2ban-client status
sudo fail2ban-client status dovecot
  • Firewall:
sudo iptables -L -n | grep 993
sudo ss -ltnp | grep 993
  • SELinux (CentOS/RHEL): xem audit logs hoặc thử tạm disable để test:
sestatus
# (cẩn thận) sudo setenforce 0    # chỉ test

8) Kiểm tra file descriptor / ulimit nếu auth crash do resource

sudo cat /proc/$(pidof dovecot)/limits

Nếu process bị kill do quá nhiều kết nối — điều chỉnh service/ulimits.

9) Restart an toàn và bật debug tạm thời (nếu cần)

Bật debug trong dovecot config (auth_debug=yes, auth_debug_passwords=yes) rồi restart để thấy chi tiết:

sudo sed -n '1,200p' /etc/dovecot/dovecot.conf   # hoặc /etc/dovecot/conf.d/*
# Bật debug trong conf, sau đó:
sudo systemctl restart dovecot
sudo journalctl -u dovecot -f

Lưu ý: đừng để debug bật lâu trên production vì sẽ log password.

10) Các lệnh “sửa nhanh” (thử tạm)

sudo systemctl restart dovecot
sudo systemctl daemon-reload
sudo systemctl restart dovecot

(đôi khi chỉ restart khắc phục nếu vấn đề là tiến trình treo). Nhưng nếu config sai, restart sẽ fail — xem journalctl ngay.