June 19, 2015

xử lý lỗi exim dead but subsys locked và quản lý mail queue exim

1. Cách khắc phục lỗi exim dead but subsys locked

Khi sử dụng Direct Admin quản lý mail nghĩa là bạn đang dựa trên 2 dịch vụ mail có sẵn của Centost đó là dovecot cổng 110 để nhận mail và exim cổng 25 SMTP để gửi mail. Một ngày đẹp trời, vào DA bạn phát hiện ra dịch vụ exim bị stop và không có cách nào để start nó lại.

Login vào command line với user root và dùng lệnh #service exim status bạn nhận được thông báo như sau:Exim dead but subsys locked.

Để xử lý lỗi này, trước hết bạn cần phải vào thư mục /etc và kiểm tra xem có 2 file eximdisableexim.conf hay không bằng lệnh như sau:

#cd /etc
#ls exim*


Nếu bạn không thấy có file exim.conf thì chắc chắn không khởi động được exim. Bạn sẽ có thể tìm thấy file exim.conf.orig, bạn thực hiện lệnh copy như sau

#cp exim.conf.orig exim.conf

Sau đó khởi động lại exim bằng lệnh sau

#/etc/init.d/exim restart

Vậy là xong.

Trường hợp đã có file exim.conf mà vẫn không khởi động lại được exim bạn sẽ phải thực hiện thêm lệnh đổi tên (hoặc xóa hẳn) file eximdisable rồi khởi động lại như sau:

# /etc/eximdisable /etc/eximdisable-BAK
# rm -f /etc/eximdisable
# /etc/init.d/exim restart


2. cách kiểm tra và quản lý mail queue của exim

Một trong những nguyên nhân khiến exim có thể bị dừng là do các mail trong queue quá nhiều. Bạn có thể dùng các lệnh dưới đây để kiểm tra và giải phóng mail trong queue

1) Kiểm tra mail trong hàng đợi exim dùng một trong 3 lệnh sau

# mailq
#exim -bp
#/usr/sbin/exim -bp


Các queued mail của exim thường nằm trong spool, bạn có thể vào kiểm tra bằng 2 lệnh sau

#cd  /var/spool/exim/msglog/
#cd  /var/spool/exim/input/


Để xóa các mail trong queue hoặc gửi lại mail các bạn có thể dùng các lệnh sau

#runq hoặc #exim -q để xóa các mail trong hàng đợi mà ko cần gửi lại

Nếu như sau khi xóa, bạn vẫn nhận thấy có một số mail đọng lại thì có thể là do một flag được đặt cho mail nên nó không được gửi đi và. Bạn dùng lệnh sau gửi lại các mail và xóa chúng

#exim -qf     (Gửi các mail có flag sau đó xóa)
#exim -qff   (Gửi lại tất cả các mail kể cả mail không có flag sau đó xóa)

Lưu ý trong một số trường hợp phải gõ đường dẫn đầy đủ đến file exim như sau

#/usr/sbin/exim -q
#/usr/sbin/exim -qff

Trong một số trường hợp nếu các lệnh exim -q nói trên không có tác dụng, chúng ta có thể phải dùng đến các lệnh sau:

Xoá một mail đang nằm trong Queue:
                       # exim -Mrm (message-id)
Xoá toàn bộ email đang có trong Queue:
           

Gửi toàn bộ email đang có trong Queue:

Chỉ xem danh sách các email nào đang ở trạng thái Frozen:
                        #exim -bpr | grep frozen | wc -l

Xóa toàn bộ email ở trạng thái Frozen:
                         
hoặc
                         #exiqgrep -z -i | xargs exim -Mrm

Chỉ xóa những email trạng thái Frozen đã hơn 1 ngày:
                         #exiqgrep -zi -o 86400

0 comments:

Post a Comment