APM+checkpassword+imap+PHPmail 설치
페이지 정보
작성자 MintState 댓글 0건 조회 23,018회 작성일 09-01-05 11:56본문
APM+checkpassword+imap+PHPmail 설치
리눅스는 Redhat9 Kernel 2.4.20버전을 사용하였습니다.
또한 가능하면 이 문서에 있는 소스를 받으세요. 이문서상외의 소스나 기타 프로그램들은
작동여부를 장담할 수 없습니다.
설치 기초 작업은 /root/src라는 곳에서 작업을 합니다.
설치순서는
openssl - mysql BerkelyDB - qmail - ucspi - daemon tools - checkpassword - imap - phpmail순으로 설치를 합니다.
#################설치 기초 공사#########################
1. openssl 설치
1) 가능하면 기본 설정으로 설정하시기 바랍니다. 기본을 /usr/local/ssl로 잡고 있고 다른 소스들도 ssl을 쓸시 저 기본 디렉토리를 사용합니다. 그러니 고치지 마시고 기본 그대로의 사용을 적극 권장드립니다.
- http://www.openssl.org/source/ 에서 openssl-0.9.7a.tar.gz 이버전을 받으세요.
qmail홈페이지에서 faq를 보시면 위 버전 이상은 어떤 이유에서인지 에러가 난다고하네요. 정확하게 어디서 보기는 봤는데 출처는 정확히 모르겠습니다. 아시는분 리플달아주세요.
2) Install
./config
make; make install
- mysql 설치
http://downloads.mysql.com/archives/mysql-3.23/mysql-3.23.58.tar.gz 타볼소스로 다운받습니다.
3) 컴파일 옵션 / 설치
./configure --prefix=/usr/local/mysql --with-openssl --with-charset=ecu_kr
make; make install
(기타 다른 옵션이 필요하시다면 붙이셔도 상관은 없습니다.)
4) 약간의 환경설정이 필요합니다.
cp support-files/my-huge.cnf /etc/my.cnf
groupadd mysql
adduser -g mysql mysql
vi /etc/passwd
mysql:x:522:523::/home/mysql:/sbin/nologin // nologin 으로 수정
rm -rf /home/mysql
cd /usr/local/mysql/share/mysql
vi mysql.server
134줄의 부분을 약간 변경합니다.
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --language=korean & 을
$bindir/safe_mysqld --datadir=$datadir --language=korean --pid-file=$pid_file --language=korean &
즉 --language를 추가합니다.
cp mysql.server /usr/local/mysql/bin
cp mysql.server /etc/rc.d/init.d/mysqld
ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S55mysqld <-시작번호는 알아서 편한번호로 지정하십시요.
5) 디비 생성
cd /설치디렉토리 (나의 경우엔 cd /usr/local/mysql)
./bin/mysql_install_db (base 디비를 생성하세요~~)
chown -R mysql.mysql /usr/local/mysql/var
- mysqladmin 암호설정
/etc/rc.d/init.d/mysqld start
/usr/local/mysql/bin/mysqladmin -u root password 암호
2. BerkeleyDB 설치
특별히 쓰지는 않지만 이 않에 들어있는 몇가지 라이브러리가 좀 필요하다고 하네요. 솔직하게 어디서 쓰이는지는 모르겠습니다. 하지만 나중에 qmail들어가서 make 해보시면 아시겠지만 설치와 미설치의 make오류는 참 차이가 나는것 같습니다.(기분상...^^;;) 또한 여러 프로그램에서 많이 쓰인다고 합니다. 저두 언젠가는 써볼 생각입니다.
1) 설치
http://www.sleepycat.com/docs/ref/build_unix/intro.html ->버클리 DB설치법.
그러나 영문사이트인 관계로...
http://dev.sleepycat.com/downloads/releasehistorybdb.html -4.2.52버전을 받습니다.
cd /root/src/db-4.2.52/build_unix
../dist/configure
make
make install
2) 동적 라이브러리링크
vi /etc/ld.so.conf 에서
/usr/local/mysql/lib/mysql 추가
/usr/local/BerkeleyDB.4.2/lib 추가
프롬프트에서
ldconfig 엔터
###################qmail 설치#######################
/root/qmailsrc/src <- 이곳에 qmail관련된 모든 소스를 넣어둡니다.
/root/qmailsrc/patch <- 패치에 관련된 모든 파일을 이곳에 넣어둡니다.
이제 본격적인 작업에 들어갑니다. 이제부터가 본게임의 시작입니다.
선작업
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h
큐메일이 좀 오래된지라 time.h파일이 문제가 됩니다.
그래서 구버전의 time.h로 링크를 걸어서 컴파일 하는 것입니다.
나중에 apache와 php컴파일시 원상복구해야합니다.
1. qmail Install
1) qmail및 해당 패치 다운로드
http://cr.yp.to/qmail.html 에서 qmail-1.03 다운로드
(Mirror사이트중 빠른곳에서 받으시면 됩니다. 참고로 일본 사이트가 제일 빠르네요)
http://qmail.kldp.org/phpbb/viewtopic.php?t=5798 에서
cocktail14+mysql+chkuser+quota.patch_20041116 다운로드 (2004년 11월16일자 패치)
참고)
캌테일 패치는 qmail에 필요한 여러가지의 패치를 모아놓은 패치 입니다. 패치 이름중에 mysql+chkuser 이것이 마이에스큐엘을 연동하여 사용하고, 유저를 체크할 수 있게 해주는 것 입니다. 하지만 이것이 좀 말이 많기도 합니다. 워낙 많은 패치를 해 놓다보니 쓸데 없는 기능이 들어가기도 하고 자신에게는 필요없는 패치가 되기도 합니다. 하지만 굉장히 좋기도 합니다. 필요한 패치를 모두 해주기 때문이죠. 만약 칵테일 패치를 하지 않는다면 http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서 qmail-1.03.errno.patch 와 qmail-1.03.qmail_local.patch 다운받아 패치를 해주어야 합니다. 하지만 우리는 캌테일 패치를 해주신다면 위의 2개의 패치는 하지 않으셔도 됩니다.
(에러 납니다.!!!!!)
주의!!!!!
혹시 나중에 설치후 SMTP 기능이 제대로 동작이 되지 않는다면 칵테일 패치를 하지 마시고 위의 2가지 패치로 하시기 바랍니다. 간혹 칵테일 패치로 동작이 되지 않는수도 있습니다.
2) 설치
- qmail을 위한 그룹 및 계정 생성
mkdir /var/qmail
mkdir /var/qmail/alias
- qmail 설치
qmail의 압축을 풉니다.
vi INSTALL.ids
첫 부분에 보시면 Linux라는 부분에 다음과 같은 부분이 있습니다.
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
그 파일을 참고로 해서 다음과 같이 붙여넣기를 하셔서 파일 하나를 만듭니다.
그리고 실행을 하시면 됩니다.
ex)
vi user.sh
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
저장후 빠져나온 후...
sh user.sh
하면 디렉토리와 사용자 계정이 추가가 됩니다.
3) qmail 패치
cd /root/qmailsrc/src/qmail-1.3.0
patch -p1 < ../../patch/cocktail14+mysql+chkuser+quota.patch_20041116
4) 일부 파일 수정
vi mysql.c
#include <mysql/mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi qmail-getpw.c
#include </mysql/mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include 을 MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 을
MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl 로 수정
vi conf-cc
cc -O2 -DTLS=20021228 -I/usr/local/ssl/include 를
gcc -O2 -march=i686 -funroll-loops -DTLS=20021228 -I/usr/local/ssl/include 로 수정
수정필수사항은 mysql의 include, lib 경로와 openssl의 경로 입니다.
5) 컴파일 및 설치
make
make setup check
- control 파일들 생성
./config
실행후 정상적인 결과의 화면은 다음과 같습니다.
./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!
혹시 만약 ./config를 쳣을때 에러가 나온다면 반듯이 보셔야 할 부분이 있습니다.
/etc/resolv.conf
search chonnam.ac.kr <--- 이 부분이 굉장히 중요합니다.
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 chsd.chonnam.ac.kr chsd
123.234.123.231 other.chonnam.ac.kr other
위 파일의 내용을 확인하고, 내용에 맞추어 수정합니다.
/etc/sysconfig/network
..........
..........
HOSTNAME=chsd
DOMAINNAME=ultraqmail.com
..........
..........
위의 라인을 확인하여, 없으면 추가합니다.
위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면,
그때는 이렇게 합니다.
./config-fast ultraqmail.com
config-fast 다음에 서버의 DNS 등록 호스트네임을 다 써주면 됩니다.
그러면, 정상적으로 다음 설치가 가능합니다.
이 단계를 거치고 나면 /var/qmail/control/에 defaultdomain, locals, me, plusdomain, rcpthosts 이 생성되는데 차후 메일서버를 운영함에 있어 중요한 파일들이니 뭐하는 파일들인지 꼭 알아두시기 바랍니다.
2. ucspi-tcp 설치 (tcp커넥션을 만들어주는 것이죠)
1) ucspi-tcp및 해당 패치 다운로드
http://cr.yp.to/ucspi-tcp/install.html 에서
ucspi-tcp-0.88.tar.gz 다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
ucspi-tcp-0.88.errno.patch, ucspi-tcp-0.88.a_record.patch, ucspi-tcp-0.88.nobase.patch 다운로드
(참고로 사이트가 깜빡깜빡(?)합니다. 만약 접속 않되시면 몇 시간후 접속을 하세요...^^)
http://sylvestre.ledru.info/howto/qmail/ucspi-tcp-0.88-mysql.patch
를 받습니다.
2) 설치
- 원래는 rblsmtpd를 깔아야 합니다. 그러나 ucspi-tcp-0.88버전이상은
이것을 포함하고 있다고 합니다. 또한 굳이 깔때 문제가 생길지도 모른다고 하니 않까시는게
좋을듯 합니다.
- ucspi-tcp 패치
patch -p1 < ../patch/ucspi-tcp-0.88.errno.patch
patch -p1 < ../patch/ucspi-tcp-0.88.nobase.patch
patch -p1 < ../patch/ucspi-tcp-0.88.a_record.patch
patch -p0 < ../patch/ucspi-tcp-0.88-mysql.patch
- 일부 파일 수정
vi conf-cc
gcc -O2 -I/usr/include/mysql 를
gcc -O2 -march=i686 -funroll-loops -I/usr/local/mysql/include/mysql 로 수정
vi db.c
#include <mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi conf-ld
gcc -s -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient 을
gcc -s -I/usr/local/mysql/include/mysql -lmysqlclient -L/usr/local/mysql/lib/mysql 로 수정
-컴파일 및 설치
make
make setup check
3. demontool 설치
1) demontool및 해당 패치 다운로드
http://cr.yp.to/daemontools/install.html 에서
daemontools-0.76.tar.gz 다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
daemontools-0.76.errno.patch 다운로드
2) 설치
- 설치 디렉토리 생성
mkdir -p /package
chmod 1755 /package
cd /package
cp /root/qmailsrc/src/daemontools-0.76.tar.gz /package
tar -zxvf daemontools-0.76.tar.gz
rm -rf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /root/qmailsrc/patch/daemontools-0.76.errno.patch
package/install
4. chechpasswd
1) chechpasswd 및 해당 패치 다운로드
http://cr.yp.to/checkpwd/install.html 에서 checkpassword-0.90.tar.gz 다운로드
http://download.softagency.net/mysql/Downloads/Contrib/
checkpassword-0.90-mysql-0.6.6.patch.gz 다운로드 후 압축푼다.
http://qmail.kldp.org/src/patches/glibc-2.3.1/
checkpassword-0.90.errno.patch 다운로드
************************************************************
checkpassword-0.90-mysql-0.7.4.patch 가 있으나 에러가 난다고 알려져 있습니다.
참고사이트입니다.
http://qmail.kldp.org/phpbb/viewtopic.php?t=5309&highlight=checkpassword-0.90-mysql-0.6.6.patch
**************************************************************
chechpasswd는 말 그대로 메일 계정의 패스워드를 체크할 수 있게 해주는겁니다.
여기에 마이에스큐엘 패치를 하여 디비에 들어있는 가상계정의 패스워드체크도 가능하게 됩니다.
2) 설치
- checkpassword 패치
patch -p1 < ../../patch/checkpassword-0.90-mysql-0.6.6.patch
patch -p1 < ../../patch/checkpassword-0.90.errno.patch
- 일부 파일 수정
vi mysql.c
#include <mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include 을 MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 을
MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl 로 수정
vi conf-cc
gcc -O2 을 gcc -O2 -march=i686 -funroll-loops 로 수정
vi error.h
#include <errno.h> 추가
-컴파일 및 설치
make
make setup check
- 소유권 및 퍼미션 변경
참고사이트
http://qmail.kldp.org/phpbb/viewtopic.php?t=5908&highlight=checkpassword
chown root.nofiles /bin/checkpassword
chmod 4110 /bin/checkpassword
5. qmail설정
1) qmail-pop3, qmail-send, qmail-smtp 구동 / 로거 파일 생성
- 디렉토리 생성 및 권한설정
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d
- qmail-send 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
- qmail-send 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send
- qmail-smtp 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd `hostname -f` /bin/checkpassword /bin/true 2>&1
- qmail-smtp 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp
- qmail-pop3 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup ultraqmail.com(메일서버도메인명) /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
- qmail-pop3 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3
- 각 구동 및 로거파일 권한 설정
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
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
- 디폴트 알리아싱 설정
cd /var/qmail/alias
echo 임의의사용자아이디 > .qmail-mailer-daemon
echo 임의의사용자아이디 > .qmail-postmaster
echo 임의의사용자아이디 > .qmail-root
ex)
cd /var/qmail/alias
echo alias > .qmail-mailer-daemon
echo alias > .qmail-postmaster
echo alias > .qmail-root
- /var/qmail/rc 파일 생성
cp /var/qmail/boot/proc /var/qmail/rc
vi /var/qmail/rc
* 7라인을 다음과 같이 수정
qmail-start '|preline procmail ./Maildir/' splogger qmail
- 로그 디렉토리 생성및 소유권 변경
(차후 이쪽에서 로그를 볼 수 있도록 변경함)
mkdir -p /var/log/qmail/send
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
chown -R qmaill /var/log/qmail
- qmail 실행파일 생성
아래의 스크립트를 그대로 복사, 저장하거나 새로 받습니다.
http://kltp.kldp.org/tmp/qmail.txt
이 파일을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 줍니다.
vi /etc/init.d/qmail
=====================요기서부터====================
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: qmail 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-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
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
======================요기까지=====================
chmod 755 /etc/init.d/qmail
- 릴레이 설정(파일을 생성합니다)
vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
서버아이피:allow,RELAYCLIENT=""
:allow
- tcp.smtp를 cdb형식으로 변환
/etc/init.d/qmail cdb
** 보통은 tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 를
사용하지만 /etc/init.d/qmail에 스크립트를 넣어줬기때문에 요걸루 변환합니다.
- sendmail 죽이기
이제 qmail로 모든 메일을 처리할 것이므로, 구형의 sendmail을 제거합니다.
우선 당신의 sendmail 데몬을 찾아서 그것을 kill합니다. 리눅스에서는
# 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.snd
mv /usr/sbin/sendmail /usr/sbin/sendmail.snd
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -sf /var/qmail/bin/qmail-qread /usr/bin/mailq
- 디비접속 컨트롤 파일 생성
vi /var/qmail/control/sqlserver
mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes
- 디비설정
사용자 추가를 할때 grant명령을 써서 하는것이 아니고 밑과 같은 식으로 하시는것을 권합니다.
몇가지 옵션이 틀리게 나오더군요. 물론 사용하는데 큰 지장은 없지만 약간 찝찝한 기분을 지울 수 없더군요.
(이부분은 mysql를 좀 아셔야 합니다. 완전 고생을 각오하셔야 합니다...)
mysql -u root -p암호
use mysql;
insert into user values ('localhost', 'phpmail', password('phpmail'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N','N', 'N', 'N', 'N', 'N', 'N', 'N','','','','',0,0,0);
insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y','Y', 'Y');
create database phpmail;
flush privileges;
use phpmail;
create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);
insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values
('서버도메인', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/메일박스가들어갈위치/서버도메인/phpmail');
** /메일박스가들어갈위치/서버도메인은 /home/phpmail/ultraqmail.com 이런식 입니다.
- 메일디렉토리 설정
mkdir -p /메일박스가들어갈위치/서버도메인/phpmail
/var/qmail/bin/maildirmake /메일박스가들어갈위치(/home/phpmail)/서버도메인(ultraqmail.com)/phpmail(id)/Maildir
chown -R 99:99 /메일박스가들어갈위치
만든 메일 홈으로 들어갑니다.
- .qmail 작성
========================================================================
%
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/ultraqmail.com/phpmail/.procmailrc
========================================================================
** 쿼타설정인데요.. 패치에 따라 설정이 좀 다르네요...
일반적으론 |/var/qmail/bin/qmail-quota 요렇게 설정하는데요
cocktail14+mysql+chkuser+quota.patch_20041116 패치를 사용했을경우는 쿼타를 디비의 값을 읽어 바로 처리 하네요 해서
% 만 .qmail안에 써 주시면 쿼타설정 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.
- .procmail 작성
========================================================================
PATH=/bin:/usr/bin:/usr/local/bin
DEFAULT=/home/phpmail/ultraqmail.com/phpmail/Maildir/
MAILDIR=/home/phpmail/ultraqmail.com/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh
# korean code decode
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m
:0
#:0 BfHw
#*^*.filename=.*(\?euc-kr\?)
#|formail -c | hcode -dk -m
# rejection from emailaddress
#* ^From: .*()
#/home/phpmail/ultraqmail.com/phpmail/Trash/rejection
# delete spam filter
#:0
#* ^Subject: .*()
#/dev/null
# move spam filter
#:0
#* ^Subject: .*()
#/home/phpmail/ultramail.com/phpmail/Trash/spam
#:0 Efhw
#* ^From: .*()
#|/script/my_vacation
======================================================================
** procmail에서 필터링을 하시려면 요 파일에 설정해주면 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.
그런데 우리는 매일 이런것들을 만들어 준다면 굉장히 불편할 겁니다.
그래서 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 합니다.
# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail
# echo ./Maildir/ > .procmail
이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail .procmail파일이 생기게 될 것입니다.
- 시스템을 리부팅하고, qmail의 정상적인 동작을 확인합니다.
리부팅되고나서, /var/log/maillog 파일내용을 살펴보면, 끝부분에서 다음과 같은 라인이 보여야 합니다.
qmail: status: local 0/10 remote 0/20
그렇지 않다면, qmail 설정에 문제가 있는 것이므로, 앞의 과정들을 다시 한번 꼼꼼히 살펴보고,
설정파일들을 자세히 검토해야만 합니다.
ps ax 명령을 내리고나서, 다음과 같은 라인들이 보이는 지를 확인합니다.
#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 설정에 문제가 있는 것이다.
위와 같은 메시지와 프로세서들이 보이지 않는다면, 문서 앞의 과정에서 만든 설정파일들을 잘못 만든것
입니다. 대표적으로 자주 하는 실수는 /var/qmail/supervise/qmail-send/log/run 파일과
/var/qmail/supervise/qmail-smtpd/log/run 파일을 만들 때, qmaill을 qmail 로 잘못 쓰는 것입니다.
이 문서에 쓰여진 설정파일의 내용은 절대로 오타나 탈자가 없으므로, 잘 보고 틀린 곳을 찾아내기 바랍니다.
- 가상계정 테스트
/var/qmail/bin/qmail-getpw phpmail(id) 서버도메인(ultraqmail.com)
이렇게 했을때
phpmail9999/메일박스가들어갈위치/서버도메인/phpmail
이렇게 떨어지면 정상입니다.
여기서 phpmail은 메일유저입니다. phpmail은 실 계정이 아닌 가상계정으로 디비에 저장됩니다.
이렇게 설정해 놓으면 차후 새로운 메일들은 phpmail 아랫쪽으로 쌓이게 됩니다.
===============================================================
여기까지 하면 일단 아웃룩으로 메일 서비스를 이용할 수 있습니다.
물론 스팸메일이나 바이러스 등을 걸러주는 기능은 빠져있습니다.
================================================================
6. imap 설치
1) imap-4.7c 및 해당 패치 다운로드
http://www.au.horde.org/pub/imap/old/ 에서 imap-4.7c2.tar.Z 를 다운로드
http://www.davideous.com/imap-maildir/distrib/imap-4.7/ 에서
imap-4.7-maildirpatched-1.00.tar.gz 를 다운로드
http://www.softagency.co.jp/products/mysql/imap.html 에서
imap-mysql-0.0.2.patch.gz를 다운로드
** imap을 사용하기 위해선 mysql패치와 maildir패치가 필요합니다. 두번째 링크에 보면
각 패칭들이 모두 있기는 하지만 일일이 다 패치해주려면 중복되는것두 있구 해서 어렵습니다.
그래서 imap-4.7-maildirpatched-1.00.tar.gz 이 파일을 선택했는데요. 요넘은 imap-4.7에 maildir이 패치된 소스입니다. 이 두개가지구 설치합니다.
2) imap소소 및 패치 구하기
imap-4.7c.tar.gz
imap-mysql-0.0.2.patch
imap-4.5_maildirpatched-1.00.tar.gz
imap-4.5-qmail.patch
imap-4.5-mdirlist.patch
imap-4.5-maildir980721-rename.patch
imap-4.5-maildir980721-delete.patch
imap-4.5-createproto.patch
- 소스의 압축을 풉니다.
tar xvf imap-4.7c.tar
cd imap-4.7c
패치는 patch 디렉토리에 모아놓습니다.
패치를 하기전에 다음과 같은것을 숙지하셔야 합니다.
위의 노가다는 이것을 위한 전초전에 불과합니다. 좀 고생을 더 심하게 하셔야 합니다.
다운받은 Maildir패치는 전부 4.5버전이므로 patch 명령어를 써서 패치를 할 수가 없고 반드시 해당 패치를 열어 내용을 실제 소스 코드에서 찾아서 적용시켜야 합니다.
패치방법은 다음과 같습니다.
예를 들어서...
imap-4.5-qmail.patch 을 패치를 한다면....
vi imap-4.5-qmail.patch
-> vi src/osdep/unix/env_unix.c를 수정함을 알수 있습니다.
(diff 로 시작하는 문구로 시작해서 패치를 할 경로와 파일명이 나와있습니다.)
{
char tmp[MAILTMPLEN];
if (!sysInbox) { /* initialize if first time */
- sprintf (tmp,"%s/%s",MAILSPOOL,myusername ());
+ sprintf (tmp,"%s/Mailbox",myhomedir ());
sysInbox = cpystr (tmp); /* system inbox is from mail spool */
}
return sysInbox;
}
-> env_unix.c의 해당 위치를 찾아 - 로 표시된 줄은 없애고 + 로 된줄은 추가
머, 이런식으로 하시면 됩니다.
그럼 본격적으로 패치를 들어가도록 하죠.
cp imap-mysql-0.0.2.patch imap-mysql-0.0.2.patch.01
vi imap-mysql-0.0.2.patch.01
이곳에서 몇줄을 좀 지워주셔야 합니다.
36번째 줄에서부터 148번째 줄까지 삭제를 합니다.
보시면 아시겠지만 그곳이 env_unix.c 부분을 패치하는 곳입니다. 이곳 전부를 삭제합니다.
그리고 난후에
patch -p1 < ../../patch/imap-mysql-0.0.2.patch.01
그리고 아까 지웠던 39-148줄 부분을 위에서 말씀드린 패치법으로 일일이 손으로 적용시켜줘야
합니다. 만약 그냥 넘어가시면 나중에 make시 에러 납니다.
* 참고사항 *
나와있는 Maildir패치가 4.5버전용이구 이미 mysql패치를 적용해 버려서 그냥 patch명령으로 수정이 안됩니다.
imap-4.5_maildirpatched-1.00.tar.gz 파일을 압축을 풉니다.
(MAP 4.5에 Maildir patch를 적용해 놓은 패키지 인데... 이놈을 보고 풀면 도움이 됩니다. 나중에 patch시에 일부 파일은 사용합니다.)
4) imap-4.5-qmail.patch
위의 방법으로 패치합니다.
5) imap-4.5-mdirlist.patch
이것두 위의 a)와 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.
6) imap-4.5-maildir980721-rename.patch, imap-4.5-maildir980721-delete.patch
이 패치는 직접 수정하지 않고 아까 풀어놓은 imap-4.5_maildirpatched-1.00/src/osdep/unix/
에서 maildir.c maildir.h 두개를 복사해오면 패치는 적용이 된 상태이므로 특별히 수정해 줄 필요는 없습니다.
cp ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.c ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.h src/osdep/unix/
7) imap-4.5-createproto.patch
이것두 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.
8) make전 추가 수정 사항
maildir.c 파일이 들어갔으니 이놈을 makefile에 추가해야합니다.
vi ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/Makefile
vi src/osdep/unix/Makefile
위의 Makefile에 maildir 이란 글자를 찾아 그것을 참조하여 아래의 Makefile의 해당 위치에 입력하면 된다. (한 4 5군데 정도)
9) src/c-client/mail.h 수정
mail.h 를 보시면 MESSAGECACHE라는 structure(구조체)가 있습니다.
unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;
이렇게 되어있는 부분에 포인터를 하나 추가시켜줍니다.
unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
void *maildirp; /* for the Maildir driver */ <-- 요놈.
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;
- src/osdep/unix/Makefile 수정
SQLSERVERFILE=/var/qmail/control/sqlserver
10) 몇가지 ssl에 관련된 파일 복사
cp /usr/kerberos/include/krb5.h /usr/include/openssl/
cp /usr/kerberos/include/com_err.h /usr/include/openssl/
cp /usr/kerberos/include/profile.h /usr/include/openssl/
11) vi src/osdep/unix/env_unix.c
다음과 같은 부분을(비슷하게 되었습니다.)
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-L/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
이렇게 변경해 주세요.
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
12) 수정을 다 했으면 make를 한다.
make slx
-- 주의 --
만약 아래의 error가 발생한다면 Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는 원래대로 되돌려 놓으면 됩니다.
-- error message --
make[3]: *** [osdep.o] Error 1
make[3]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[2]: *** [slx] Error 2
make[2]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[1]: *** [OSTYPE] Error 2
make[1]: Leaving directory `/home/test/webmail/imap-4.7b'
make: *** [slx] Error 2
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h
그러나 우리는 애초부터 변경을 해서 사용했기 때문에 왠만해서는 에러가 안날겁니다.
만약 그래도 에러가 나신다면 패치를 잘못하신겁니다....
그렇다면 완전 생 노가다죠....
13) 추가환경 설정
cd /temp
cp -r imap4.7c /usr/local/imap
ln -s /usr/local/imap/c-client /usr/local/imap/include
ln -s /usr/local/imap/c-client /usr/local/imap/lib
cp /usr/local/imap/imapd/imapd /usr/sbin
이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록
하려면 환경설정을 수정해 주어야 합니다.
cd /etc/xinetd.d
vi imapd
service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}
서비스가 제대로 등록되었는지 확인한다.
vi /etc/services
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
주석으로 막혀 있는경우 제거해줍니다.
슈퍼데몬을 재가동한다.
/etc/init.d/xinetd restart
14) 설정 테스트
telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2000.70 server ready
user test@도메인
초 주요사항입니다.
로그인 아이디는 반듯이 id@도메인입니다. 이 부분을 무시하시는 경향이 있는데 굉장히 중요한
사항입니다. 반듯이 id@도메인입니다.
아웃룩을 쓰실때에도 반듯이 id@도메인입니다. 꼭 기억하세요.
+OK User name accepted, password please
pass 1234
+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.
telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost IMAP4rev1 v12.264 server ready
a00 login test@도메인 암호
a00 OK LOGIN completed
a01 list mbox *
* LIST (\NoInferiors) NIL INBOX
a01 OK LIST completed
a02 logout
####################################################
#######################후설치#######################3
컴파일전 작업
rm /usr/include/sys/time.h ->메세지 확인하세요 반듯이 심볼릭 링크 time.h입니다!!!
mv /usr/include/sys/time.h.ori /usr/inlcude/sys/time.h
1. apache 설치
1) http://httpd.apache.org/download.cgi 에서 최신소스를 다운로드
2) 컴파일옵션 (prefork방식)
vi /소스디렉토리/server/mpm/prefork/prefork.c 에서
#define DEFAULT_SERVER_LIMIT 256 요 부분을
#define DEFAULT_SERVER_LIMIT 1024 요렇게 수정 (쓰레드 수를 좀 늘렸어용~~)
./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-mods-shared=all --enable-so --with-mpm=prefork --enable-ssl=shared
make ; make install
포크방식과 워커방식은 구동방식이 좀 다릅니다. 아파치 홈페이지에 가시면 자세한 정보가 있습니다.
2. php 설치
http://www.php.net/downloads.php 에서 최신소스 다운로드
사전준비
php압축을 푼후 configure파일을 약간 편집해준다.
#vi configure
// 이부분을
TST_LIBS="$DLIBS $IMAP_SHARED_LIBADD"
old_LIBS=$LIBS
LIBS="$TST_LIBS $LIBS"
// 이렇게 고칩니다.
TST_LIBS="$DLIBS $IMAP_SHARED_LIBADD -L/usr/local/mysql/lib/mysql -lmysqlclient"
old_LIBS=$LIBS
LIBS="$TST_LIBS $LIBS -L/usr/local/mysql/lib/mysql -lmysqlclient"
1) 설치
컴파일 및 설치
./configure --prefix=/usr/local/php4 --with-apxs2=/usr/local/apache/bin/apxs --enable-sigchild --enable-magic-quotes --enable-ftp --with-imap=/usr/local/imap --with-mysql=/usr/local/mysql -enable-shared --enable-track-vars
make; make install
설정파일 복사 (php.ini-recommended, php.ini-dist 파일중 아무거나 써도 무방함)
cp /소스디렉토리/php.ini-dist /usr/local/php4/lib/php.ini
2) httpd.conf 수정
vi /아파치설치디렉토리/conf/httpd.conf
/DirectoryIndex index.html index.html.var 로 검색하여
DirectoryIndex index.html index.html.var index.php 요렇게되게 index.php추가
/AddType application 로 검색하여 적당한 부분에
AddType application/x-httpd-php .php .phtml .php3 .php4 .html .htm
AddType application/x-httpd-php-source .phps
3. Zendoptimizer 설치
http://www.zend.com/store/products/zend-optimizer.php 에서 최신소스 다운로드
1) 설치
설치 및 설정값 입력
cd /소스디렉토리/
./install.sh 하면 설치화면이 나옵니다. 따라서 하면 됩니다.
Zendoptimizer : /data/local/zend
php.ini : /usr/local/php/lib
apache : /usr/local/apache/bin/apxs
Apache 2.x.x 선택
2) 아파치 재시작
/usr/local/apache/bin/apachectl restart
4. phpmail설치
http://qmail.kldp.org/phpbb/viewtopic.php?t=5856&highlight=phpmail-1.0.1 에서 phpMail-1.0.1.tar.gz 다운로드
1) 설치(웹서버에 올리기)
파일 올리기
tar -zxvf phpmail-1.0.1.tar.gz
mv phpmail-1.0.1 /호스트도메인위치
** 침거 :제 설정은 /호스트도메인위치를 /home/phpmail/ultraqmail.com입니다.
2) 호스트 설정
vi /아파치설치디렉토리/conf/httpd.conf
가상 호스트를 하나 생성하고 해당 호스트에
php_value register_globals 1 을 추가로 적어준다.
** 일반적으로 php설정중 register_globals = Off 로 셋팅하는데 이 호스트에서만 on으로 한다
3) 설치(디비테이블생성)
- 기존 디비 삭제 (phpmail-1.0.1안에 디비 백업 있으므로 삭제후 복원한다.)
mysql -u root -p
use phpmail;
drop table mailuser;
exit;
- 디비 복원
mysql -u root -p phpmail < phpmail-linux.sql
- 기본 도메인 추가
mysql -u root -p
use phpmail;
insert into maildomn (mbox_host,company,admin,email,home)
values('메일서버도메인명', '회사명','관리자아이디','관리자메일주소','도메인디스크위치');
** sample
insert into maildomn (mbox_host,company,admin,emal,home)
values ('ultramail.com', 'ultramail', 'phpmail', 'phpmail@ultramail.com','/home/phpmail/ultramail.com');
4) phpmail 환경설정
vi DocumentRoot/phpmail-1.0.x/lib/config.lib.html
자신의 설정에 맞게 수정해 주시면 됩니다.
주로 mysql의 연결쪽과 메일박스 들어가는 위치 를 보시면 됩니다.
5) 유저등록
http://호스트/register.html 를 이용하여 유저등록
6) 접속확인
브라우저를 연 후 웹메일 호스트로 연결하여봅니다.
#################끝########################
참고사이트
http://cafe.naver.com/greenweb.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=677
http://wiki.kldp.org/KoreanDoc//html/Qmail_Install-KLDP/Qmail_Install-KLDP.html#toc19
http://qmail.kldp.org/wiki/wiki.php/%BC%B3%C4%A1%B0%A1%C0%CC%B5%E5
리눅스는 Redhat9 Kernel 2.4.20버전을 사용하였습니다.
또한 가능하면 이 문서에 있는 소스를 받으세요. 이문서상외의 소스나 기타 프로그램들은
작동여부를 장담할 수 없습니다.
설치 기초 작업은 /root/src라는 곳에서 작업을 합니다.
설치순서는
openssl - mysql BerkelyDB - qmail - ucspi - daemon tools - checkpassword - imap - phpmail순으로 설치를 합니다.
#################설치 기초 공사#########################
1. openssl 설치
1) 가능하면 기본 설정으로 설정하시기 바랍니다. 기본을 /usr/local/ssl로 잡고 있고 다른 소스들도 ssl을 쓸시 저 기본 디렉토리를 사용합니다. 그러니 고치지 마시고 기본 그대로의 사용을 적극 권장드립니다.
- http://www.openssl.org/source/ 에서 openssl-0.9.7a.tar.gz 이버전을 받으세요.
qmail홈페이지에서 faq를 보시면 위 버전 이상은 어떤 이유에서인지 에러가 난다고하네요. 정확하게 어디서 보기는 봤는데 출처는 정확히 모르겠습니다. 아시는분 리플달아주세요.
2) Install
./config
make; make install
- mysql 설치
http://downloads.mysql.com/archives/mysql-3.23/mysql-3.23.58.tar.gz 타볼소스로 다운받습니다.
3) 컴파일 옵션 / 설치
./configure --prefix=/usr/local/mysql --with-openssl --with-charset=ecu_kr
make; make install
(기타 다른 옵션이 필요하시다면 붙이셔도 상관은 없습니다.)
4) 약간의 환경설정이 필요합니다.
cp support-files/my-huge.cnf /etc/my.cnf
groupadd mysql
adduser -g mysql mysql
vi /etc/passwd
mysql:x:522:523::/home/mysql:/sbin/nologin // nologin 으로 수정
rm -rf /home/mysql
cd /usr/local/mysql/share/mysql
vi mysql.server
134줄의 부분을 약간 변경합니다.
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --language=korean & 을
$bindir/safe_mysqld --datadir=$datadir --language=korean --pid-file=$pid_file --language=korean &
즉 --language를 추가합니다.
cp mysql.server /usr/local/mysql/bin
cp mysql.server /etc/rc.d/init.d/mysqld
ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S55mysqld <-시작번호는 알아서 편한번호로 지정하십시요.
5) 디비 생성
cd /설치디렉토리 (나의 경우엔 cd /usr/local/mysql)
./bin/mysql_install_db (base 디비를 생성하세요~~)
chown -R mysql.mysql /usr/local/mysql/var
- mysqladmin 암호설정
/etc/rc.d/init.d/mysqld start
/usr/local/mysql/bin/mysqladmin -u root password 암호
2. BerkeleyDB 설치
특별히 쓰지는 않지만 이 않에 들어있는 몇가지 라이브러리가 좀 필요하다고 하네요. 솔직하게 어디서 쓰이는지는 모르겠습니다. 하지만 나중에 qmail들어가서 make 해보시면 아시겠지만 설치와 미설치의 make오류는 참 차이가 나는것 같습니다.(기분상...^^;;) 또한 여러 프로그램에서 많이 쓰인다고 합니다. 저두 언젠가는 써볼 생각입니다.
1) 설치
http://www.sleepycat.com/docs/ref/build_unix/intro.html ->버클리 DB설치법.
그러나 영문사이트인 관계로...
http://dev.sleepycat.com/downloads/releasehistorybdb.html -4.2.52버전을 받습니다.
cd /root/src/db-4.2.52/build_unix
../dist/configure
make
make install
2) 동적 라이브러리링크
vi /etc/ld.so.conf 에서
/usr/local/mysql/lib/mysql 추가
/usr/local/BerkeleyDB.4.2/lib 추가
프롬프트에서
ldconfig 엔터
###################qmail 설치#######################
/root/qmailsrc/src <- 이곳에 qmail관련된 모든 소스를 넣어둡니다.
/root/qmailsrc/patch <- 패치에 관련된 모든 파일을 이곳에 넣어둡니다.
이제 본격적인 작업에 들어갑니다. 이제부터가 본게임의 시작입니다.
선작업
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h
큐메일이 좀 오래된지라 time.h파일이 문제가 됩니다.
그래서 구버전의 time.h로 링크를 걸어서 컴파일 하는 것입니다.
나중에 apache와 php컴파일시 원상복구해야합니다.
1. qmail Install
1) qmail및 해당 패치 다운로드
http://cr.yp.to/qmail.html 에서 qmail-1.03 다운로드
(Mirror사이트중 빠른곳에서 받으시면 됩니다. 참고로 일본 사이트가 제일 빠르네요)
http://qmail.kldp.org/phpbb/viewtopic.php?t=5798 에서
cocktail14+mysql+chkuser+quota.patch_20041116 다운로드 (2004년 11월16일자 패치)
참고)
캌테일 패치는 qmail에 필요한 여러가지의 패치를 모아놓은 패치 입니다. 패치 이름중에 mysql+chkuser 이것이 마이에스큐엘을 연동하여 사용하고, 유저를 체크할 수 있게 해주는 것 입니다. 하지만 이것이 좀 말이 많기도 합니다. 워낙 많은 패치를 해 놓다보니 쓸데 없는 기능이 들어가기도 하고 자신에게는 필요없는 패치가 되기도 합니다. 하지만 굉장히 좋기도 합니다. 필요한 패치를 모두 해주기 때문이죠. 만약 칵테일 패치를 하지 않는다면 http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서 qmail-1.03.errno.patch 와 qmail-1.03.qmail_local.patch 다운받아 패치를 해주어야 합니다. 하지만 우리는 캌테일 패치를 해주신다면 위의 2개의 패치는 하지 않으셔도 됩니다.
(에러 납니다.!!!!!)
주의!!!!!
혹시 나중에 설치후 SMTP 기능이 제대로 동작이 되지 않는다면 칵테일 패치를 하지 마시고 위의 2가지 패치로 하시기 바랍니다. 간혹 칵테일 패치로 동작이 되지 않는수도 있습니다.
2) 설치
- qmail을 위한 그룹 및 계정 생성
mkdir /var/qmail
mkdir /var/qmail/alias
- qmail 설치
qmail의 압축을 풉니다.
vi INSTALL.ids
첫 부분에 보시면 Linux라는 부분에 다음과 같은 부분이 있습니다.
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
그 파일을 참고로 해서 다음과 같이 붙여넣기를 하셔서 파일 하나를 만듭니다.
그리고 실행을 하시면 됩니다.
ex)
vi user.sh
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
저장후 빠져나온 후...
sh user.sh
하면 디렉토리와 사용자 계정이 추가가 됩니다.
3) qmail 패치
cd /root/qmailsrc/src/qmail-1.3.0
patch -p1 < ../../patch/cocktail14+mysql+chkuser+quota.patch_20041116
4) 일부 파일 수정
vi mysql.c
#include <mysql/mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi qmail-getpw.c
#include </mysql/mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include 을 MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 을
MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl 로 수정
vi conf-cc
cc -O2 -DTLS=20021228 -I/usr/local/ssl/include 를
gcc -O2 -march=i686 -funroll-loops -DTLS=20021228 -I/usr/local/ssl/include 로 수정
수정필수사항은 mysql의 include, lib 경로와 openssl의 경로 입니다.
5) 컴파일 및 설치
make
make setup check
- control 파일들 생성
./config
실행후 정상적인 결과의 화면은 다음과 같습니다.
./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!
혹시 만약 ./config를 쳣을때 에러가 나온다면 반듯이 보셔야 할 부분이 있습니다.
/etc/resolv.conf
search chonnam.ac.kr <--- 이 부분이 굉장히 중요합니다.
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 chsd.chonnam.ac.kr chsd
123.234.123.231 other.chonnam.ac.kr other
위 파일의 내용을 확인하고, 내용에 맞추어 수정합니다.
/etc/sysconfig/network
..........
..........
HOSTNAME=chsd
DOMAINNAME=ultraqmail.com
..........
..........
위의 라인을 확인하여, 없으면 추가합니다.
위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면,
그때는 이렇게 합니다.
./config-fast ultraqmail.com
config-fast 다음에 서버의 DNS 등록 호스트네임을 다 써주면 됩니다.
그러면, 정상적으로 다음 설치가 가능합니다.
이 단계를 거치고 나면 /var/qmail/control/에 defaultdomain, locals, me, plusdomain, rcpthosts 이 생성되는데 차후 메일서버를 운영함에 있어 중요한 파일들이니 뭐하는 파일들인지 꼭 알아두시기 바랍니다.
2. ucspi-tcp 설치 (tcp커넥션을 만들어주는 것이죠)
1) ucspi-tcp및 해당 패치 다운로드
http://cr.yp.to/ucspi-tcp/install.html 에서
ucspi-tcp-0.88.tar.gz 다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
ucspi-tcp-0.88.errno.patch, ucspi-tcp-0.88.a_record.patch, ucspi-tcp-0.88.nobase.patch 다운로드
(참고로 사이트가 깜빡깜빡(?)합니다. 만약 접속 않되시면 몇 시간후 접속을 하세요...^^)
http://sylvestre.ledru.info/howto/qmail/ucspi-tcp-0.88-mysql.patch
를 받습니다.
2) 설치
- 원래는 rblsmtpd를 깔아야 합니다. 그러나 ucspi-tcp-0.88버전이상은
이것을 포함하고 있다고 합니다. 또한 굳이 깔때 문제가 생길지도 모른다고 하니 않까시는게
좋을듯 합니다.
- ucspi-tcp 패치
patch -p1 < ../patch/ucspi-tcp-0.88.errno.patch
patch -p1 < ../patch/ucspi-tcp-0.88.nobase.patch
patch -p1 < ../patch/ucspi-tcp-0.88.a_record.patch
patch -p0 < ../patch/ucspi-tcp-0.88-mysql.patch
- 일부 파일 수정
vi conf-cc
gcc -O2 -I/usr/include/mysql 를
gcc -O2 -march=i686 -funroll-loops -I/usr/local/mysql/include/mysql 로 수정
vi db.c
#include <mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi conf-ld
gcc -s -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient 을
gcc -s -I/usr/local/mysql/include/mysql -lmysqlclient -L/usr/local/mysql/lib/mysql 로 수정
-컴파일 및 설치
make
make setup check
3. demontool 설치
1) demontool및 해당 패치 다운로드
http://cr.yp.to/daemontools/install.html 에서
daemontools-0.76.tar.gz 다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
daemontools-0.76.errno.patch 다운로드
2) 설치
- 설치 디렉토리 생성
mkdir -p /package
chmod 1755 /package
cd /package
cp /root/qmailsrc/src/daemontools-0.76.tar.gz /package
tar -zxvf daemontools-0.76.tar.gz
rm -rf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /root/qmailsrc/patch/daemontools-0.76.errno.patch
package/install
4. chechpasswd
1) chechpasswd 및 해당 패치 다운로드
http://cr.yp.to/checkpwd/install.html 에서 checkpassword-0.90.tar.gz 다운로드
http://download.softagency.net/mysql/Downloads/Contrib/
checkpassword-0.90-mysql-0.6.6.patch.gz 다운로드 후 압축푼다.
http://qmail.kldp.org/src/patches/glibc-2.3.1/
checkpassword-0.90.errno.patch 다운로드
************************************************************
checkpassword-0.90-mysql-0.7.4.patch 가 있으나 에러가 난다고 알려져 있습니다.
참고사이트입니다.
http://qmail.kldp.org/phpbb/viewtopic.php?t=5309&highlight=checkpassword-0.90-mysql-0.6.6.patch
**************************************************************
chechpasswd는 말 그대로 메일 계정의 패스워드를 체크할 수 있게 해주는겁니다.
여기에 마이에스큐엘 패치를 하여 디비에 들어있는 가상계정의 패스워드체크도 가능하게 됩니다.
2) 설치
- checkpassword 패치
patch -p1 < ../../patch/checkpassword-0.90-mysql-0.6.6.patch
patch -p1 < ../../patch/checkpassword-0.90.errno.patch
- 일부 파일 수정
vi mysql.c
#include <mysql.h>을 #include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include 을 MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl 을
MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl 로 수정
vi conf-cc
gcc -O2 을 gcc -O2 -march=i686 -funroll-loops 로 수정
vi error.h
#include <errno.h> 추가
-컴파일 및 설치
make
make setup check
- 소유권 및 퍼미션 변경
참고사이트
http://qmail.kldp.org/phpbb/viewtopic.php?t=5908&highlight=checkpassword
chown root.nofiles /bin/checkpassword
chmod 4110 /bin/checkpassword
5. qmail설정
1) qmail-pop3, qmail-send, qmail-smtp 구동 / 로거 파일 생성
- 디렉토리 생성 및 권한설정
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d
- qmail-send 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
- qmail-send 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send
- qmail-smtp 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd `hostname -f` /bin/checkpassword /bin/true 2>&1
- qmail-smtp 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp
- qmail-pop3 구동(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup ultraqmail.com(메일서버도메인명) /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
- qmail-pop3 로거(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3
- 각 구동 및 로거파일 권한 설정
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
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
- 디폴트 알리아싱 설정
cd /var/qmail/alias
echo 임의의사용자아이디 > .qmail-mailer-daemon
echo 임의의사용자아이디 > .qmail-postmaster
echo 임의의사용자아이디 > .qmail-root
ex)
cd /var/qmail/alias
echo alias > .qmail-mailer-daemon
echo alias > .qmail-postmaster
echo alias > .qmail-root
- /var/qmail/rc 파일 생성
cp /var/qmail/boot/proc /var/qmail/rc
vi /var/qmail/rc
* 7라인을 다음과 같이 수정
qmail-start '|preline procmail ./Maildir/' splogger qmail
- 로그 디렉토리 생성및 소유권 변경
(차후 이쪽에서 로그를 볼 수 있도록 변경함)
mkdir -p /var/log/qmail/send
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
chown -R qmaill /var/log/qmail
- qmail 실행파일 생성
아래의 스크립트를 그대로 복사, 저장하거나 새로 받습니다.
http://kltp.kldp.org/tmp/qmail.txt
이 파일을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 줍니다.
vi /etc/init.d/qmail
=====================요기서부터====================
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: qmail 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-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
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
======================요기까지=====================
chmod 755 /etc/init.d/qmail
- 릴레이 설정(파일을 생성합니다)
vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
서버아이피:allow,RELAYCLIENT=""
:allow
- tcp.smtp를 cdb형식으로 변환
/etc/init.d/qmail cdb
** 보통은 tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 를
사용하지만 /etc/init.d/qmail에 스크립트를 넣어줬기때문에 요걸루 변환합니다.
- sendmail 죽이기
이제 qmail로 모든 메일을 처리할 것이므로, 구형의 sendmail을 제거합니다.
우선 당신의 sendmail 데몬을 찾아서 그것을 kill합니다. 리눅스에서는
# 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.snd
mv /usr/sbin/sendmail /usr/sbin/sendmail.snd
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -sf /var/qmail/bin/qmail-qread /usr/bin/mailq
- 디비접속 컨트롤 파일 생성
vi /var/qmail/control/sqlserver
mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes
- 디비설정
사용자 추가를 할때 grant명령을 써서 하는것이 아니고 밑과 같은 식으로 하시는것을 권합니다.
몇가지 옵션이 틀리게 나오더군요. 물론 사용하는데 큰 지장은 없지만 약간 찝찝한 기분을 지울 수 없더군요.
(이부분은 mysql를 좀 아셔야 합니다. 완전 고생을 각오하셔야 합니다...)
mysql -u root -p암호
use mysql;
insert into user values ('localhost', 'phpmail', password('phpmail'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N','N', 'N', 'N', 'N', 'N', 'N', 'N','','','','',0,0,0);
insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y','Y', 'Y');
create database phpmail;
flush privileges;
use phpmail;
create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);
insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values
('서버도메인', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/메일박스가들어갈위치/서버도메인/phpmail');
** /메일박스가들어갈위치/서버도메인은 /home/phpmail/ultraqmail.com 이런식 입니다.
- 메일디렉토리 설정
mkdir -p /메일박스가들어갈위치/서버도메인/phpmail
/var/qmail/bin/maildirmake /메일박스가들어갈위치(/home/phpmail)/서버도메인(ultraqmail.com)/phpmail(id)/Maildir
chown -R 99:99 /메일박스가들어갈위치
만든 메일 홈으로 들어갑니다.
- .qmail 작성
========================================================================
%
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/ultraqmail.com/phpmail/.procmailrc
========================================================================
** 쿼타설정인데요.. 패치에 따라 설정이 좀 다르네요...
일반적으론 |/var/qmail/bin/qmail-quota 요렇게 설정하는데요
cocktail14+mysql+chkuser+quota.patch_20041116 패치를 사용했을경우는 쿼타를 디비의 값을 읽어 바로 처리 하네요 해서
% 만 .qmail안에 써 주시면 쿼타설정 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.
- .procmail 작성
========================================================================
PATH=/bin:/usr/bin:/usr/local/bin
DEFAULT=/home/phpmail/ultraqmail.com/phpmail/Maildir/
MAILDIR=/home/phpmail/ultraqmail.com/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh
# korean code decode
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m
:0
#:0 BfHw
#*^*.filename=.*(\?euc-kr\?)
#|formail -c | hcode -dk -m
# rejection from emailaddress
#* ^From: .*()
#/home/phpmail/ultraqmail.com/phpmail/Trash/rejection
# delete spam filter
#:0
#* ^Subject: .*()
#/dev/null
# move spam filter
#:0
#* ^Subject: .*()
#/home/phpmail/ultramail.com/phpmail/Trash/spam
#:0 Efhw
#* ^From: .*()
#|/script/my_vacation
======================================================================
** procmail에서 필터링을 하시려면 요 파일에 설정해주면 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.
그런데 우리는 매일 이런것들을 만들어 준다면 굉장히 불편할 겁니다.
그래서 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 합니다.
# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail
# echo ./Maildir/ > .procmail
이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail .procmail파일이 생기게 될 것입니다.
- 시스템을 리부팅하고, qmail의 정상적인 동작을 확인합니다.
리부팅되고나서, /var/log/maillog 파일내용을 살펴보면, 끝부분에서 다음과 같은 라인이 보여야 합니다.
qmail: status: local 0/10 remote 0/20
그렇지 않다면, qmail 설정에 문제가 있는 것이므로, 앞의 과정들을 다시 한번 꼼꼼히 살펴보고,
설정파일들을 자세히 검토해야만 합니다.
ps ax 명령을 내리고나서, 다음과 같은 라인들이 보이는 지를 확인합니다.
#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 설정에 문제가 있는 것이다.
위와 같은 메시지와 프로세서들이 보이지 않는다면, 문서 앞의 과정에서 만든 설정파일들을 잘못 만든것
입니다. 대표적으로 자주 하는 실수는 /var/qmail/supervise/qmail-send/log/run 파일과
/var/qmail/supervise/qmail-smtpd/log/run 파일을 만들 때, qmaill을 qmail 로 잘못 쓰는 것입니다.
이 문서에 쓰여진 설정파일의 내용은 절대로 오타나 탈자가 없으므로, 잘 보고 틀린 곳을 찾아내기 바랍니다.
- 가상계정 테스트
/var/qmail/bin/qmail-getpw phpmail(id) 서버도메인(ultraqmail.com)
이렇게 했을때
phpmail9999/메일박스가들어갈위치/서버도메인/phpmail
이렇게 떨어지면 정상입니다.
여기서 phpmail은 메일유저입니다. phpmail은 실 계정이 아닌 가상계정으로 디비에 저장됩니다.
이렇게 설정해 놓으면 차후 새로운 메일들은 phpmail 아랫쪽으로 쌓이게 됩니다.
===============================================================
여기까지 하면 일단 아웃룩으로 메일 서비스를 이용할 수 있습니다.
물론 스팸메일이나 바이러스 등을 걸러주는 기능은 빠져있습니다.
================================================================
6. imap 설치
1) imap-4.7c 및 해당 패치 다운로드
http://www.au.horde.org/pub/imap/old/ 에서 imap-4.7c2.tar.Z 를 다운로드
http://www.davideous.com/imap-maildir/distrib/imap-4.7/ 에서
imap-4.7-maildirpatched-1.00.tar.gz 를 다운로드
http://www.softagency.co.jp/products/mysql/imap.html 에서
imap-mysql-0.0.2.patch.gz를 다운로드
** imap을 사용하기 위해선 mysql패치와 maildir패치가 필요합니다. 두번째 링크에 보면
각 패칭들이 모두 있기는 하지만 일일이 다 패치해주려면 중복되는것두 있구 해서 어렵습니다.
그래서 imap-4.7-maildirpatched-1.00.tar.gz 이 파일을 선택했는데요. 요넘은 imap-4.7에 maildir이 패치된 소스입니다. 이 두개가지구 설치합니다.
2) imap소소 및 패치 구하기
imap-4.7c.tar.gz
imap-mysql-0.0.2.patch
imap-4.5_maildirpatched-1.00.tar.gz
imap-4.5-qmail.patch
imap-4.5-mdirlist.patch
imap-4.5-maildir980721-rename.patch
imap-4.5-maildir980721-delete.patch
imap-4.5-createproto.patch
- 소스의 압축을 풉니다.
tar xvf imap-4.7c.tar
cd imap-4.7c
패치는 patch 디렉토리에 모아놓습니다.
패치를 하기전에 다음과 같은것을 숙지하셔야 합니다.
위의 노가다는 이것을 위한 전초전에 불과합니다. 좀 고생을 더 심하게 하셔야 합니다.
다운받은 Maildir패치는 전부 4.5버전이므로 patch 명령어를 써서 패치를 할 수가 없고 반드시 해당 패치를 열어 내용을 실제 소스 코드에서 찾아서 적용시켜야 합니다.
패치방법은 다음과 같습니다.
예를 들어서...
imap-4.5-qmail.patch 을 패치를 한다면....
vi imap-4.5-qmail.patch
-> vi src/osdep/unix/env_unix.c를 수정함을 알수 있습니다.
(diff 로 시작하는 문구로 시작해서 패치를 할 경로와 파일명이 나와있습니다.)
{
char tmp[MAILTMPLEN];
if (!sysInbox) { /* initialize if first time */
- sprintf (tmp,"%s/%s",MAILSPOOL,myusername ());
+ sprintf (tmp,"%s/Mailbox",myhomedir ());
sysInbox = cpystr (tmp); /* system inbox is from mail spool */
}
return sysInbox;
}
-> env_unix.c의 해당 위치를 찾아 - 로 표시된 줄은 없애고 + 로 된줄은 추가
머, 이런식으로 하시면 됩니다.
그럼 본격적으로 패치를 들어가도록 하죠.
cp imap-mysql-0.0.2.patch imap-mysql-0.0.2.patch.01
vi imap-mysql-0.0.2.patch.01
이곳에서 몇줄을 좀 지워주셔야 합니다.
36번째 줄에서부터 148번째 줄까지 삭제를 합니다.
보시면 아시겠지만 그곳이 env_unix.c 부분을 패치하는 곳입니다. 이곳 전부를 삭제합니다.
그리고 난후에
patch -p1 < ../../patch/imap-mysql-0.0.2.patch.01
그리고 아까 지웠던 39-148줄 부분을 위에서 말씀드린 패치법으로 일일이 손으로 적용시켜줘야
합니다. 만약 그냥 넘어가시면 나중에 make시 에러 납니다.
* 참고사항 *
나와있는 Maildir패치가 4.5버전용이구 이미 mysql패치를 적용해 버려서 그냥 patch명령으로 수정이 안됩니다.
imap-4.5_maildirpatched-1.00.tar.gz 파일을 압축을 풉니다.
(MAP 4.5에 Maildir patch를 적용해 놓은 패키지 인데... 이놈을 보고 풀면 도움이 됩니다. 나중에 patch시에 일부 파일은 사용합니다.)
4) imap-4.5-qmail.patch
위의 방법으로 패치합니다.
5) imap-4.5-mdirlist.patch
이것두 위의 a)와 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.
6) imap-4.5-maildir980721-rename.patch, imap-4.5-maildir980721-delete.patch
이 패치는 직접 수정하지 않고 아까 풀어놓은 imap-4.5_maildirpatched-1.00/src/osdep/unix/
에서 maildir.c maildir.h 두개를 복사해오면 패치는 적용이 된 상태이므로 특별히 수정해 줄 필요는 없습니다.
cp ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.c ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.h src/osdep/unix/
7) imap-4.5-createproto.patch
이것두 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.
8) make전 추가 수정 사항
maildir.c 파일이 들어갔으니 이놈을 makefile에 추가해야합니다.
vi ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/Makefile
vi src/osdep/unix/Makefile
위의 Makefile에 maildir 이란 글자를 찾아 그것을 참조하여 아래의 Makefile의 해당 위치에 입력하면 된다. (한 4 5군데 정도)
9) src/c-client/mail.h 수정
mail.h 를 보시면 MESSAGECACHE라는 structure(구조체)가 있습니다.
unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;
이렇게 되어있는 부분에 포인터를 하나 추가시켜줍니다.
unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
void *maildirp; /* for the Maildir driver */ <-- 요놈.
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;
- src/osdep/unix/Makefile 수정
SQLSERVERFILE=/var/qmail/control/sqlserver
10) 몇가지 ssl에 관련된 파일 복사
cp /usr/kerberos/include/krb5.h /usr/include/openssl/
cp /usr/kerberos/include/com_err.h /usr/include/openssl/
cp /usr/kerberos/include/profile.h /usr/include/openssl/
11) vi src/osdep/unix/env_unix.c
다음과 같은 부분을(비슷하게 되었습니다.)
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-L/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
이렇게 변경해 주세요.
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
12) 수정을 다 했으면 make를 한다.
make slx
-- 주의 --
만약 아래의 error가 발생한다면 Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는 원래대로 되돌려 놓으면 됩니다.
-- error message --
make[3]: *** [osdep.o] Error 1
make[3]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[2]: *** [slx] Error 2
make[2]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[1]: *** [OSTYPE] Error 2
make[1]: Leaving directory `/home/test/webmail/imap-4.7b'
make: *** [slx] Error 2
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h
그러나 우리는 애초부터 변경을 해서 사용했기 때문에 왠만해서는 에러가 안날겁니다.
만약 그래도 에러가 나신다면 패치를 잘못하신겁니다....
그렇다면 완전 생 노가다죠....
13) 추가환경 설정
cd /temp
cp -r imap4.7c /usr/local/imap
ln -s /usr/local/imap/c-client /usr/local/imap/include
ln -s /usr/local/imap/c-client /usr/local/imap/lib
cp /usr/local/imap/imapd/imapd /usr/sbin
이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록
하려면 환경설정을 수정해 주어야 합니다.
cd /etc/xinetd.d
vi imapd
service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}
서비스가 제대로 등록되었는지 확인한다.
vi /etc/services
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
주석으로 막혀 있는경우 제거해줍니다.
슈퍼데몬을 재가동한다.
/etc/init.d/xinetd restart
14) 설정 테스트
telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2000.70 server ready
user test@도메인
초 주요사항입니다.
로그인 아이디는 반듯이 id@도메인입니다. 이 부분을 무시하시는 경향이 있는데 굉장히 중요한
사항입니다. 반듯이 id@도메인입니다.
아웃룩을 쓰실때에도 반듯이 id@도메인입니다. 꼭 기억하세요.
+OK User name accepted, password please
pass 1234
+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.
telnet을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost IMAP4rev1 v12.264 server ready
a00 login test@도메인 암호
a00 OK LOGIN completed
a01 list mbox *
* LIST (\NoInferiors) NIL INBOX
a01 OK LIST completed
a02 logout
####################################################
#######################후설치#######################3
컴파일전 작업
rm /usr/include/sys/time.h ->메세지 확인하세요 반듯이 심볼릭 링크 time.h입니다!!!
mv /usr/include/sys/time.h.ori /usr/inlcude/sys/time.h
1. apache 설치
1) http://httpd.apache.org/download.cgi 에서 최신소스를 다운로드
2) 컴파일옵션 (prefork방식)
vi /소스디렉토리/server/mpm/prefork/prefork.c 에서
#define DEFAULT_SERVER_LIMIT 256 요 부분을
#define DEFAULT_SERVER_LIMIT 1024 요렇게 수정 (쓰레드 수를 좀 늘렸어용~~)
./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-mods-shared=all --enable-so --with-mpm=prefork --enable-ssl=shared
make ; make install
포크방식과 워커방식은 구동방식이 좀 다릅니다. 아파치 홈페이지에 가시면 자세한 정보가 있습니다.
2. php 설치
http://www.php.net/downloads.php 에서 최신소스 다운로드
사전준비
php압축을 푼후 configure파일을 약간 편집해준다.
#vi configure
// 이부분을
TST_LIBS="$DLIBS $IMAP_SHARED_LIBADD"
old_LIBS=$LIBS
LIBS="$TST_LIBS $LIBS"
// 이렇게 고칩니다.
TST_LIBS="$DLIBS $IMAP_SHARED_LIBADD -L/usr/local/mysql/lib/mysql -lmysqlclient"
old_LIBS=$LIBS
LIBS="$TST_LIBS $LIBS -L/usr/local/mysql/lib/mysql -lmysqlclient"
1) 설치
컴파일 및 설치
./configure --prefix=/usr/local/php4 --with-apxs2=/usr/local/apache/bin/apxs --enable-sigchild --enable-magic-quotes --enable-ftp --with-imap=/usr/local/imap --with-mysql=/usr/local/mysql -enable-shared --enable-track-vars
make; make install
설정파일 복사 (php.ini-recommended, php.ini-dist 파일중 아무거나 써도 무방함)
cp /소스디렉토리/php.ini-dist /usr/local/php4/lib/php.ini
2) httpd.conf 수정
vi /아파치설치디렉토리/conf/httpd.conf
/DirectoryIndex index.html index.html.var 로 검색하여
DirectoryIndex index.html index.html.var index.php 요렇게되게 index.php추가
/AddType application 로 검색하여 적당한 부분에
AddType application/x-httpd-php .php .phtml .php3 .php4 .html .htm
AddType application/x-httpd-php-source .phps
3. Zendoptimizer 설치
http://www.zend.com/store/products/zend-optimizer.php 에서 최신소스 다운로드
1) 설치
설치 및 설정값 입력
cd /소스디렉토리/
./install.sh 하면 설치화면이 나옵니다. 따라서 하면 됩니다.
Zendoptimizer : /data/local/zend
php.ini : /usr/local/php/lib
apache : /usr/local/apache/bin/apxs
Apache 2.x.x 선택
2) 아파치 재시작
/usr/local/apache/bin/apachectl restart
4. phpmail설치
http://qmail.kldp.org/phpbb/viewtopic.php?t=5856&highlight=phpmail-1.0.1 에서 phpMail-1.0.1.tar.gz 다운로드
1) 설치(웹서버에 올리기)
파일 올리기
tar -zxvf phpmail-1.0.1.tar.gz
mv phpmail-1.0.1 /호스트도메인위치
** 침거 :제 설정은 /호스트도메인위치를 /home/phpmail/ultraqmail.com입니다.
2) 호스트 설정
vi /아파치설치디렉토리/conf/httpd.conf
가상 호스트를 하나 생성하고 해당 호스트에
php_value register_globals 1 을 추가로 적어준다.
** 일반적으로 php설정중 register_globals = Off 로 셋팅하는데 이 호스트에서만 on으로 한다
3) 설치(디비테이블생성)
- 기존 디비 삭제 (phpmail-1.0.1안에 디비 백업 있으므로 삭제후 복원한다.)
mysql -u root -p
use phpmail;
drop table mailuser;
exit;
- 디비 복원
mysql -u root -p phpmail < phpmail-linux.sql
- 기본 도메인 추가
mysql -u root -p
use phpmail;
insert into maildomn (mbox_host,company,admin,email,home)
values('메일서버도메인명', '회사명','관리자아이디','관리자메일주소','도메인디스크위치');
** sample
insert into maildomn (mbox_host,company,admin,emal,home)
values ('ultramail.com', 'ultramail', 'phpmail', 'phpmail@ultramail.com','/home/phpmail/ultramail.com');
4) phpmail 환경설정
vi DocumentRoot/phpmail-1.0.x/lib/config.lib.html
자신의 설정에 맞게 수정해 주시면 됩니다.
주로 mysql의 연결쪽과 메일박스 들어가는 위치 를 보시면 됩니다.
5) 유저등록
http://호스트/register.html 를 이용하여 유저등록
6) 접속확인
브라우저를 연 후 웹메일 호스트로 연결하여봅니다.
#################끝########################
참고사이트
http://cafe.naver.com/greenweb.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=677
http://wiki.kldp.org/KoreanDoc//html/Qmail_Install-KLDP/Qmail_Install-KLDP.html#toc19
http://qmail.kldp.org/wiki/wiki.php/%BC%B3%C4%A1%B0%A1%C0%CC%B5%E5
|
댓글목록
등록된 댓글이 없습니다.