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