sendmail mqueue-client를 지울 수 없습니다.

sendmail mqueue-client를 지울 수 없습니다.
drwxr-xr-x  2 smmsp smmsp  4.0K May  6 23:31 mqueue
drwxrws---  2 smmsp smmsp  29M May  8 10:40 mqueue-client

보시다시피 mqueue-client29MB의 전송되지 않은 메일이 가득 차 있습니다. 이는 실패하는 localhost로 메일을 보내는 내부 기능에서 발생한 것 같습니다.

대기열을 지우려고 여러 번 시도했지만 성공하지 못했습니다. 결과적으로 상당한 CPU 리소스를 사용하는 프로세스가 발생합니다.

16287 smmsp     20   0 50212  44m 2416 R   85  4.4 965:35.45 sendmail-msp

프로세스를 종료하고, sendmail 서비스를 중지하고, mqueue-client의 내용을 삭제하고, 심지어 smmsp 사용자로 전환해 보았습니다. 그러나 아무도 효과가 없었습니다. rm메일을 제거하려고 하면 멈춥니다.

이 대기열을 비우려면 어떻게 해야 합니까?

이 작업을 마치면 모든 것을 Postfix로 옮길 것입니다.

답변1

댓글에서 Janne이 제안한 대로 내 메일을 살펴 syslog보니 오류를 보내지 못한 많은 메일이 지연되어 mqueue-client폴더에 쌓여 있는 것을 발견했습니다.

좀 파헤쳐본 결과크론탭완료/공지/경고/오류 시 메일 루트로 설정됩니다. 발행 하고 구성 상단에 crontab -e추가하면 더 이상 메일이 발송되지 않으며 문제가 해결되었습니다!MAILTO=""

mqueue-client이제 이 Bash 스크립트를 사용하여 150만 개 정도의 잘못된 이메일을 삭제하겠습니다 .

#!/usr/bin/env bash

cd mqueue-client

deleted=0

for i in `ls`
do
        rm -f $i
        percentage=$(bc <<< "scale=2; ($deleted / 1035435) * 100")
        ((deleted++))

        echo "Deleted $i. Files deleted $deleted. $percentage% complete."
done

다음을 사용하여 /var/spool에서 실행합니다../filename

업데이트

불행하게도 이 스크립트를 밤새도록 실행한 후에도 메일 대기열은 크게 줄어들지 않았습니다. 이는 대기열을 지우도록 설정된 CRON을 실행하는 분을 비활성화하지 않았지만 백로그가 증가했기 때문입니다. 이제 이 기능이 비활성화되었으면 모든 것이 지워지기를 바랍니다.

관련 정보