Gỡ lỗi email chào mừng gửi không thành công trong HiTechCloud Enterprise
Triệu chứng: hitechcloudcli user-add / giao diện HiTechAdmin báo Failed to send welcome email, không có lỗi nào trong /var/log/hitechcloud/admin/error.log và không có thư mục /var/log/hitechcloud/admin/emails/, dù các lần thử SMTP trực tiếp đều thành công.
Các bước gỡ lỗi
1. Bật ghi nhật ký chi tiết
hitechcloudcli config update dev_mode on
systemctl restart admin
tail -f /var/log/hitechcloud/admin/error.log
Tái hiện qua CLI với -x để có vết đầy đủ:
hitechcloudcli -x user-add <username> '<password>' <email> <plan>
Kiểm tra xem bước gửi email có thực sự được thử hay bị bỏ qua âm thầm, ví dụ:
+ send_welcome_email
+ [[ false == true ]]
+ return 0
Nếu bị bỏ qua, hãy đảm bảo lệnh CLI có cùng các cờ mà giao diện gửi đi (ví dụ --send-email) — nếu không bạn sẽ không tái hiện đúng nhánh mã đó.
2. Xác minh cấu hình SMTP đã lưu khớp với thông tin đăng nhập mong muốn
Ký tự đặc biệt có thể bị loại bỏ hoặc thoát sai khi nhập qua giao diện:
grep '^mail_' /etc/hitechcloud/hitechcloud/conf/hitechcloud.config
Sửa qua CLI nếu cần:
hitechcloudcli config update mail_password '<password>'
3. Chạy một lượt chẩn đoán sạch
#!/bin/bash
CONFIGURED_EMAIL=$(hitechcloudcli config get email)
DEV_MODE=$(hitechcloudcli config get dev_mode)
[[ -z "$CONFIGURED_EMAIL" ]] && { echo "ERROR: no notification email configured. Run: hitechcloudcli config update email example@yourdomain.com"; exit 1; }
[[ "$DEV_MODE" != "on" ]] && { echo "ERROR: dev_mode must be on. Run: hitechcloudcli config update dev_mode on && service admin restart"; exit 1; }
mv /var/log/hitechcloud/admin/error.log /var/log/hitechcloud/admin/error.log.OLD 2>&1 && touch /var/log/hitechcloud/admin/error.log
mv /var/log/hitechcloud/admin/notifications.log /var/log/hitechcloud/admin/notifications.log.OLD && touch /var/log/hitechcloud/admin/notifications.log
hitechcloudcli -x sentinel --startup 2>&1 | tail -n 10
grep "/send_email" /var/log/hitechcloud/admin/access.log | tail -n 1
cat /var/log/hitechcloud/admin/error.log
Script này xác định xem yêu cầu có tới được /send_email hay không và ghi lại lỗi phát sinh.
Các nguyên nhân gốc thường gặp
Hairpin NAT — nếu panel gọi tới tên miền công khai của chính nó từ bên trong (thay vì localhost) và mạng/tường lửa không hỗ trợ hairpin NAT, lời gọi nội bộ sẽ hết thời gian chờ.
Cách sửa: thêm một mục hosts cục bộ để máy chủ phân giải tên miền của chính nó về chính nó:
127.0.0.1 <admin-panel-domain>
Nhà cung cấp SMTP chặn IP — các lần kết nối thử lặp lại có thể kích hoạt cơ chế chống lạm dụng, ví dụ:
421 - 4.4.5 Directory harvest attack detected
Cách sửa: yêu cầu nhà cung cấp mail gỡ chặn và đưa IP gửi đi của máy chủ vào danh sách cho phép.
Danh sách kiểm tra
- Tái hiện bằng
hitechcloudcli -x user-add ...với cùng các cờ như giao diện - Bật
dev_mode, khởi động lại admin, theo dõierror.log - Xác nhận bước gửi email không bị bỏ qua âm thầm
- Xác minh các giá trị trong tệp cấu hình khớp v ới thông tin đăng nhập mong muốn
- Chạy script chẩn đoán để xác nhận yêu cầu tới được
/send_email - Kiểm tra sự cố hairpin NAT
- Hỏi nhà cung cấp SMTP xem IP có bị chặn do thử nghiệm lặp lại không