블로그 이미지
항상웃자 애바른

카테고리

분류 전체보기 (99)
사진 (4)
비공개 (0)
업무 (1)
자동차 (6)
개발 (23)
가족 (33)
모바일 (13)
Total
Today
Yesterday

달력

« » 2025.6
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

공지사항

최근에 올라온 글

MRTG를 사용하여 qmail 통계 그래프 생성하기

Table of Contents
1. 필요한 준비물
2. 먼저 설치되어야 할 소프트웨어
3. 로그 디렉토리의 생성
4. 설정화일 변경

1. 필요한 준비물

1.1. 필요한 프로그램들

아래의 프로그램들이 먼저 설치되어 있어야 합니다.

  • qmail-1.03 (포트에서 설치하세요: /usr/ports/mail/qmail)

  • mrtg-2.9.11 (포트에서 설치하세요: /usr/ports/net/mrtg)

본 문서에스는 qmail의 설치 방법은 다루지 않습니다. qmail의 설치에 대해서는 Installing qmail under FreeBSD를 참고하세요.


2. 먼저 설치되어야 할 소프트웨어

2.1. daemontools-0.70

패키지(qmailmrtg)에서 setuidgidmultilog 유틸리티가 사용되기 때문에, 해당 유틸리티가 설치되어 있어야 합니다. 다음과 같이 설치하십시요.

# cd /usr/ports/sysutils/daemontools
# make install

2.2. qmailmrtg7-3.1

Inter7에서 구할 수 있습니다.

# cd tmp
# fetch http://inter7.com/qmailmrtg7/qmailmrtg7-3.1.tar.gz
# gunzip qmailmrtg7-3.1.tar.gz
# tar -xvf qmailmrtg7-3.1.tar
# cd qmailmrtg7-3.1
# make all
# make install
# rm /etc/qmail.mrtg.cfg

위의 설치 과정을 보면 마지막에 /etc/qmail.mrtg.cfg 파일을 삭제하는 것을 알 수 있습니다. qmailmrtg7는 설치 과정에서 설정 파일을 /etc 디렉토리에 복사하는데, 설정 파일은 /usr/local/etc/mrtg 디렉토리에 위치하거나, 기본 MRTG 설정 파일 /usr/local/etc/mrtg/mrtg.cfg에 통합되는 것이 이상적이기 때문에 삭제합니다. 다음 섹션에서 보다 자세히 다룹니다.


3. 로그 디렉토리의 생성

/var/log에 다음과 같이 데몬들을 위한 디렉토리를 만듭니다.

# cd /var/log
# mkdir qmail
# mkdir pop3
# mkdir smtp

보안적인 면을 고려한다면 이 디렉토리들의 퍼미션을 적절하게 수정 하십시요. (역주: 예 chmod 500)


4. 설정화일 변경

4.1. /etc/rc.conf

qmail이 Installing qmail under FreeBSD에 따라 정확히 설치 되었다면 /etc/rc.conf의 값들이 변경되어 있을것입니다. 만약 그렇지 않다면 /etc/rc.conf에 다음 항목을 추가하십시요.

# qmail options
qmail_smtp_enable="YES"
qmail_pop_enable="YES"
qmail_enable="YES"

4.2. /var/qmail/rc

/var/qmail/rc에서 구동되는 각각의 데몬 구동용 명령어들이 multilog의 장점을 취하기 위해서는 아래의 스크립트에서 HOST.DOMAIN을 메일서버의 FQDN(Fully Qualified Domain Name, 역주: 인터넷 도메인 주소라고 보시면 됩니다)으로 수정하여야 합니다.

#!/bin/sh

#
# This script starts and stops the qmail mail functions.
#

# Suck in the configuration variables.
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
        source_rc_confs
elif [ -r /etc/rc.conf ]; then
        . /etc/rc.conf
fi


case "$1" in
start)
        case ${qmail_smtp_enable} in
        [Yy][Ee][Ss])
                # Start the qmail smtp daemon
                env - PATH="/var/qmail/bin:/usr/local/bin" \
                tcpserver -v -H -R  -x /etc/tcp.smtp.cdb \
                -c200 -u82 -g81 0 25 fixcrio /var/qmail/bin/qmail-smtpd \
                2>&1 | /usr/local/bin/setuidgid qmaill \
                /usr/local/bin/multilog t n100 s1000000 /var/log/smtp &

                echo -n " qmail-smtp"
                ;;
        esac

        case ${qmail_pop_enable} in
        [Yy][Ee][Ss])
                # Start the qmail pop daemon
                env - PATH="/var/qmail/bin:/usr/local/bin" \
                tcpserver -v -H -R -c200 0 110 \
                /var/qmail/bin/qmail-popup HOST.DOMAIN \
                /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d \
                Maildir 2>&1 | /usr/local/bin/setuidgid qmaill \
                /usr/local/bin/multilog t n100 s1000000 /var/log/pop3 &

                echo -n " qmail-pop"
                ;;
        esac

        case ${qmail_enable} in
        [Yy][Ee][Ss])
                # Start qmail
                exec env - PATH="/var/qmail/bin:$PATH" \
                qmail-start ./Maildir | /usr/local/bin/setuidgid qmaill \
                /usr/local/bin/multilog t n100 s1000000 /var/log/qmail &

                echo -n " qmail"
                ;;
        esac
        ;;
stop)
        # Stop the smtp daemon
        smtppid=`ps -axw | grep tcpserver | grep smtp | grep -v grep | awk '{ print $1 }'`
        if [ "$smtppid" != "" ]; then
                kill $smtppid
                echo -n " qmail-smtp"
        fi

        # Stop the pop daemon
        poppid=`ps -axw | grep tcpserver | grep popup | grep -v grep | awk '{ print $1 }'`
        if [ "$poppid" != "" ]; then
                kill $poppid
                echo -n " qmail-pop"
        fi

        # Stop qmail
        qmailpid=`ps -axw | grep qmail-send | grep -v grep | awk '{ print $1 }'`
        if [ "$qmailpid" != "" ]; then
                kill $qmailpid
                echo -n " qmail"
        fi
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        ;;
esac

exit 0

\ 문자로 종결되는 행은 원래 다음 행과의 하나의 긴 라인 입니다만, 여기에서는 \ 문자를 사용해 두개의 행으로 나누어 표현하고 있습니다.


4.3. /usr/local/etc/mrtg/mrtg.cfg

mrtg.cfg의 설정은 시스템에 어떻게 MRTG를 설정하는가에 매우 의존적입니다. 먼저 다음과 같이 qmail.mrtg.cfg 예제 설정 파일을 mrtg.cfg에 추가하여 기본 설정으로 구동해 본 후에 시스템에 맞추어 수정을 가하십시요. :

# cd /usr/local/etc/mrtg
# mv mrtg.cfg mrtg.cfg.bak
# cat mrtg.cfg.bak /tmp/qmailmrtg7-3.1/qmail.mrtg.cfg > mrtg.cfg

위의 과정 후 생성된 파일 mrtg.cfg 에 문제가 없는지 꼭 점검 하십시요. 그리고, 사이트의 MRTG 인덱스 페이지에서 새롭게 생성된 HTML페이지들을 가리키는 링크를 추가하여야 합니다.

Posted by 애바른
, |