호스팅 사용법
호스팅 신청하기
도메인 연결하기
홈페이지 올리기
이메일 설정하기
서버 사용법
FTP사용법
메일사용법
텔넷/리눅스
MySQL사용법
MSSQL사용법
리눅스명령어 모음
시스템사용법
서버세팅
네트워크/보안
L4 매뉴얼
백업/미러링
호스팅용어 모음
프로그램 사용법
알리미사용법
제로보드설치방법
워드프레스설치방법
태터툴즈설치방법
그누보드설치방법
우편번호DB사용법
폼메일사용법
주문서사용법
예전 게시판/방명록
전자지불 서비스


HOME > 호스팅 > 사용안내 > 서버세팅 > qmail 설치 및 활용
OS(리눅스 Redhat 9.0) 설치  OS(CentOS x.x) 설치  OS(windows2003) 설치  sendmail 설치 및 활용  qmail 설치 및 활용 
Quota 설치 및 활용  bind 설치 및 활용  APM 설치  webalizer 설치 및 활용 

▶ Qmail 설치 파일 받기
  • http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
    http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
    ftp://ftp.nfsi.pt/pub/qmail/rpms/patches/ucspi-tcp-0.88.errno.patch
    ftp://ftp.nfsi.pt/pub/qmail/rpms/patches/daemontools-0.76.errno.patch
    ftp://ftp.ip.pt/pub/qmail/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
    http://q07.asadal.net/qmail-source.tar.gz
    http://q07.asadal.net/qmail-ej-cocktail-10.tar.gz
    http://q07.asadal.net/vpopmail-5.4.0.tar.gz
    http://q07.asadal.net/courier-authlib-0.56.tar.bz2
    http://q07.asadal.net/expect-5.38.0-88.i386.rpm
    http://q07.asadal.net/courier-imap-2.1.1.tar.bz2

▶ 날짜 패치 (LINUX 7.1이상에서 문제가 되는 time.h에 대한 링크를 수정한다.)
  • mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
    ln -s /usr/include/time.h/usr/include/sys/time.h

  • 1. Ucspi-tcp 설치
    cd /usr/local/src
    tar zxvf qmail-source.tar.gz
    tar zxvf ucspi-tcp-0.88.tar.gz
    cd ucspi-tcp-0.88
    patch -p1 < ../qmail_patch/ucspi-tcp-0.88.errno.patch
    make && make setup check
    cd /usr/local/src

  • 2. Daemontools 설치
    mkdir /package
    cp daemontools-0.76.tar.gz /package/
    cd /package/
    tar zxvf daemontools-0.76.tar.gz
    cd admin/daemontools-0.76/
    patch -p1 < /usr/local/src/qmail_patch/daemontools-0.76.errno.patch
    package/install

  • 3. Qmail 설치
    (1) 사용자와 그룹 추가
    groupadd nofiles
    useradd -g nofiles -d /var/qmail qmaild
    useradd -g nofiles -d /var/qmail qmaill
    useradd -g nofiles -d /var/qmail qmailp
    groupadd qmail
    useradd -g qmail -d /var/qmail qmailq
    useradd -g qmail -d /var/qmail qmailr
    useradd -g qmail -d /var/qmail qmails
    useradd -g nofiles -d /var/qmail/alias alias

    (2) Qmail 설치
    tar zxvf qmail-ej-cocktail-10.tar.gz
    tar zxvf qmail-1.03.tar.gz; cd qmail-1.03
    patch -p1 < ../qmail_patch/qmail-1.03.errno.patch
    patch -p1 < ../qmail-ej-cocktail-10/qmail-ej-cocktail-10-no-starttls.patch
    make; make setup check

    ./config-fast 호스트명

    (3) Qmail 필요한 디렉터리 생성
    mkdir -p /var/qmail/supervise/qmail-send/log
    mkdir -p /var/qmail/supervise/qmail-smtpd/log
    chmod +t /var/qmail/supervise/qmail-send
    chmod +t /var/qmail/supervise/qmail-smtpd

  • 4. Qmail 스크립트 파일 생성
    (1) vi /var/qmail/rc(===안에 있는 파일을 저장)
    #!/bin/sh
    exec env - PATH="/var/qmail/bin:$PATH" \
    qmail-start ./Maildir/ splogger qmail

    (2) vi /var/qmail/supervise/qmail-send/run
    #!/bin/sh
    exec /var/qmail/rc

    (3) vi /var/qmail/supervise/qmail-send/log/run
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill \
    /usr/local/bin/multilog t -n100 -s1000000 /var/log/qmail/qmail

    (4) vi /var/qmail/supervise/qmail-smtpd/run
    #!/bin/sh
    Q_UID=`id -u vpopmail`
    Q_GID=`id -g vpopmail`
    exec /usr/local/bin/softlimit -m 52000000 \
    /usr/local/bin/tcpserver -vRHl0 -x/home/vpopmail/etc/tcp.smtp.cdb -c 100 \

    -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 호스트명 \
    /home/vpopmail/bin/vchkpw /bin/true 2>&1

    (5) vi /var/qmail/supervise/qmail-smtpd/log/run
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill \
    /usr/local/bin/multilog t -n100 -s1000000 /var/log/qmail/smtpd

    (6) 스크립트 파일 퍼미션 변경
    chmod 755 /var/qmail/supervise/qmail-send/run
    chmod 755 /var/qmail/supervise/qmail-send/log/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

    (7) 로그 디렉터리 생성과 퍼미션 설정
    mkdir -p /var/log/qmail/smtpd
    chown qmaill /var/log/qmail /var/log/qmail/smtpd

    (8) 앨리어스 설정
    cd ~alias
    echo root > .qmail-mailer-daemon
    echo root > .qmail-postmaster
    echo root > .qmail-root
    chmod 644 .qmail-mailer-daemon .qmail-postmaster .qmail-root

    (9) Qmail 시작, 종료 스크립트
    vi /etc/rc.d/init.d/qmail

    #!/bin/sh
    # For Red Hat chkconfig
    # chkconfig: - 80 30
    # description: the qmail MTA
    PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
    export PATH
    case "$1" in
      start)
    echo "Starting qmail"
    if [ -e /service/qmail-send ] ; then
    if svok /service/qmail-send ; then
    svc -u /service/qmail-send
    else
    echo qmail-send supervise not running
    fi
    else
    ln -s /var/qmail/supervise/qmail-send /service/
    fi
    if [ -e /service/qmail-smtpd ] ; then
    if svok /service/qmail-smtpd ; then
    svc -u /service/qmail-smtpd
    else
    echo qmail-smtpd supervise not running
    fi
    else
    ln -s /var/qmail/supervise/qmail-smtpd /service/
    fi
    if [ -d /var/lock/subsys ]; then
    touch /var/lock/subsys/qmail
    fi
    ;
    stop)
    echo "Stopping qmail..."
    echo " qmail-smtpd"
    svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
    rm -f /service/qmail-smtpd
    echo " qmail-send"
    svc -dx /service/qmail-send /service/qmail-send/log
    rm -f /service/qmail-send
    if [ -f /var/lock/subsys/qmail ]; then
    rm /var/lock/subsys/qmail
    fi
    ;;
    stat)
    svstat /service/qmail-send
    svstat /service/qmail-send/log
    svstat /service/qmail-smtpd
    svstat /service/qmail-smtpd/log
    qmail-qstat
    ;;
    doqueue|alrm|flush)
    echo "Flushing timeout table and sending ALRM signal to qmail-send."
    /var/qmail/bin/qmail-tcpok
    svc -a /service/qmail-send
    ;;
    queue)
    qmail-qstat
    qmail-qread
    ;;
    reload|hup)
    echo "Sending HUP signal to qmail-send."
    svc -h /service/qmail-send
    ;;
    pause)
    echo "Pausing qmail-send"
    svc -p /service/qmail-send
    echo "Pausing qmail-smtpd"
    svc -p /service/qmail-smtpd
    ;;
    cont)
    echo "Continuing qmail-send"
    svc -c /service/qmail-send
    echo "Continuing qmail-smtpd"
    svc -c /service/qmail-smtpd
    ;;
    restart)
    echo "Restarting qmail:"
    echo "* Stopping qmail-smtpd."
    svc -d /service/qmail-smtpd
    echo "* Sending qmail-send SIGTERM and restarting."
    svc -t /service/qmail-send
    echo "* Restarting qmail-smtpd."
    svc -u /service/qmail-smtpd
    ;;
    cdb)
    tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp<
    /home/vpopmail/etc/tcp.smtp
    chmod 644 /home/vpopmail/etc/tcp.smtp.cdb
    echo "Reloaded /home/vpopmail/etc/tcp.smtp."
    ;;
    help)
    cat <
    stop -- stops mail service (smtp connections refused, nothing goes out)
    start -- starts mail service (smtp connection accepted, mail can go out)
    pause -- temporarily stops mail service (connections accepted, nothing leaves)
    cont -- continues paused mail service
    stat -- displays status of mail service
    cdb -- rebuild the tcpserver cdb file forsmtp
    restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
    doqueue -- schedules queued messages for immediate delivery
    reload -- sends qmail-send HUP, rereading locals and virtualdomains
    queue -- shows status of queue
    alrm -- same as doqueue
    flush -- same as doqueue
    hup -- same as reload
    HELP
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
    exit 1
    ;;
    esac
    exit 0

    (10) 권한 변경
    chmod 700 /etc/rc.d/init.d/qmail

    (11) 센드메일 제거와 링크
    mv /usr/lib/sendmail /usr/lib/sendmail.old
    mv /usr/sbin/sendmail /usr/sbin/sendmail.old
    ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
    ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

  • 5. VPOPMAIL 설치(uid 700, gid 2100)
    (1) 환경 설정
    groupadd -g 2100 vchkpw
    useradd -u 700 -g vchkpw vpopmail
    mkdir ~vpopmail/etc
    echo "localhost|0|vpopmailuser|12345|vpopmail" > ~vpopmail/etc/vpopmail.mysql
    echo "localhost|0|vpopmailuser|12345|vpopmail" >> ~vpopmail/etc/vpopmail.mysql
    chown vpopmail.vchkpw ~vpopmail/etc/vpopmail.mysql
    chmod 640 ~vpopmail/etc/vpopmail.mysql
    echo "서버명" > /home/vpopmail/etc/defaultdomain
    ln -s /usr/local/mysql/lib/mysql/ /usr/lib/mysql
    ln -s /usr/local/mysql/include/mysql/ /usr/include/mysql

    (2) 디비 설정(dbuser vpopmailuser, dbpasswd 12345, dbname vpopmail)
    mysql -p

    CREATE DATABASE vpopmail;
    use vpopmail;
    grant CREATE,INSERT,SELECT,DELETE,UPDATE,DROP on vpopmail.* to vpopmailuser;
    grant CREATE,INSERT,SELECT,DELETE,UPDATE,DROP on vpopmail.* to vpopmailuser@localhost;
    set password for 'vpopmailuser'@'%'=password('12345');
    set password for 'vpopmailuser'@'localhost'=password('12345');
    flush privileges;

    (3) VPOPMAIL 설치하기(32비트 서버)
    cd /usr/local/src/
    tar zxvf vpopmail-5.4.0.tar.gz
    cd vpopmail-5.4.0

    ./configure \
    --enable-roaming-users=y --enable-logging=p --enable-tcprules-prog=/usr/local/bin/tcprules \
    --enable-relay-clear-minutes=15 --enable-auth-module=mysql --enable-mysql-logging=y \
    --enable-sqlincdir=/usr/local/mysql/include/mysql --enable-sqllibdir=/usr/local/mysql/lib/mysql \
    --enable-logging=y --enable-mysql-replication=y --enable-valias=y --enable-many-domains=n
    --enable-domainquotas=y
    make
    make install-strip

    (4) VPOPMAIL 설치하기(64비트 전용)
    cd /usr/local/src/
    tar zxvf vpopmail-5.4.13.tar.gz
    cd vpopmail-5.4.13
    ./configure CFLAGS=-fPIC --enable-roaming-users=y --enable-logging=p
    --enable-tcprules-prog=/usr/local/bin/tcprules --enable-relay-clear-minutes=15
    --enable-auth-module=mysql --enable-sql-logging --enable-sqlincdir=/usr/local/mysql/include/mysql
    --enable-sqllibdir=/usr/local/mysql/lib/mysql --enable-logging=y --enable-mysql-replication=y
    --enable-valias=y --enable-many-domains=n
    [root@sunnii vpopmail-5.4.13]# make
    [root@sunnii vpopmail-5.4.13]# make install-strip

    (5) smtp 인증 파일 생성
    # vi /home/vpopmail/etc/tcp.smtp(서버 아이피 입력)
    192.168.0.1:allow,RELAYCLIENT=""
    127.0.0.:allow,RELAYCLIENT=""
    :allow

    (6) tcp.smtp.cdb 파일 갱신
    tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp <
    /home/vpopmail/etc/tcp.smtp
    /home/vpopmail/bin/clearopensmtp

    * 실행시 에러 발생할 때에 mysql 라이브러리 경로 추가
    /usr/local/mysql/lib/mysql 추가후 ldconfig 명령어 실행

    (7) VPOP 시동 파일 생성
    mkdir -p /var/qmail/supervise/vpop/log
    vi /var/qmail/supervise/vpop/run

    #!/bin/sh
    VPOP_UID=`id -u vpopmail`
    VPOP_GID=`id -g vpopmail`
    exec /usr/local/bin/softlimit -m 50000000 \
    tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
    /var/qmail/bin/qmail-popup 호스트명 \
    /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

    vi /var/qmail/supervise/vpop/log/run
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t -n100 -s1000000 /var/log/qmail/pop3

    chmod 755 /var/qmail/supervise/vpop/run
    chmod 755 /var/qmail/supervise/vpop/log/run
    ln -s /var/qmail/supervise/vpop /service

  • 6. courier-imap 설치
    (1) courier-authlib 설치
    cd /usr/local/src/
    tar xvfpj courier-authlib-0.56.tar.bz2
    cd courier-authlib-0.56
    ./configure --with-redhat;make;make install
    cd /usr/local/src/

    (2) .expect, tcl 팩키지 확인. 없으면 설치한다.
    rpm -qa |grep tcl
    rpm -qa |grep expect

    - rpm으로 설치

    rpm -Uvh tcl-8.3.5-88.i386.rpm
    rpm -Uvh expect-5.38.0-88.i386.rpm

    - yum으로 설치

    yum install tcl
    yum install expect

    (3) 설치는 root가 아닌 일반 계정으로 한다.
    gcc, make, g++, find 퍼미션이 막혀있으면 변경해야한다.
    chmod 777 -R /home/vpopmail/lib/
    chmod 755 /home/vpopmail
    chmod 755 /usr/bin/gcc /usr/bin/make /usr/bin/g++ /usr/bin/find
    chmod 777 /usr/local/src/courier-imap-2.1.1.tar.bz2
    su vpopmail

    (4) courier-imap 설치
    cd /usr/local/src/
    tar xvjfp courier-imap-2.1.1.tar.bz2 -C /var/tmp
    cd /var/tmp/courier-imap-2.1.1/
    CFLAGS="-DHAVE_OPEN_SMTP_RELAY"; export CFLAGS

    env LIBS="-L/usr/lib/mysql -lmysqlclient -lz"

    ./configure \
    --prefix=/usr \
    --datadir=/usr/share/courier-imap \
    --sysconfdir=/etc/courier-imap \
    --libexecdir=/usr/libexec/courier-imap \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --with-redhat \
    --without-ipv6 \
    --enable-unicode \
    --with-authvchkpw \
    --without-authdaemon \
    --without-authmysql \
    --without-authldap \
    --without-authdaemon \
    --without-authpgsql i686

    make
    make check
    - 다시 root 계정으로 설치 완료한다.
    exit
    cd /var/tmp/courier-imap-2.1.1
    make install-strip
    make install-configure
    - gcc, make, g++, find 퍼미션 원래대로

    chmod 100 /usr/bin/gcc /usr/bin/make /usr/bin/g++ /usr/bin/find

    (5) vpopmail 퍼미션 원래대로 수정
    chmod 700 /home/vpopmail
    chmod 700 /home/vpopmail/lib/
    chmod 600 /home/vpopmail/lib/libvpopmail.a

    (6) 구동파일 만들기
    cp courier-imap.sysvinit /etc/init.d/courier-imap
    chmod 700 /etc/init.d/courier-imap
    vi /etc/courier-imap/imapd
      359줄 IMAPDSTART의 값을 ‘NO’->‘YES’로 변경한다. 즉, IMAPDSTART=YES

    (7) 스크립트 파일 수정 및 실행
    1) 스크립트 파일 수정

    # vi /usr/libexec/courier-imap/imapd.rc
    46번째 줄에 다음을 추가합니다.

    -stderrlogger=/usr/libexec/courier-imap/courierlogger \
    이부분을 아래와 같이 변경
    -stderrlogger=/usr/libexec/courier-imap/courierlogger -user=vpopmail -group=vchkpw \

    # vi /usr/libexec/courier-imap/pop3d.rc
    39번째 줄에 다음을 추가합니다.
    -stderrlogger=/usr/libexec/courier-imap/courierlogger \
    이부분을 아래와 같이 변경
    -stderrlogger=/usr/libexec/courier-imap/courierlogger -user=vpopmail -group=vchkpw \

    2) 스크립트 실행
    chmod 755 /usr/libexec/courier-imap/imapd.rc
    chmod 755 /usr/libexec/courier-imap/pop3d.rc
    /etc/rc.d/init.d/courier-imap start

    3) 기타 권한 설정
    chmod 755 /var/qmail/rc
    chmod 700 /etc/rc.d/init.d/qmail

  • 7. 데몬 실행
    /etc/rc.d/init.d/xinetd restart
    /etc/rc.d/init.d/courier-imap start
    /etc/rc.d/init.d/qmail start

  • 8. 기타 참고 사항
    (1) 원격에서 로컬로 메일을 받는 경우
    qmail-smtpd : 다른 서버의 SMTP에서 메시지를 받는다. 로컬로 받아들일 주소인지 (rcpthosts)확인한다.
    qmail-queue : 디스크에 메시지를 저장하고 qmail-send 호출한다.
    qmail-send : 겉봉에 쓰인 수신인 주소를 보고 로컬로 배달할 것인지 판단한다.
    qmail-lspawn : 편지함 이름 및 해당 사용자의 설정을 파악하고, qmail-local을 실행한다.
    qmail-local : 해당 편지함에 메시지를 기록한다.

    (2) 로컬에서 원격으로 메일을 보내는 경우
    qmail-inject : 누가 누구에게 보내는 것인지 겉봉에 기록한다.
    qmail-queue : 디스크에 메시지를 저장하고 qmail-send 호출한다.
    qmail-send : 겉봉에 기록된 수신인이 누구인지 파악해 로컬로 전달할지 원격서버로 전달할지 결정한다.
    qmail-rspawn : 외부에서 접속해서 메일을 보낼 때 이용한다.
    qmail-remote : 원격서버를 DNS에서 찾아서 SMTP로 연결한다.

    (3) 큐메일 서버에서 25, 110번 데몬이 안 뜰 때, 아래 에러가 뜰 때tcpserver: fatal: temporarily unable to figure out IP address for 0.0.0.0: file does not
                existtouch /etc/dnsrewrite


    (4) qmail-smtpd가 제대로 작동하지 않고 연결이 즉시 종료될 때(25번 포트 떠 있는데 접근 시 바로 튕길 때)
    - qmail-smtpd 구동 스크립트 (/var/qmail/supervise/qmail-smtpd/run)에 사용한 리소스 제한값 (softlimit -m)을 바꿔봅니다. 예를 들어 2000000 였다면 7340032
              정도록 올려 봅니다.


    - qmail-smtpd 구동 스크립트에서 tcpserver 옵션중 tcprules 파일을 사용하고 있다면 (예: -x /etc/tcp.smtp.cdb ) 이 파일이 읽을 수 있는 권한인지 확인해 봅니
              다.

    - /var/qmail/control 파일을 다른 걸로 바꾼다.

    (5) maillog에 qmail-remote_crashed 뜰 때
    qmail-remote_crashed./I'm_not_going_to_try_again;_this_message_has_been_in_the_queue_too_long./qmail- remote가 깨진 것이다. qmail만 다시 설치하면
            된다.

    qmail 설치 경로로 가서 make setup qmail
사이트명 : 바다넷 | 회사명 : (주)아사달 | 대표이사 : 서창녕 | 대표전화 : 070-7510-3007 | 팩스번호 : 02-2026-2008
사업자등록번호 : 206-81-24351 | 법인등록번호 : 110111-1940504 | 통신판매업신고 : 제18-890호 | 벤처확인번호 : 051134532200563
(우편번호 : 153-803) 서울특별시 금천구 가산동 371-28번지 우림라이온스밸리 A동 8층 (주)아사달
Copyright ⓒ badanet.co.kr All rights reserved.

페이지 맨 위로 이동하기