디지털콘텐츠 No.1 (주)아사달 호스팅
내정보 도메인 호스팅 디자인몰 솔루션몰 홈페이지몰 모바일 디자인센터 게임 고객지원
로그인 회원가입 장바구니 도메인정보조회

호스팅 사용법
호스팅 신청하기
도메인 연결하기
홈페이지 올리기
이메일 설정하기
서버 사용법
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
배경이미지
배경이미지 회사소개 사진모음 협력사 오시는 길 이용약관 개인정보취급방침 전화상담안내 게시판 문의 한국어 / 日本語 / 中文 / ENGLISH / 사이트맵 배경이미지
배경이미지
배경이미지 사이트명 : 아사달닷컴 | 회사명 : (주)아사달 | 대표이사 : 서창녕 | 대표전화 : 02-2026-2000 | 팩스번호 : 02-2026-2008
사업자등록번호 : 206-81-24351 | 법인등록번호 : 110111-1940504 | 통신판매업신고 : 제18-890호 | 벤처확인번호 : 051134532200563
(우편번호 : 08507) 서울시 금천구 가산디지털1로 168 우림라이온스밸리 A동 8층 (주)아사달
(우편번호 : 153-803) 서울특별시 금천구 가산동 371-28번지 우림라이온스밸리 A동 8층 (주)아사달
Copyright ⓒ asadal.com All rights reserved.
인터넷 익스플로어 구글 크롬 모질라 파이어폭스
애플 사파리 오페라 넷스케이프
맨위로
디지털콘텐츠 No.1 (주)아사달