http://suite.tistory.com 2012.04
qmail 의 로그 통계를 보여주는 주는게 검색을 해보면
* qmailmrtg http://www.inter7.com/index.php?page=qmailmrtg7
MRTG(http://oss.oetiker.ch/mrtg/) 를 이용하는걸로 생짜 html 으로
5분주기 하루 일주일 이런씩으로 흐름정도는 볼수있는데
상세한 수치를 보기는 어려움 1분단위로 할려면
http://www.loplop.net/projects/1minMRTG/ 있는데 잘안되서 안해봄
MRTG 만드신분이 1분단위로 더 자세하게 그래프를 보고싶다면
RRDTOOL 를 사용하라고 하는데 http://oss.oetiker.ch/rrdtool/
설치또 해야하고 무엇보다도 아파치에 PHP 모듈 연동도 들어가야해서 안해봄~
암튼 그래프로 흐름 보기로는 좋다!
- qmailanalog http://cr.yp.to/qmailanalog.html
qmail 을 만드신 DJB(http://cr.yp.to/djb.html) 아저씨가 만든거 같은데
구글링 해보니 matchup , multilog 관련해서 이슈도있고
뭔가 해주는것같구 번거로운것같아 사용안함
~~~~ bash 스크립트로 수신량 보기 ~~~~~~
※ 통계 분석에서 제일 좋은건
smtp current 로그파일을 파싱해서 DB에 넣고 지지고 볶고 하는게 제일 좋겠지만
걍 스크립트로 콘솔 인터페이스로 작성해봄
※ current time 데이터 변환
tstamp2ymdt.awk
qmail로그를 multilog로 찍고 있다면 ($ps -ef |grep multilog)
시간 포멧이 "@400000004f750c03278b96ac" 이런 스타일이고
이걸 사람이 알아볼수 있게 tai64nlocal (http://cr.yp.to/daemontools/tai64nlocal.html)
실행 파일을 이용하면 ISO format: YYYY-MM-DD HH:MM:SS.SSSSSSSSS 으로 변경해줌
ex) $) cat /var/log/qmail/smtpd/current | tai64nlocal
- awk로 시간 계산 가능하도록 YYYY-MM-DD HH:MM -> YYYYMMDDHHMM 으로 변경
~~~~~~~~~~~ tstamp2ymdt.awk ~~~~~~~~~~~~~~~~
BEGIN { }
{
start_day=$1;
start_time=$2;
gsub("-", "", start_day);
gsub(":", "", start_time);
start_dt=start_day""start_time;
start_dt=substr(start_dt, 0, 12);
print start_dt"|"$0;
}
END {}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※ 실행 스크립트 파일 stat.sh
stat.sh
~~~~~~~~~~~~~~~~ stat.sh ~~~~~~~~~~~~~~~~~~~~~~~~~
....
"11")
IFS=$'\n'
log_file="/var/log/qmail/smtpd/current"
ago_minute=5
sleep_second=`expr $ago_minute \* 60`
while [ 1 -eq 1 ];do
minutes_ago_datetime=`date -d "-$ago_minute minutes" +%Y%m%d%H%M`
current_datetime=`date +%Y%m%d%H%M`
echo "minutes_ago_datetime:$minutes_ago_datetime"
echo "current_datetime:$current_datetime"
data_str=`cat $log_file | tai64nlocal | awk -f tstamp2ymdt.awk`
tmp_real_file="tmpstat_realtime.file"
echo "" > $tmp_real_file
for line in $data_str
do
#datetime=`expr substr $line 1 12`
datetime=${line:0:12}
if [ $datetime -ge $minutes_ago_datetime ] && [ $datetime -le $current_datetime ]; then
echo $line >> $tmp_real_file
fi
done
echo "start_dt:$minutes_ago_datetime,end_dt:$current_datetime"
check_cnt=`grep -c " ok " $tmp_real_file`
echo "[REALTIME-SMTP] allow average $ago_minute minutes :$check_cnt";
per_cnt=0
if [ $check_cnt -gt 0 ] ; then
per_cnt=`echo "scale=3; $check_cnt / $sleep_second"|bc`
fi
echo "[REALTIME-SMTP] allow per seconds: $per_cnt"
echo "[uptime]"`uptime`
sleep $ago_minute
echo ""
done
....
5분 단위로 수신량 / 초당 수신량 보기 결과 : UX는 안좋다 달력도 없고 ~.~
* 유의할 점은 multilog로 current 로그 최대 사이즈는 16메가 정도이기 때문에 고려 필요
P.S Note shell script
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
sudo find mqueue/ | xargs sudo rm
5초마다 내 컴퓨터의 특정 포트에 연결된 목록의 갯수 보기
watch -n 5 -d 'netstat -an | grep "포트번호" | grep "ESTA" | wc -l'
# tcpdump -i eth0 tcp port 80 -w tcpdump.log -s 1500
# tcpdump -Xqnr tcpdump.log
/var/qmail/bin/watch -d -n1 ./qmail-qstat
QMAILQUEUE=/var/qmail/bin/simscan SIMSCAN_DEBUG=5 /var/qmail/bin/qmail-inject test@spam.test < spy.sample
nslookup 175.254.193.211.sbl-xbl.spamhaus.org
TCPREMOTEIP=211.193.254.175 rblsmtpd -r sbl-xbl.spamhaus.org /var/qmail/bin/qmail-smtpd
cat /var/log/qmail/smtpd/current|tai64nlocal
find . -ctime -1 | xargs rm -f # rm -f 파일수 많아서 못지울때나~
./qmail-remove -p spamtest # 큐에서 spamtest 들어간 파일 리스트만 출력
./qmail-remove -p spamtest -r # 큐에서 spamtest 들어간 파일을 /var/qmail/queue/yanked 디렉토리로 이동
./qmail-remove -p spamtest -d # 큐에서 spamtest 들어간 파일을 백업하지 않고 영구 삭제