본문 바로가기
Server&OS/Q-mail

qmail 설치 따라하기

by 백룡화검 2008. 7. 10.
qmail 설치 따라하기     << linux 작업물  << 작업실 


qmail 설치 따라하기
  1. 들어가면서

    이번에 리눅스 서버를 새로 설치하면서 레드햇 7.2를 깔았더니 sendmail 버전이 또 올라 갔네요. 어차피 새로 자료 찾아서 sendmail 설정을 하느니, 좀 더 안전하고 빠르다는 qmail 로 바꿔 보려고 합니다. 이 문서는 정계옥<hook7346@hsd.hackerslab.org> 문상준<dakeshi@hsd.hackerslab.org>님이 쓴 "qmail로 메일서버 구축하기 ( 메일 forwarding 과 pop3 설정까지...)" 를 직접 RH 7.2 에서 설치하면서 요약 정리한 것입니다. 이미 있는 좋은 문서를 새로 쓸 생각으로 한 것은 아니고, 저 혼자서 보기 좋게 정리해 두면 다음에 또 설치하게 될 일이 있을 때 편할 것 같아서 요약해 봤습니다. 파란 글씨로 된 부분이 키보드 입력부분이고 옅은 노랑 바탕의 글들은 파일 내용 출력입니다.

  2. 내 환경과 준비물

    리눅스 시스템 : RedHat 7.2 (Enigma) 파일들

      qmail-1.03.tar.gz : qmail 소스
      qmail-103.patch : dns patch
      ucspi-tcp-0.88.tar.gz : inetd  데몬의 개선판, 필수 addon
      daemontools-0.76.tar.gz : 유닉스의 서비스들을 관리 모니터링하기 위한 프로그램들을 모아둔 패키지,
                                             필수 addon
      rblsmtpd-0.70.tar.gz
    
      checkpassword-0.90.tar.gz : pop3 구현에 필요
    
      fastforward-0.51.tar.gz  qmail.tgz                
      qmail_man.tar.gz
      serialmail-0.75.tar.gz
      dot-forward-0.71.tar.gz
      qmailanalog-0.70.tar.gz
    

    그리고 서버의 도메인 이름과 네임서버에서 MX 레코드가 바르게 설정되었다는 가정하에서 작업을 시작한다.

  3. 설 치
    1. 루트권한으로 변경한 뒤 소스 풀기 (이후과정은 계속 루트권한이어야 한다.)
      
      su -
      cd /src/qmail
      tar xvzf qmail-1.03.tar.gz
      tar xvzf ucspi-tcp-0.88.tar.gz
      tar xvzf daemontools-0.76.tar.gz
      tar xvzf rblsmtpd-0.70.tar.gz

    2. qmail 설치를 위한 디렉토리를 만들기 필요한 하위디렉토리는 qmail이 자동으로 만들기 때문에, qmail의 홈디렉토리만 만들어 주면 됩니다. #mkdir /var/qmail
    3. qmail 실행을 위한 유저와 그룹을 만들기 qmail-1.03 소스를 풀어 놓은 디렉토리에서 INSTALL.ids 파일을 편집한다. 다음과 같이 리눅스 항목들만 남기고 나머지는 깨끗하게 지운다.
      groupadd nofiles 
      useradd -g nofiles -d /var/qmail/alias alias 
      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 
      

      #cd /src/qmail/qmail-1.03 #sh INSTALL.ids
    4. oversize DNS 패치 : 압축을 풀어 둔 qmail의 소스 디렉토리에서 #patch -p1 < ./qmail-103.patch
    5. qmail 과 연관 프로그램들을 컴파일 저는 /src/qmail 디렉토리 아래에 각각의 소스를 풀었습니다. # cd /src/qmail/qmail-1.03/ # make # make setup check qmail을 위한 다른 프로그램들도 컴파일하고 설치한다. (ucspi-tcp , daemontools , rblsmtpd) 이 프로그램들은 기본적으로 /usr /local/bin # cd /src/qmail/ucspi-tcp-0.88/ # make # make setup check # cd /src/qmail/daemontools-0.76/ # make # make setup check 그런데 daemontools 0.76 은 설치방법이 좀 달라진 것 같았는데, # /src/qmail/admin/daemontools-0.76 #./package/install 해서 설치했음 # cd /src/qmail/rblsmtpd-0.70/ # make # make setup check *** rblsmtpd 설치가 안 됨 ucspi-tcp 0.86 이상부터는 rblsmtpd 가 포함되어져 있어서 따로 설치할 필요가 없다고 합니다.
      참고 : 어떤 분이 주신 도움말씀
      레드햇 7.1에서 설치할 때에는 아마 에러를 만나게 될 것입니다. 
      먼저, rblsmtpd 패키지는 설치하지 않으셔도 됩니다. 레드햇 7.1 에서는 이미 내장된 기능입니다. 
      다음, daemontools 패키지를 설치할 때, 꼭 tai64nlocal.c 파일에서 에러가 납니다. 
      이 문제는 직접 그 파일로 가서, 
      #include <sys/time.h> 라고 되어있는 부분을 
      #include <time.h> 로 고쳐주면 됩니다. 
      
      *** 저의 경우 (Redhat 7.2 에서는 tai64nlocal.c 소스를 고치지 않아도 컴파일이 되더군요
      

    6. 기본 control 파일들의 설정을 위하여, qmail config 하기 # cd /src/qmail/qmail-1.03/ # ./config 정상적인 실행결과는 다음과 같다.
      [root@ped qmail-1.03]# ./config 
      Your hostname is chsd. 
      Your host's fully qualified name in DNS is chsd.chonnam.ac.kr. 
      Putting chsd.chonnam.ac.kr into control/me... 
      Putting chonnam.ac.kr into control/defaultdomain... 
      Putting ac.kr into control/plusdomain... 
      Checking local IP addresses: 
      127.0.0.1: Adding localhost to control/locals... 
      168.131.34.167: Adding chsd.chonnam.ac.kr to control/locals... 
      If there are any other domain names that point to you, 
      you will have to add them to /var/qmail/control/locals. 
      You don't have to worry about aliases, i.e., domains with CNAME records. 
      Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts... 
      Now qmail will refuse to accept SMTP messages except to those hosts. 
      Make sure to change rcpthosts if you add hosts to locals or virtualdomains! 
      [root@ped qmail-1.03]# 
      

      만약, 위와 같은 메시지가 나오지 않는다면, 당신의 Network 설정 및 DNS 설정에 문제가 있는 경우이다. DNS 서버에 이름이 정상적으로 등록되어 있다면, Network 설정을 잘 살펴보아야 한다. 잘 살펴보아야 할 설정파일은 다음과 같다. /etc/resolv.conf
      search mydomain.com <--- 특히, 이 줄이 없어서, 문제를 겪은 경우가 있다. 
      nameserver 168.126.63.1
      nameserver 168.126.63.2 
      

      특히, search [domain name] 라인이 반드시 있어야 한다. /etc/hosts
      127.0.0.1 localhost localhost.localdomain 
      123.234.123.234 myhost.mydomain.com myhost
      123.234.123.231 otherhost.mydomain.com otherhost 
      

      위 파일의 내용을 확인하고, 내용에 맞추어 수정한다. /etc/sysconfig/network
      .......... 
      .......... 
      HOSTNAME=myhost 
      DOMAINNAME=mydomain.com
      .......... 
      .......... 
      

      위의 라인을 확인하여, 없으면 추가한다. 위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면, 그때는 이렇게 한다. [root@myhost qmail-1.03]# ./config-fast myhost.mydomain.com config-fast 다음에 서버의 DNS 등록 호스트네임을 다 써주면 된다. 그러면, 정상적으로 다음 설치가 가능하다.
    7. deamontools 관련 스크립트 작성 qmail 의 서비스들을 모니터링하고 관리해 주는 daemontools 관련 스크립트 작성
      1. supervise 디렉토리 생성 # 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
      2. supervise 실행 스크립트 작성 # vi /var/qmail/supervise/qmail-send/run
        #!/bin/sh 
        exec /var/qmail/rc 
        

        # vi /var/qmail/supervise/qmail-send/log/run
        #!/bin/sh 
        exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail 
        

        # vi /var/qmail/supervise/qmail-smtpd/run
        #!/bin/sh 
        exec /usr/local/bin/softlimit -m 2000000 \ 
        /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb \
        -u 505 -g 506 0 25 /var/qmail/bin/qmail-smtpd 2>&1 
        

        위의 "-u 505 -g 506" 에서 505는 alias 의 UID (user ID)이고, 506은 GID (group ID)이다. 컴퓨터마다 등록되는 alias 의 UID와 GID는 다르므로, /etc/passwd 파일을 참조하라. 그리고, 위에서 보이는 "\"기호는 라인이 바뀜 표시임 # vi /var/qmail/supervise/qmail-smtpd/log/run
        #!/bin/sh 
        exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd 
        

      3. 편집한 파일들에 실행 권한 주기 # 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
    8. qmail의 log파일을 위한 디렉토리 만들기 # mkdir -p /var/log/qmail/smtpd # chown qmaill /var/log/qmail /var/log/qmail/smtpd
    9. system 계정 alias 만들기 : root 와 postmaster를 위한 alias 설정 관리자 계정으로 수신되는 메일을 일반계정으로 포워딩하도록, alias를 설정해 준다. 여기서 silver 는 root, postmaster 등으로 오는 메일을 받을 일반 계정이다. (여러분이 원하는 계정을 만들어서 바꾸어주면 된다.) # cd ~alias # echo silver > .qmail-mailer-daemon # echo silver > .qmail-postmaster # echo silver > .qmail-root
    10. qmail 을 부팅시 실행시켜 줄 자동실행 스크립트 만들기 이 파일을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 준다. # vi /etc/rc.d/init.d/qmail # chmod 755 /etc/rc.d/init.d/qmail * 아래의 qmail 스크립트 파일 내용은 참고로만 하고 실제로는 qmail.txt 이 파일을 직접 다운로드 받아서 복사해서 사용하는 것이 더 좋겠다. 그리고 레드햇의 경우 ntsysv 에서 qmail 실행은 등록시키고 당연히 sendmail 체크는 제거한다. /etc/rc.d/init.d/qmail
      #!/bin/sh
      # Comments to support chkconfig on RedHat Linux
      # chkconfig: 2345 80 80
      # description: 빠르며, 안정적이고, 유연한 MTA
      
      # Source function library.
      . /etc/rc.d/init.d/functions
      
      # Source networking configuration.
      . /etc/sysconfig/network
      
      # Check that networking is up.
      [ ${NETWORKING} = "no" ] && exit 0
      
      PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
      export PATH
      
      case "$1" in
        start)
          echo -n "Starting qmail: svscan"
          cd /var/qmail/supervise
          env - PATH="$PATH" svscan &
          echo $! > /var/run/svscan.pid
          echo "."
          ;;
        stop)
          echo -n "Stopping qmail: svscan"
          kill `cat /var/run/svscan.pid`
          echo -n " qmail"
          svc -dx /var/qmail/supervise/*
          echo -n " logging"
          svc -dx /var/qmail/supervise/*/log
          echo "."
          ;;
        stat)
          cd /var/qmail/supervise
          svstat * */log
          ;;
        doqueue|alrm)
          echo "Sending ALRM signal to qmail-send."
          svc -a /var/qmail/supervise/qmail-send
          ;;
        queue)
          qmail-qstat
          qmail-qread
          ;;
        reload|hup)
          echo "Sending HUP signal to qmail-send."
          svc -h /var/qmail/supervise/qmail-send
          ;;
        pause)
          echo "Pausing qmail-send"
          svc -p /var/qmail/supervise/qmail-send
          echo "Pausing qmail-smtpd"
          svc -p /var/qmail/supervise/qmail-smtpd
          ;;
        cont)
          echo "Continuing qmail-send"
          svc -c /var/qmail/supervise/qmail-send
          echo "Continuing qmail-smtpd"
          svc -c /var/qmail/supervise/qmail-smtpd
          ;;
        restart)
          echo "Restarting qmail:"
          echo "* Stopping qmail-smtpd."
          svc -d /var/qmail/supervise/qmail-smtpd
          echo "* Sending qmail-send SIGTERM and restarting."
          svc -t /var/qmail/supervise/qmail-send
          echo "* Restarting qmail-smtpd."
          svc -u /var/qmail/supervise/qmail-smtpd
          ;;
        cdb)
          tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
          chmod 644 /etc/tcp.smtp*
          echo "Reloaded /etc/tcp.smtp."
          ;;
        help)
          cat <<HELP
         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 for smtp
      restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
      doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
       reload -- sends qmail-send HUP, rereading locals and virtualdomains
        queue -- shows status of queue
         alrm -- same as doqueue
          hup -- same as reload
      HELP
          ;;
        *)
          echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"
          exit 1
          ;;
      esac
      
      exit 0
      

    11. 액세스 컨트롤 파일 작성하기
      1. rule 파일 만들기 qmail smtpd를 구동하기 전에, 액세스 컨트롤이 실행되도록 하여야 한다. 이 간단한 작업은 /etc/tcp.smtp 파일을 이용한다. /etc/tcp.smtp 에 다음 한 줄을 작성한다. # vi /etc/tcp.smtp
        :allow 
        

        로컬호스트이외에 어떠한 메일 릴레이도 허락하지 않는 기본적인 configuration이다. 로컬호스트와 당신의 로컬네트웍에게만 메일 릴레이를 허락하는 configuration은
        127.0.0.1:allow,RELAYCLIENT="" 
        192.168.1.:allow,RELAYCLIENT="" 
        :allow 
        

        액세스 컨트롤에 대한 자세한 설명을 보려면, 다음의 파일을 받아서, 압축을 푼 후에, tcprules에 대한 man 파일을 참조하면 된다. ftp://ftp.innominate.org/pub/pape/djb/ucspi-tcp-0.88-man.tar.gz
      2. cdb(데이터베이스)로부터 읽어서 tcpserver 활성화 rule 파일을 만들었으면 tcpserver가 cdb(데이터베이스)로부터 읽어서 활성화할 필요가 있다. /etc/tcp.smtp 파일로부터 tcprules 프로그램을 이용하여 데이터베이스를 생성한다. 다음의 명령을 수행하면 된다. # /etc/rc.d/init.d/qmail cdb 또는, # tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    12. sendmail 제거 우리는 이제 qmail로 모든 메일을 처리할 것이므로, sendmail을 제거하고 qmail을 sendmail로 링크시켜서 sendmail 을 이용하는 프로그램들이 qmail을 이용하도록 만드는 작업 우선 떠있는 sendmail 데몬을 찾아서 없애기 리눅스에서는 # ps ax | grep sendmail <--- sendmail 데몬이 있는지를 확인한다. # killall -TERM sendmail <--- sendmail 데몬을 제거한다. # ps ax | grep sendmail <--- 다시 sendmail 데몬이 살아있는지를 확인한다. 위의 명령은 현재 실행중인 sendmail만을 제거할 뿐이다. 컴퓨터가 재시동되면, 다시 sendmail도 재시동되므로, 다음과 같은 명령어로 qmail로 모든 sendmail을 대체한다. # 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 차라리 # rpm -e --nodeps sendmail 로 완전히 지워버리는게 낫지 않나 ?
    13. qmail 구동시키는 /var/qmail/rc 생성하기 /var/qmail/rc 파일은 qmail 파일중에서 가장 중요한 파일중의 하나이다. 이것은 qmail을 책임지고 시작하게 한다. 보다 중요한 것은 qmail이 항상 메일을 수신할 수 있도록 한다. rc 의 내용은 qmail을 위한 기본적인 전송 명령으로 되어 있다. /var/qmail/boot 디렉토리에 가면, 여러 경우에 대한 rc 파일의 예제가 파일별로 준비되어 있다. 우리는 procmail을 이용하여, 메일을 처리할 것이기 때문에, 다음과 같이 명령을 내린다. # cp /var/qmail/boot/proc /var/qmail/rc 파일의 내용
      #!/bin/sh 
      # Using splogger to send the log through syslog. 
      # Using dot-forward to support sendmail-style ~/.forward files. 
      # Using procmail to deliver messages to /var/spool/mail/$USER by default. 
      
      exec env - PATH="/var/qmail/bin:$PATH" \ 
      qmail-start '|preline procmail' splogger qmail 
      

      그리고나서, 약간의 수정을 한다. 다음 에도 나오지만, 우리가 메일 수신을 각자의 홈 디렉토리밑의 ~/Maildir/ 디렉토리로 하기 때문이다. 다음과 같이 수정한다. # vi /var/qmail/rc
      #!/bin/sh 
      # Using splogger to send the log through syslog. 
      # Using dot-forward to support sendmail-style ~/.forward files. 
      # Using procmail to deliver messages to /var/spool/mail/$USER by default. 
      
      exec env - PATH="/var/qmail/bin:$PATH" \ 
      qmail-start '|preline procmail ./Maildir/' splogger qmail 
      

      ./Maildir/ 이것만 추가한 것이다.
    14. 각 사용자별로 메일 송수신을 위한 디렉토리 만들기. 여기서는 ~/Maildir 디렉토리를 모든 송수신 메일을 저장할 디렉토리로 사용하고 있음 사용자별로 디렉토리를 만들기 위해서는, 반드시 그 사용자가 되어야 한다. qmail 을 설치하기 전에 존재하는 모든 사용자에게 대해서, 그 사용자 로그인상태에서 다음의 명령을 내려야 한다. root는 일반계정으로 메일이 포워딩되므로, 해 줄 필요가 없다. 대신에 root계정의 메일을 받을 일반계정(여기서는 앞에서 alias해 준 계정 "silver")에는 반드시 해 주어야 한다. # su silver $ /var/qmail/bin/maildirmake $HOME/Maildir $ echo ./Maildir/ > ~/.qmail $ exit # su hook $ /var/qmail/bin/maildirmake $HOME/Maildir $ echo ./Maildir/ > ~/.qmail $ exit # ................ ....................등등... 앞으로 추가되는 사용자마다 일일이 이런 명령을 내린다면 엄청난 시간낭비일 것이다. 그러므로, 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 한다. # cd /etc/skel # /var/qmail/bin/maildirmake Maildir # echo ./Maildir/ > .qmail 이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail 파일이 생기게 될 것이다.
    15. 설치후 검사하기 : 리부팅하고, qmail의 정상적인 동작을 확인하기
      1. log 파일 확인 좀더 확실한 확인을 위해서 시스템을 리부팅시킨다. 리부팅되고나서, /var/log/maillog 파일내용의 끝부분에
          qmail: status: local 0/10 remote 0/20

        이 보이지 않는다면 qmail 설정에 문제가 있는 것이므로, 앞의 과정들을 다시 한번 꼼꼼히 살펴보고, 설정파일들을 자세히 검토해야만 한다.
      2. process 확인 2) # ps ax 명령을 내리고나서, 다음과 같은 라인들이 보이는 지를 확인하다.
        562 ? S 0:00 svscan 
        563 ? S 0:00 supervise qmail-send 
        564 ? S 0:00 supervise log 
        565 ? S 0:00 supervise qmail-smtpd 
        566 ? S 0:00 supervise log 
        567 ? S 0:00 qmail-send 
        568 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail 
        569 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail/smtpd 
        570 ? S 0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb 
        -u 501 -g 501 0 25 /var/qmail/bin/qmail-smtpd 
        576 ? S 0:00 splogger qmail 
        577 ? S 0:00 qmail-lspawn |preline procmail 
        578 ? S 0:00 qmail-rspawn 
        579 ? S 0:00 qmail-clean 
        
        모양이나 숫자들이 약간씩 틀리더라도, 반드시 13개의 프로세서가 동작하고 있어야 한다. 위와 동일한 프로세서가 없다면, qmail 설정에 문제가 있는 것이다. ※ 위의 1) 2)와 같은 메시지와 프로세서들이 보이지 않는다면, 문서 앞의 과정 [Daemontools관련 스크립트 작성]부터 확인하기 바로 앞 단계 까지 과정을 다시 확인해야 한다 대표적으로 자주 하는 실수 /var/qmail/supervise/qmail-send/log/run 파일과 /var/qmail/supervise/qmail-smtpd/log/run 파일을 만들 때, qmaill을 qmail 로 잘못 쓰는 것
    16. 메일 송신 테스트하기 (여기서부터는 시스템 root 가 아니어도 됨)
      1. host 내부에서 사용자간의 메일 송수신을 확인 silver는 호스트안에 계정이 있는 사용자이어야 한다. % echo to: silver | /var/qmail/bin/qmail-inject 그러면, 내용은 없고 메일헤더만 있는 메일이 바로 silver에게 송신되어 있어야 하고, 새로이 도착되는 메일은 ~silver/Maildir/new/ 밑에 수신메일마다 개개의 파일로 저장된다. /var/log/maillog 파일안의 끝부분에는 다음과 같은 줄들이 보여야 한다.
        qmail: new msg 53 
        qmail: info msg 53: bytes 246 from <me@domain> qp 20345 uid 666 
        qmail: starting delivery 1: msg 53 to local me@domain 
        qmail: status: local 1/10 remote 0/20 
        qmail: delivery 1: success: did_1+0+0/ 
        qmail: status: local 0/10 remote 0/20 
        qmail: end msg 53 
        
        ( 53은 inode 숫자이고, 20345 는 프로세서 ID이다. 여러분한테는 이 번호들이 다를 것이다.
      2. 메일전송 에러를 확인 none은 호스트의 메일사용자계정이 아니어야 한다. % echo to: none | /var/qmail/bin/qmail-inject /var/log/maillog 파일안의 끝부분
        qmail: new msg 53 
        qmail: info msg 53: bytes 246 from <me@domain> qp 20351 uid 666 
        qmail: starting delivery 2: msg 53 to local nonexistent@domain 
        qmail: status: local 1/10 remote 0/20 
        qmail: delivery 2: failure: No_such_address.__#5.1.1_/ 
        qmail: status: local 0/10 remote 0/20 
        qmail: bounce msg 53 qp 20357 
        qmail: end msg 53 
        qmail: new msg 54 
        qmail: info msg 54: bytes 743 from <> qp 20357 uid 666 
        qmail: starting delivery 3: msg 54 to local me@domain 
        qmail: status: local 1/10 remote 0/20 
        qmail: delivery 3: success: did_1+0+0/ 
        qmail: status: local 0/10 remote 0/20 
        qmail: end msg 54 
        
        아마 여러분은 전송되지 못하고, 되돌아온 메일을 보게 될 것이다.
      3. 호스트 외부로의 메일 송신 확인 me@wherever 는 hook@hanmail.net 과 갈은 어떤 유효한 메일 주소이어야 한다. % echo to: me@wherever | /var/qmail/bin/qmail-inject /var/log/maillog 파일안의 끝부분
        qmail: new msg 53 
        qmail: info msg 53: bytes 246 from <me@domain> qp 20372 uid 666 
        qmail: starting delivery 4: msg 53 to remote me@wherever 
        qmail: status: local 0/10 remote 1/20 
        qmail: delivery 4: success: 1.2.3.4_accepted_message./... 
        qmail: status: local 0/10 remote 0/20 
        qmail: end msg 53 
        
        라인``starting delivery''와 ``success'' 사이에는 얼마간의 시간적 지연이 있을 수 있다. me@wherever 라는 메일 계정으로 온 메일을 확인해 보아라.
      4. 호스트의 root 또는 postmaster 에게 메일을 전송 앞에서 설정한 root, postmaster, mailer-daemon의 alias 의 동작 확인 % echo to: POSTmaster | /var/qmail/bin/qmail-inject POSTmaster의 alias 를 설정한 계정 (앞에서는 silver)으로 온 메일을 확인한다.
    17. 메일 수신 테스트하기
        (제일 중요한 부분이다. 메일이 송신은 잘되어도, 수신이 안되는 경우가 허다하다.)
      1. SMTP 서버가 정상적으로 동작하는지를 검사 dude 는 호스트의 유효한 계정이어야 한다. me@domain 은 hook@hanmail.net 과 같은 유효한 메일주소이어야 한다.
        $ telnet 127.0.0.1 25 
        Trying 127.0.0.1... 
        Connected to 127.0.0.1. 
        Escape character is '^]'. 
        220 domain ESMTP 
        helo dude 
        250 domain 
        mail <me@domain> 
        250 ok 
        rcpt <me@domain> 
        250 ok 
        data 
        354 go ahead 
        Subject: testing 
        
        This is a test. 
        . 
        250 ok 812345679 qp 12345 
        quit 
        221 domain 
        Connection closed by foreign host. 
        $ 
        
        메일이 정상적으로 도착했는지를 확인하다.
      2. 메일을 다른 호스트의 메일계정으로 포워딩하기 자신의 계정 디렉토리의 .qmail 파일에 포워딩되어질 메일계정을 써주면 된다. $ cd $ vi .qmail
        &mine@hanmail.net 
        
        메일주소앞에 &기호는 넣어도 되고, 싫으면 넣지 않아도 무관하다.
      3. pop3 설치하기
        1. checkpassword 설치 checkpassword 는 사용자명과 암호를 인증하는데 사용된다. 우선 소스 파일 압축을 풀고 #cd /src/qmail #tar xvzf checkpassword-0.90.tar.gz checkpassword를 컴파일하고 설치 #cd checkpassword-0.90 #make #make setup check
        2. checkpassword 설치 확인
          # /var/qmail/bin/qmail-popup chsd.chonnam.ac.kr /bin/checkpassword pwd 
          +ok <1311.955932232@hsd.chonnam.ac.kr> 
          user dakeshi 
          +ok 
          pass foryou 
          -ERR authorization failed 
          
          제대로 password를 입력하지 않는다면, 위와 같은 결과가 나타난다. 제대로 된 password를 입력하면,
          # /var/qmail/bin/qmail-popup hsd.chonnam.ac.kr /bin/checkpassword pwd 
          +ok <1311.955932232@hsd.chonnam.ac.kr> 
          user dakeshi 
          +ok 
          pass forme 
          /home/dakeshi 
          
          라고 나올 것이다.
        3. pop3 자동 실행 스크립트 만들기: /etc/rc.d/rc.local /etc/rc.d/rc.local 파일의 마지막에 다음의 내용을 추가
          #start qmail POP3 server 
          /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup FQDN \ 
          /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & 
          
          ( FQDN에는 호스트네임과 도메인 네임을 써준다. 여기서는 myhost.mydomain.com)
        4. pop3 동작 확인 : 리부팅 시켜서 1) 호스트에 계정이 있는 사용자에게 메일을 보낸다. 2) 호스트에 그 계정으로 접속하여 메일이 들어왔는지 확인한다. 3) 자신이 사용하고 있는 메일서비스에 pop설정을 해준 다음 메일을 가져온다. 4) 메일이 정상적으로 읽혀지는지를 확인한다.
    이상과 같이 따라 하다가 잘 안 된 부분은 긴 명령이 있는 스크립트 파일에서 \ 가 있을 때였는데 그냥 \를 없애고 한 줄로 길게 만들어서 파일로 저장하니 별 문제 없이 해결되었다. 나름대로 요약해서 설치 성공하긴 했는데, 우려했듯이 릴레이 문제가 걸린다. 혼자 고정IP를 쓰면서 POP3 메일을 쓰려면 액세스 콘트롤을 위한 rule 파일을 만들 때 /etc/tcp.smtp 에서 내가 쓰는 IP 들을 넣고 qmail cdb reloading 해 주면 되겠지만 집에서 동적 IP를 쓰는 몇몇에게 계정을 주기위해선 역시 smtpd-auth 기능이나 vpopmail을 이용하는 수 밖에는 없을 것 같다. 힘들게 정리했지만 새로 KLDP에 있는 vopmail 설치 문서 http://kltp.kldp.org/eunjea/qmail/를 보고 새로 설치해야 할 것 같아 아쉬움이 남는다.

최종 수정일 : 2001-12-22

Simplicity is the ultimate sophistication.
함용대 hamyd@bigfoot.com

'Server&OS > Q-mail' 카테고리의 다른 글

vpop,qmailadmin 이메일 계정 추가,삭제,수정  (0) 2010.03.12
qmail 설치시 에러  (0) 2008.07.11
qmail 설치 가이드  (0) 2008.07.10
qmail 설치  (0) 2008.07.02
Qmail 설치  (0) 2008.07.02