달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 3. 30. 18:06

[ QMAIL ] qmail 로그 통계 bash로 ~ 용-ILE/SH/BASH/CSH2012. 3. 30. 18:06

 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 들어간 파일을 백업하지 않고 영구 삭제

 

 

 

 

 

 


 

:
Posted by mastar