시스템/Linux

/var/spool/postfix/maildrop 파일정리와 파일 미생성 설정하기

달빛궁전- 2021. 2. 27. 18:36


목적 : crontab 작업 실행 후 남겨지는 Mail파일을 적재하지 않도록 하는 것과 maildrop디렉토리 정리
내용 : /var/spool/postfix/maildrop 디렉토리는 crontab 작업 후 결과를 시스템이 Mail로 발송하며, 시스템에 메일시스템이 없으면
maildrop에 결과가 적재가 된다.

해당 시스템에 Mail 데몬을 구동시켜서, 메일서버 설정 하면 해당 결과가 메일로 발송되니 문제가 없겠지만
보통 crontab에 적용된 작업결과를 다 받을 필요도 없고, 결과가 필요하면 별도로 log파일로 떨구면 되니
그리고 굳이 잘 돌아가는 시스템에 메일 올리는것도 문제기도 하다.

그리고 삭제하는 큰 이유는
crontab 작업을 주기적으로 돌리는 시스템에 maildrop 디렉토리를 가서 ls를 때려보면 엄창난 temp 파일들이 적재되어있다.
결국 inode를 깍아먹는 주범이고, 디스크에 용량은 널널한데 어느날 df -i를 쳐서 보면 inode가 97~98%인 아주 괴랄한 상황이 가끔 펼쳐질 수 있다.

1. Crontab 작업 이후 Mail파일이 생성되지 않도록 하기

/var/spool/cron 디렉토리 접근하여, 관련된 ID들을 vi로 연 후 최상단에 MAILTO="" 입력

root id로 tail -f /var/log/cron으로 crontab 로그를 보며, 현황 확인

접속 창을 하나 더 열어서 su - 해당ID로 로그인 한 후 crontab -l로 리스트 확인
cron로그에서 해당 ID로 reload메시지가 나오면 정상적으로 적용됨

crontab에 다른 MAILTO 설정 값이 있다면 주석 처리 또는 삭제 해주면 되며, 해당 방법은 crond 또는 postfix 데몬 재시작 없이 바로 적용된다.


2. 기존에 적재된 파일 삭제

maildrop, hold, incoming, active, deferred queue를 모두 정리하려면..
# postsuper -d ALL

/var/spool/postfix/maildrop 경로에 해당하는 maildrop queue만 정리하려면 아래 명령어로 처리한다.
# postsuper -d ALL maildrop

유의해야될 점

해당 디렉토리를 보면 1kb도 안되는 파일들이 수두룩 하므로, I/O를 굉장히 써버린다.
클라우드의 경우에는 별로 상관없겠지만, 레거시 시스템인 경우 되도록 업무시간 외를 찾아서 실행하는 것이 좋을 것 같다.