레이블이 checkpasswd인 게시물을 표시합니다. 모든 게시물 표시
레이블이 checkpasswd인 게시물을 표시합니다. 모든 게시물 표시

2012-09-16

qmail]FreeBSD + qmail+qmail-smtp_auth+tls+ checkpasswd

FreeBSD + qmail + qmail-smtp_auth+tls

copyleft 2003/08/15 - Powered by chabrothers.com
  update 2005/01/17

최 대한 손쉽게 설치하는데 주안점을 두었으니 문제점이 있다고 생각되시는 분은 san@chabrothers.com 으로 연락주시기 바랍니다.
FreeBSD 4.11-stable 에서 설치운영중입니다.

1. ucspi-tcp
2. qmail
3. qmail-smtp_auth+tls
4. checkpassword

위 의 4가지만 설치하였습니다.
daemontools 를 설치하지 않은 것은 지적받을만 하고요
ports collection 을 이용한 설치는 프비를 사랑하기 때문입니다.

-------------------------------------------------------------------------------

0. 관련패키지 설치

0.1 ucspi-tcp ( UNIX Client-Server Program Interface)

# cd /usr/ports/sysutils/ucspi-tcp/
# make install clean

--------------------------------------------------------------------------------
1. qmail + man page 설치

# cd /usr/ports/mail/qmail/
# make install clean
# make disable-sendmail
# make enable-qmail
# echo "OPTIONAL_MANPATH /var/qmail/man" >> /etc/manpath.config
# makewhatis
# man qmail

1.1 qmail-smtp_auth+tls 설치
tls 부분의 설명이 없는 이유는 제가 이해하지 못하고 있는점과 /usr/ports/mail/qmail-smtp_auth 가 따로없기 때문입니다.

# cd /usr/ports/mail/qmail-smtp_auth+tls
# make install clean

1.2 유저인증을 위해서 checkpassword 설치 - 보내기,받기에 모두 사용

# cd /usr/ports/security/checkpassword
# make install clean

-----------------------------------------------------------------------------------

2. SMTP 에 접근가능한 IP 를 설정하고 cdb 파일을 만들어 줍니다

# echo 127.0.0.1:allow,RELAYCLIENT="" > /etc/tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


--------------------------------------------------------------------------------

3. 관련 파일편집

3.1 새로생성되는 유저들은 홈디렉에 Maildir을 만들며 메일이 전달되게한다.

# cd /usr/share/skel

# vi dot.cshrc

  아래의 라인을 찾아 주석처리를 하고
  #set mail = (/var/mail/$USER)

  아래의 라인을 추가한다
  setenv MAIL ~/Mailbox
  setenv MAILDIR ~/Maildir
  setenv MAILTMP ~/Maildir/tmp/tmpfile
  alias mail '/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail'
  alias pine '/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq'
  alias elm '/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq'

  :wq

# vi dot.shrc

  아래의 라인을 추가한다

  MAIL=~/Mailbox
  MAILDIR=~/Maildir
  MAILTMP=~/Maildir/tmp/tmpfile
  export MAIL MAILDIR MAILTMP
  alias mail='/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail'
  alias pine='/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq'
  alias elm='/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq'

  :wq

# echo ./Maildir/ > dot.qmail

# /var/qmail/bin/maildirmake /usr/share/skel/Maildir

3.2 이미 존재하는 유저에게 메일전달되게 만들기.

# cp -R /usr/share/skel/Maildir ~USERSNAME/Maildir/
# chown -R USERSNAME ~USERSNAME/Maildir/
# cp /usr/share/skel/dot.qmail ~USERSNAME/.qmail
# chown USERSNAME ~USERSNAME/.qmail

--------------------------------------------------------------------------------

4. /var/qmail/rc 큐메일 작동파일만들기

# vi rc

#!/bin/sh
Q_UID='id -u qmaild'
Q_GID='id -g qmaild'
#
# 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
                /usr/local/bin/tcpserver -H -R -c 255 -x /etc/tcp.smtp.cdb \
                        -u Q_UID -g Q_GID 0 25 /var/qmail/bin/qmail-smtpd domain.name \
                        /usr/local/bin/checkpassword /usr/bin/true &
                echo -n " qmail-smtp"
                ;;
        esac

        case ${qmail_pop_enable} in
        [Yy][Ee][Ss])
                # Start the qmail pop daemon
                /usr/local/bin/tcpserver -H -R -c 255 0 110 \
                        /var/qmail/bin/qmail-popup domain.name \
                        /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
                echo -n " qmail-pop"
                ;;
        esac

        case ${qmail_enable} in
        [Yy][Ee][Ss])
                # Start qmail
                exec env - PATH="/var/qmail/bin:$PATH" \
                        qmail-start ./Maildir splogger 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


실 행파일 모드로 바꾸어준다

# chmod 750 /var/qmail/rc

--------------------------------------------------------------------------------

5. control 파일만들기

# echo domain.name > /var/qmail/control/defaultdomain
# echo host > /var/qmail/control/defaulthost

# echo host.domain.name > /var/qmail/control/locals
# echo domain.name >> /var/qmail/control/locals

# echo host.domain.name > /var/qmail/control/me

# echo host > /var/qmail/control/plusdomain

# echo host.domain.name > /var/qmail/control/rcpthosts
# echo domain.name >> /var/qmail/control/rcpthosts

/var/qmail/configure/config-fast 를 이용해서 쉽게 만들수도 있으며 아래의 기본적인 파일들이 만들어졌는지를 확인하여야 한다.

/var/qmail/control/defaultdomain
/var/qmail/control/defaulthost
/var/qmail/control/locals
/var/qmail/control/me
/var/qmail/control/plusdomain
/var/qmail/control/rcpthosts

5.1 alias 파일만들기

# echo your-admin@email.address > /var/qmail/alias/.qmail-root
# echo your-admin@email.address > /var/qmail/alias/.qmail-postmaster
# echo your-admin@email.address > /var/qmail/alias/.qmail-mailer-daemon


--------------------------------------------------------------------------------

6. sendmail 죽이기

# killall sendmail
# rm /var/run/sendmail.pid

# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

--------------------------------------------------------------------------------

7. qmail 가동하기

# /usr/local/etc/rc.d/qmail.sh start


--------------------------------------------------------------------------------

8. 작동여부 확인

# ps -ax | grep tcpserver
# ps -ax | grep qmail


--------------------------------------------------------------------------------