리눅스, 자료실, 성경검색, 추억의게임, 고전게임, 오락실게임, rootman, http://www.rootman.co.kr
* 18.204.48.40 *
| Home | Profile | Linux | 자료실 | zabbix | Mysql 5.6 | 갤러리 | 성경검색 | 해피니스 | 자유게시판 | 게시물검색 | L | O | R |    

 
[qmail] [qmail] qmail 인스톨 가이드 (초기버전,2004년 09월)
 작성자 : rootman
Date : 2004-10-10 14:38  |  Hit : 7,297  

안녕하세요.
사이트 운영자 입니다..

qmail 설치하시면서 많이 힘드셨죠?

저도 전에 수많은 실패를 거듭한후 최종적으로 정리한 것들입니다.

qmail.kldp.org, 기존의 webmail.kldp.org 의 것들을 많이 참조를 하였습니다

주의사항.
1. mysql.h 화일 위치를 분명히 아셔야 합니다.
대부분 화일을 /usr/local 쪽에 설치를 하니까 아래처럼 하면 위치정보를 아실겁니다.
[[email protected] root]# find /usr/local/ -name "mysql.h"
/usr/local/mysql/include/mysql/mysql.h

이게 왜 필요하냐면, 아래꺼 설치하면서 대부분 mysql.h 위치정보가 틀려 에러를 발생합니다.
그러면, 작업디렉토리의 보통 Makefile 환경화일이 있는데,
최상단의 mysql 위치정보와 mysql.h 구문을 찾으셔서
include "/usr/local/mysql/include/mysql/mysql.h" 으로 변경해주시면 됩니다.
혹시.. 에러나시는 분들을 위해! ^^


2. qmail 스크립트를 작성하실때 주의사항
절대로 라인 끝 부분에 공백이 있나 없나를 반드시 체킹하셔야 합니다.
있으면 당연코 에러를 발생시킵니다.. 조심하세요.
이거 때문에 고생한게 하나두개가 아닙니다.


3. qmail에 대해 기본적인것들만 설치 방법을 제공해 드립니다.
vpopmail, 등등은 설명을 피하고, 가장 골치아픈 qmail 만 설명드리도록 하겠습니다.


4. MTA 를 sendmail 이 아닌 qmail을 쓸 것이므로 삭제또는 이름 변경
[[email protected] root]# rpm -e sendmail-devel sendmail-cf sendmail
[[email protected] root]# ps -ef | grep sendmail로 sendmail이 떠 있는지 확인
[[email protected] root]# /etc/init.d/sendmail stop
[[email protected] root]# mv /etc/rc3.d/S88sendmail /etc/rc3.d/K88sendmail
[[email protected] root]# mv /usr/lib/sendmail /usr/lib/sendmail.old
[[email protected] root]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old



===========================================================================
설치준비
-----------------------------------
apache-1.3.29
php-4.3.6
mysql-3.23.57
qmail-1.03
ucspi-tcp-0.88
daemontools-0.76
libiconv-1.7
expat-1.95.2
--------------------------------------------------------------
LINUX 7.1이상에서 문제가 되는 time.h에 대한 링크를 수정한다.
--------------------------------------------------------------
# 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 는 ucspi-tcp, imap 설치후 원상태로 변경하셔야 합니다.
--------------------------------------------------------------


Qmail 설치
--------------------------------------------------------------
1. qmail-1.03-linux.tar.gz의 압축을 풀고 소스디렉토리로 경로를 이동한다.
[[email protected] root]# gzip -d qmail-1.03-linux.tar.gz
[[email protected] root]# tar xvf qmail-1.03-linux.tar
[[email protected] root]# cd qmail-1.03


--------------------------------------------------------------
2. qmail설치디렉토리를 생성한다.
[[email protected] root]# mkdir /var/qmail


--------------------------------------------------------------
3. qmail계정을 생성한다.
[[email protected] root]# groupadd nofiles
[[email protected] root]# useradd -g nofiles -d /var/qmail/alias alias
[[email protected] root]# useradd -g nofiles -d /var/qmail qmaild
[[email protected] root]# useradd -g nofiles -d /var/qmail qmaill
[[email protected] root]# useradd -g nofiles -d /var/qmail qmailp
[[email protected] root]# groupadd qmail
[[email protected] root]# useradd -g qmail -d /var/qmail qmailq
[[email protected] root]# useradd -g qmail -d /var/qmail qmailr
[[email protected] root]# useradd -g qmail -d /var/qmail qmails


--------------------------------------------------------------
4. 컴파일, 설치한다.
[[email protected] root]# make && make setup check

여기에서 에러나시는 분들 상단의 "주의사항"을 꼭 읽어보세요..!!


--------------------------------------------------------------
Ucspi-tcp 설치
--------------------------------------------------------------
1. ucspi-tcp-0.88.tar.gz의 압축을 풀고 소스디렉토리로 경로를 이동.
[[email protected] root]# gzip -d ucspi-tcp-0.88.tar.gz
[[email protected] root]# tar xvf ucspi-tcp-0.88.tar
[[email protected] root]# cd ucspi-tcp-0.88

--------------------------------------------------------------
2. 컴파일, 설치한다.
[[email protected] root]# make && make setup check


--------------------------------------------------------------
Daemontools 설치
--------------------------------------------------------------
1. daemontools-0.76.tar.gz의 압축을 풀고 소스디렉토리로 경로를 이동
[[email protected] root]# gzip -d daemontools-0.76.tar.gz
[[email protected] root]# tar xvf daemontools-0.76.tar
[[email protected] daemontools-0.76]# cd admin/daemontools-0.76
[[email protected] daemontools-0.76]# package/install
[[email protected] daemontools-0.76]# cd command
[[email protected] commaond]# mv * /usr/local/bin/
[[email protected] root]# rm -rf /command


주의 : daemontools 설치후 /etc/inittab 의 제 하단에
SV:123456:respawn:/command/svscanboot 가 추가되는데 이를 주석처리한다
svscanboot, svscan 데몬이 실행되는데 이를 kill 한다.


--------------------------------------------------------------
Qmail 설정
--------------------------------------------------------------
1. qmail 소스디렉토리로 경로를 이동한다.

2. qmail control파일들을 생성한다.
[[email protected] qmail-1.03]# ./config-fast rootman.co.kr


3. qmail log디렉토리와 script들을 생성한다.
[[email protected] qmail-1.03]# mkdir -p /var/qmail/supervise/qmail-send/log
[[email protected] qmail-1.03]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[[email protected] qmail-1.03]# chmod +t /var/qmail/supervise/qmail-send
[[email protected] qmail-1.03]# chmod +t /var/qmail/supervise/qmail-smtpd


4. [[email protected] root]# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc


5. [[email protected] 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


6. [[email protected] root]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 8000000 \\
/usr/local/bin/tcpserver -vRHl0 -x/etc/tcp.smtp.cdb \\
-u $Q_UID -g $Q_GID 0 25 \\
/var/qmail/bin/qmail-smtpd \\
/bin/checkpassword /bin/true 2>&1


7. [[email protected] 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


8. 퍼미션변경
[[email protected] root]# chmod 755 /var/qmail/supervise/qmail-send/run
[[email protected] root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[[email protected] root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[[email protected] root]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run


9. 세부
[[email protected] root]# mkdir -p /var/log/qmail/smtpd
[[email protected] root]# chown qmaill /var/log/qmail /var/log/qmail/smtpd

[[email protected] root]# cd ~alias
[[email protected] root]# echo chanho > .qmail-mailer-daemon
[[email protected] root]# echo chanho > .qmail-postmaster
[[email protected] root]# echo chanho > .qmail-root
[[email protected] root]# echo # > .qmail-doublebounce

"chanho" 라는 로컬계정은
- mailer-daemon,
- postmaster,root
- qmail-doublebounce

로 전송된 메일을 수신한다, "#" 은 곧바로 삭제를 뜻한다


10. qmail 부트스크립트생성
[[email protected] root]# vi /etc/init.d/qmail

#-------------------------------------------------------------------------------------------
#!/bin/sh
# Source function library.
# . /etc/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/superviselog
;;
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<BR>chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <<HELP<BR /> 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. 퍼미션
[[email protected] root]# chmod 755 /etc/init.d/qmail
[[email protected] root]# ln -s /etc/init.d/qmail /etc/rc3.d/S88qmail


12. tcp.smtp RELAY생성
# vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
111.111.111.111:allow,RELAYCLIENT=""
:allow

주의 :
111.111.111.111 은 로컬 계정을 뜻하며, smtp access를 지원한다는 의미이다



13. qmail reload
[[email protected] root]# /etc/init.d/qmail cdb
또는
[[email protected] root]# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp<BR>

14. sendmail 화일 심볼릭 링크설정
[[email protected] root]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
[[email protected] root]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail


15. qmail rc파일생성
[[email protected] root]# cp /var/qmail/boot/proc /var/qmail/rc
[[email protected] root]# 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' splogger qmail
다음과 같이 수정한다.
qmail-start '|preline procmail ./Maildir/' splogger qmail


16. qmail 시작
[[email protected] root]# /etc/init.d/qmail start




--------------------------------------------------------------
Qmail 테스트
--------------------------------------------------------------
1. 테스트 계정에 메일박스 생성
[[email protected] root]# su - chanho
[[email protected] chanho]# /var/qmail/bin/maildirmake ~/Maildir
[[email protected] chanho]# echo ./Maildir/ > ~/.qmail
[[email protected] chanho]# exit


2. 메일 송/수신 테스트
[[email protected] root]# echo to: chanho | /var/qmail/bin/qmail-inject
[[email protected] root]# su - chanho
[[email protected] root]# find ~chanho/Maildir/new/
[[email protected] root]#
-rw------- 1 nobody nobody 525 Dec 30 12:03 1009681426.28068.webmail



------------------------------------------------------------------------------------------
imap 설치
------------------------------------------------------------------------------------------
[[email protected] root]# rpm -qa|grep imap <----- imap 이 설치 되어 있는가 확인<BR>[[email protected] root]# make slx
리눅스에 맞게 컴파일하기 위해 make 뒤에 slx 옵션을 붙여준다.
컴파일이 완료되면 imapd 디렉토리에 imapd가 ipopd디렉토리에는 ipop2d, ipop3d가 생성된다.

[[email protected] root]# cp ipopd/ipop[23]d /usr/sbin/
[[email protected] root]# cp imapd/imapd /usr/sbin/


[[email protected] xinetd.d]# cat > imapd
service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += DURATION USERID
log_on_failure += USERID
}

[[email protected] xinetd.d]# cat > ipop3d
service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
}


--------------------------------------------------------------
Iconv 설치
--------------------------------------------------------------
1. libiconv-1.7.tar.gz의 압축을 풀고 소스디렉토리로 경로를 이동한다.
[[email protected] root]# gzip -d libiconv-1.7.tar.gz
[[email protected] root]# tar xvf libiconv-1.7.tar
[[email protected] root]# cd libiconv-1.7


2. 컴파일, 설치한다.
[[email protected] libiconv-1.7]# ./configure && make && make install


--------------------------------------------------------------
Expat 설치
--------------------------------------------------------------
1. expat-1.95.2.tar.gz의 압축을 풀고 소스디렉토리로 경로를 이동한다.
[[email protected] root]# gzip -d expat-1.95.2.tar.gz
[[email protected] root]# tar xvf expat-1.95.2.tar
[[email protected] root]# cd expat-1.95.2

2. 컴파일, 설치한다.
[[email protected] expat-1.95.2]# ./configure && make && make install


--------------------------------------------------------------
checkpassord 설치
--------------------------------------------------------------
1. checkpassword-0.90.tar.gz 의 압축을 풀고 소스디렉토리로 경로를 이동
[[email protected] root]# tar xvfz checkpassword-0.90.tar.gz
[[email protected] root]# cd checkpassword-0.90 && make && make install
[[email protected] checkpassword-0.90]# chmod 4710 /bin/checkpassword
[[email protected] checkpassword-0.90]# chown root.nofiles /bin/checkpassword


--------------------------------------------------------------
Mysql 설정
--------------------------------------------------------------
1. sqlserver 설정
# vi /var/qmail/control/sqlserver
mysql_use yes // QMAIL에서 MYSQL계정을 사용할것인지 설정
server localhost // MYSQL이 설치된 서버를 지정
login phpmail // MYSQL 로그인아이디를 설정
password phpmail // MYSQL 로그인패스워드를 설정
db phpmail // MYSQL계정에 이용할 데이터베이스명을 설정
table info_user // MYSQL계정에 이용할 데이터베이스내 테이블명을 설정
port 3306 // MYSQL 포트를 설정
check_host no // 다중도메인을 지원할 것인지 설정
quota no // Maildir에 대해 Quota를 지정할 것인지 설정
ignore_validity yes // MYSQL계정에 대해 start_date, expire_date를 검사할것인지 설정


샘플

mysql_use yes
server localhost
login root
password 1234
db qmail_users
table qmail_users
check_host yes
swap_check_order yes


2. 소유권 변경 및 퍼미션 변경
[[email protected] root]# chown qmailp.nofiles /var/qmail/control/sqlserver
[[email protected] root]# chmod 440 /var/qmail/control/sqlserver


--------------------------------------------------------------
qmail queue life time 설정
--------------------------------------------------------------
[[email protected] root]# cat > /var/qmail/control/queuelifetime
86400


--------------------------------------------------------------
qmail doublebounceto 설정
--------------------------------------------------------------
[[email protected] root]# cat > /var/qmail/control/doublebounceto
doublebounce



--------------------------------------------------------------
qmail restart 스크립트 소스
--------------------------------------------------------------
서버에 부하량이 있을때,, qmail 이 잘 안 죽습니다. ㅡㅡ.
정말 이거때문에 골치 아픈데요.. 이걸 어떻게 하냐면요..

[[email protected]ns1 root]# Qrestart start <-- 시작<BR>[[email protected] root]# Qrestart stop <-- 정지<BR>
[[email protected] root]# cat > /sbin/Qrestart.sh

#-------------------------------------------------------------------------------------------
#!/bin/sh
#---------------------------------------------------------------
# 작성일 : 2003년 9월 2일
# 수정일 : 2004/05/21 stop/start selection 추가
# 작성자 : 정찬호( [email protected])
# 건 명 : qmail 죽이고 살리능데 에러 생김 이에 쉘로 구현


function service_stop {
#---------------------------------------------------------------
#-- lock 화일 삭제하기
#---------------------------------------------------------------
/etc/rc.d/init.d/qmail stop
sleep 1;

/etc/rc.d/init.d/qmail stop
sleep 1;

#---------------------------------------------------------------
#-- svs 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep svs|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;


#---------------------------------------------------------------
#-- smtp 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep smtp|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;

#---------------------------------------------------------------
#-- send 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep send|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;

#---------------------------------------------------------------
#-- pop3d 데몬 쥑이기
#---------------------------------------------------------------
#for i in $(ps -ef|grep pop3|grep -v "grep"|awk '{print $2}')
#do
# kill -9 $i;
#done;


#---------------------------------------------------------------
#-- tcpserver 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep tcpserver|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;

#---------------------------------------------------------------
#-- perl 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep perl|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;


#---------------------------------------------------------------
#-- qmail-remote 데몬 쥑이기
#---------------------------------------------------------------
for i in $(ps -ef|grep qmail-remote|grep -v "grep"|awk '{print $2}')
do
kill -9 $i;
done;

#---------------------------------------------------------------
#-- lock 화일 삭제하기
#---------------------------------------------------------------

/usr/bin/find /var/qmail/ -name "lock" -exec rm -f {} \\; 2>/dev/null
}
#-----------------------------------------------------------------------------------------
case "$1" in
start)
service_stop;
sleep 3;
eval '/etc/rc.d/init.d/qmail start';
echo "--------------------------------------------------------------------------";
echo "1. qmail이 정상적으로 실행 되었습니다....... ";
echo "--------------------------------------------------------------------------";
;;

stop)
service_stop;
sleep 3;
echo "--------------------------------------------------------------------------";
echo "1. qmail이 정상적으로 정지 되었습니다....... ";
echo "--------------------------------------------------------------------------";
;;

*)
blank_line;
echo "--------------------------------------------------------------------------";
echo "1. 사용법: [[email protected] ]# Qrestart { start|stop }";
echo "3. 사용예 : ";
echo " [[email protected]@ ]# Qrestart start";
echo "--------------------------------------------------------------------------";
exit 1
esac
exit 0
#---------------------------------------------------------------

 
 

Total. 645
번호 분류 제목 작성자 등록일 조회수
510 기초강좌 리눅스 쉘에서 html 메일 발송하기 rootman 01-27 7438
509 기초강좌 [ddos] 한 IP당 동시 접속량 제한과 자동차단 rootman 07-26 7434
508 Doc/Faq Fingerprinting을 이용한 80 포트(웹서버) 공격법들 (17) rootman 06-17 7428
507 기초강좌 하드디스크 온도 측정하기(smartctl 이용) rootman 12-31 7421
506 mysql [mysql] LOCK TABLES/UNLOCK TABLES rootman 12-22 7421
505 Doc/Faq Ethernet H/W 확인 및 설정 (46) rootman 10-15 7419
504 Doc/Faq [출처/linux.co.kr] 4/4 Sendmail의 보안 (47) rootman 03-14 7417
503 Shell 문자열 조각 대치(Substring Replacement) (16) rootman 10-16 7417
502 기초강좌 [dmraid] rootman 08-12 7396
501 qmail [qmail] qmail control 디렉터리 파일 설명 rootman 05-24 7362
500 qmail (스팸필터링) qmail + clamav 연동 rootman 06-03 7355
499 qmail [qmail] qq 451 crashed 오류 원인과 답 rootman 02-05 7350
498 php [php] 암호화 알고리즘 종류 루트맨 03-12 7318
497 windows tips [썬더버드] 모질라 썬더버드(Thunderbird) 백업과 복구 rootman 07-16 7315
496 Doc/Faq ucspi-tcp 란 무엇인가? (1) rootman 10-19 7310
 1  2  3  4  5  6  7  8  9  10    
AND OR