Computer/Linux (mail)

qmail + vpopmail + mysql 설치

알찬돌삐 2013. 12. 18. 10:37

이용되는 파일들은 cr.yp.to 등에서 다운로드한다. 

qmail-1.03.tar.gz

autorespond-2.0.2.tar.gz

ucspi-tcp-0.88.tar.gz

daemontools-0.76.tar.gz

rblsmtpd-0.70.tgz

vpopmail-5.4.10.tar.gz


# 각각의 소스의 error.h 파일의 상단에 아래 라인을 추가합니다.

#include "errno.h"

1. sendmail 구동을 종료

[root@localhost root]# /etc/init.d/sendmail stop


2. qmail 설치

[root@localhost root]# tar zxvf qmail-1.03.tar.gz

[root@localhost root]# cd qmail-1.03

[root@localhost root]# mkdir /var/qmail

[root@localhost root]# groupadd nofiles

[root@localhost root]# useradd -g nofiles -d /var/qmail/alias alias

[root@localhost root]# useradd -g nofiles -d /var/qmail qmaild

[root@localhost root]# useradd -g nofiles -d /var/qmail qmaill

[root@localhost root]# useradd -g nofiles -d /var/qmail qmailp

[root@localhost root]# groupadd qmail

[root@localhost root]# useradd -g qmail -d /var/qmail qmailq

[root@localhost root]# useradd -g qmail -d /var/qmail qmailr

[root@localhost root]# useradd -g qmail -d /var/qmail qmails 

[root@localhost root]# cp -a /usr/local/mysql/include/mysql /usr/include

[root@localhost root]# cp /usr/local/mysql/lib/mysql/* /usr/lib

[root@localhost root]# mkdir /usr/lib/mysql/

[root@localhost root]# ln -s /usr/lib/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a

[root@localhost root]# make

[root@localhost root]# make setup check

[root@localhost root]# ./config-fast hostway.co.kr


[root@localhost root]# cd ../

[root@localhost root]# tar xzvf ucspi-tcp-0.88.tar.gz

[root@localhost root]# cd ucspi-tcp-0.88

[root@localhost root]# make

[root@localhost root]# make setup check


[root@localhost root]# cd ../

[root@localhost root]# mkdir -p /package

[root@localhost root]# chmod 1755 /package

[root@localhost root]# tar zxvf daemontools-0.76.tar.gz

[root@localhost root]# mv admin/ /package/

[root@localhost root]# cd /package/admin/daemontools-0.76/

[root@localhost root]# ./package/install


[root@localhost root]# cd ~

[root@localhost root]# tar zxvf autorespond-2.0.2.tar.gz

[root@localhost root]# cd autorespond-2.0.2

[root@localhost root]# make

[root@localhost root]# cp autorespond /usr/local/bin/


[root@localhost root]# vi /var/qmail/rc

    #!/bin/sh

    exec env - PATH="/var/qmail/bin:$PATH" 

    qmail-start ./Maildir/


[root@localhost root]# chmod a+x /var/qmail/rc

[root@localhost root]# mkdir -p /var/qmail/supervise/qmail-send/log

[root@localhost root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log

[root@localhost root]# chmod +t /var/qmail/supervise/qmail-send

[root@localhost root]# chmod +t /var/qmail/supervise/qmail-smtpd

[root@localhost root]# vi /var/qmail/supervise/qmail-send/run

    #!/bin/sh

    exec /var/qmail/rc


[root@localhost root]# vi /var/qmail/supervise/qmail-send/log/run

    #!/bin/sh

    exec /usr/local/bin/setuidgid qmaill 

    /usr/local/bin/multilog t /var/log/qmail

[root@localhost root]# 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 8000000 

          /usr/local/bin/tcpserver -vRHl 0 

          -x /home/vpopmail/etc/tcp.smtp.cdb 

          -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd hostway.co.kr 

          /home/vpopmail/bin/vchkpw /bin/true 2>&1

[root@localhost root]# 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


[root@localhost root]# chmod 755 /var/qmail/supervise/qmail-send/run

[root@localhost root]# chmod 755 /var/qmail/supervise/qmail-send/log/run

[root@localhost root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run

[root@localhost root]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

[root@localhost root]# mkdir -p /var/log/qmail/smtpd

[root@localhost root]# chown qmaill /var/log/qmail /var/log/qmail/smtpd

[root@localhost root]# echo admin@hostway.co.kr > /var/qmail/alias/.qmail-root

[root@localhost root]# echo admin@hostway.co.kr > /var/qmail/alias/.qmail-postmaster

[root@localhost root]# echo admin@hostway.co.kr > /var/qmail/alias/.qmail-mailer-daemon

[root@localhost root]# cd /var/qmail/alias/

[root@localhost root]# chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon


[root@localhost root]# vi /etc/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

   killall readproctitle > /dev/null 2>&1

    ;;

  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 <<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 -- 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


[root@localhost root]# chmod 700 /etc/init.d/qmail

[root@localhost root]# chkconfig --add qmail


3. vpopmail 설치

[root@localhost root]# groupadd vchkpw

[root@localhost root]# useradd -g vchkpw vpopmail

[root@localhost root]# cd ~

[root@localhost root]# tar zxvf vpopmail-5.4.10.tar.gz

[root@localhost root]# cd vpopmail-5.4.10

[root@localhost root]# ./configure --enable-auth-module=mysql --enable-tcprules-prog=/usr/local/bin/tcprules --enable-relay-clear-minutes=15

[root@localhost root]# make

[root@localhost root]# make install-strip

[root@localhost root]# vi ~vpopmail/etc/defaultdomain

hostway.co.kr


[root@localhost root]# vi ~vpopmail/etc/vpopmail.mysql

localhost|0|root|패스워드|vpopmail


[root@localhost root]# echo "127.0.0.1:allow,RELAYCLIENT=""" > ~vpopmail/etc/tcp.smtp

[root@localhost root]# echo "qmail을설치한서버의아이피:allow,RELAYCLIENT=""" >> ~vpopmail/etc/tcp.smtp

[root@localhost root]# mkdir /var/qmail/supervise/vpop

[root@localhost root]# vi /var/qmail/supervise/vpop/run

    #!/bin/sh

    VPOP_UID=`id -u vpopmail`

    VPOP_GID=`id -g vpopmail`


    exec /usr/local/bin/softlimit -m 5000000 

         tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 

         /var/qmail/bin/qmail-popup hostway.co.kr 

         /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

[root@localhost root]# chmod 755 /var/qmail/supervise/vpop/run

[root@localhost root]# mv /usr/lib/sendmail /usr/lib/sendmail.old

[root@localhost root]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old

[root@localhost root]# ln -s /var/qmail/bin/sendmail /usr/lib

[root@localhost root]# ln -s /var/qmail/bin/sendmail /usr/sbin

[root@localhost root]# ln -s /var/qmail/supervise/qmail-send /service/

[root@localhost root]# ln -s /var/qmail/supervise/qmail-smtpd /service/

[root@localhost root]# ln -s /var/qmail/supervise/vpop /service


[root@localhost root]# /etc/init.d/qmail cdb

[root@localhost root]# /etc/init.d/qmail start


예) 기본 도메인에 사용자 추가

[root@localhost root]# cd /home/vpopmail/bin

[root@localhost root]# ./vadduser admin@hostway.co.kr


예) 새로운 도메인을 추가

[root@localhost root]# ./vadddomain hostway2.co.kr



출처 : 호스트웨이 (http://faq.hostway.co.kr/Linux_Mail/1337)