Linux2019. 1. 10. 12:01



==================
OS : redhat9
==================


1. 필요한 프로그램 

qmail-1.03.tar.gz
qmail-103.patch
qmail-1.03.errno.patch
qmail-1.03.qmail_local.patch

ucspi-tcp-0.88.tar.gz
daemontools-0.76.tar.gz
autorespond-2.0.2.tar.gz
vpopmail-4.9.10.tar.gz

/*
qmailadmin-0.42.tar.gz
ezmlm-0.53.tar.gz
ezmlm-idx-0.40.tar.gz
*/

2. qmail 설치
위 프로그램들을 모두 /usr/local/src/qmail 디렉토리 및에 다운로드한다.

== qmail 컴파일 설치 ==
mkdir /var/qmail
cd /usr/local/src/qmail
tar zxvf qmail-1.03.tar.gz 
cp qmail*.patch qmail-1.03
cd qmail-1.03

-- qmail 에 필요한 계정과 그룹등록 --
vi INSTALL.ids (리눅스부분만 빼고 모두 삭제)
-----------------------------------------------
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 INSTALL.ids
cat /etc/passwd (생성된 계정확인)

큐메일 패치
patch -p1 < ./qmail-103.patch 
patch -p1 < ./qmail-1.03.errno.patch 
patch -p1 < ./qmail-1.03.qmail_local.patch 

make
make setup check

기본 /var/qmail/control 및의 설정 파일의 설정
./config --> 실패시 다음을 실행한다.
./config-fast pentachord.com (여기서 pentachord.com 은 실제 도메인네임)


== ucspi-tcp 설치 ==
cd ..
tar zxvf ucspi-tcp-0.88.tar.gz 
cp ucspi-tcp-0.88*.patch ucspi-tcp-0.88/
cd ucspi-tcp-0.88

patch -p1 < ./ucspi-tcp-0.88.errno.patch 
patch -p1 < ./ucspi-tcp-0.88.nobase.patch 
patch -p1 < ./ucspi-tcp-0.88.a_record.patch 
make
make setup check

== daemontools 설치 ==
cd ..
mkdir -p /package
cp /usr/local/src/qmail/daemontools-0.76.* /package/
cd /package/
tar zxvf daemontools-0.76.tar.gz 
rm daemontools-0.76.tar.gz 
mv daemontools-0.76.errno.patch admin/daemontools-0.76/
cd admin/daemontools-0.76/

patch -p1 < ./daemontools-0.76.errno.patch 
package/install 


== autorespond 설치 ==
cd /usr/local/src/qmail
tar zxvf autorespond-2.0.2.tar.gz 
cd autorespond-2.0.2
make
make install



3. 스크립트 생성

vi /var/qmail/rc
------------------------------------------
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
------------------------------------------
chmod a+x /var/qmail/rc


mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd


vi /var/qmail/supervise/qmail-send/run 
--------------------
#!/bin/sh
exec /var/qmail/rc
--------------------


vi /var/qmail/supervise/qmail-send/log/run 
----------------------------------------------
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
----------------------------------------------


vi /var/qmail/supervise/qmail-smtpd/run 
--------------------------------------------------------------
#!/bin/sh
Q_UID=`id -u vpopmail` 
Q_GID=`id -g vpopmail` 
exec /usr/local/bin/softlimit -m 7340032 \
/usr/local/bin/tcpserver -vRH -l 0 -x /etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
--------------------------------------------------------------


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

== 권한주기
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


mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd


vi /etc/tcp.smtp
---------------------------------
127.0.0.1:allow,RELAYCLIENT=""
165.246.190.:allow,RELAYCLIENT=""
---------------------------------
cf.) 후에 이 파일에 변경이 있는 경우 다음의 qmail 부트 스크립트를 이용해 다음과 같이 한다.
/etc/rc.d/init.d/qmail cdb


= tcprules의 $PATH 추가 (/usr/local/bin)
vi ~/.bash_profile
------------------------------
PATH=$PATH:$HOME/bin:/usr/local/bin
------------------------------
export PATH=$PATH:/usr/local/bin



=실제로 tcpserver가 읽을 수 있는 cdb 형식으로 바꿔준다
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

= 기본계정 알리아스 설정
echo postmaster > /var/qmail/alias/.qmail-root
echo postmaster > /var/qmail/alias/.qmail-mailer-daemon


== qmail 시동파일
vi /etc/rc.d/init.d/qmail
--------------------------------------------------------------------------------
#!/bin/sh

# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH

case "$1" in
start)
echo "Starting qmail"
if [ -e /service/qmail-send ] ; then
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-send /service/
fi

if [ -e /service/qmail-smtpd ] ; then
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-smtpd /service/
fi

if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
rm -f /service/qmail-smtpd
echo " qmail-send"
svc -dx /service/qmail-send /service/qmail-send/log
rm -f /service/qmail-send
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
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 -- schedules queued messages for immediate delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac

exit 0
------------------------------------------------------------------------------
chmod 700 /etc/rc.d/init.d/qmail





3. vpopmail 설치

- 유저, 그룹추가
groupadd vchkpw
useradd -g vchkpw vpopmail

- vpopmail 설치
cd /usr/local/src/qmail/
tar zxvf vpopmail-5.2.1.tar.gz 
cd vpopmail-5.2.1
./configure --enable-default-domain=pentachord.com
make
make install-strip


- pop3 시동파일
mkdir /var/qmail/supervise/vpop
vi /var/qmail/supervise/vpop/run
-----------------------------------------------------------------------
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2500000 \
tcpserver -vRH -l 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup pentachord.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
-----------------------------------------------------------------------

chmod 755 /var/qmail/supervise/vpop/run

데몬의 실행은
ln -s /var/qmail/supervise/vpop /service (5초 이내로 daemontool에 의해 pop 데몬이 구동될 것이다)

-기존의 sendmail 바이너리를 qmail 의 것으로 바꾼다.
mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin


-qmail 시동
ln -s /var/qmail/supervise/qmail-send /service/
ln -s /var/qmail/supervise/qmail-smtpd /service/


============== 서버제어 ================
- 종료
cd /service/qmail-send
rm -f /service/qmail-send
svc -dx . log

cd /service/qmail-smtpd
rm -f /service/qmail-smtpd
svc -dx . log

cd /service/vpop
rm -f /service/vpop
svc -dx .


- stat 보기
svstat /service/vpop/


- qmail 큐에 있는 메일을 강제로 배달하기
svc -a /service/qmail-send


- 서버 잠시 중지 시키기
svc -p /service/qmail-send
svc -p /service/qmail-smtpd
svc -p /service/vpop


- 다시 진행 시키기
svc -c /service/qmail-send
svc -c /service/qmail-smtpd
svc -c /service/vpop
=========================================== 


** 재대로 설정파일이 변경이 되었는지 확인해 보자. **

cat /var/qmail/control/locals 
------------------------------------------------
localhost

주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의 
내용은 localhost 만이 있어야 정상이다. 다른것이 있으면 지운다.


cat /var/qmail/control/virtualdomains
-----------------------------------------------
test.net:test.net
tru64unix.co.kr:tru64unix.co.kr


cat /var/qmail/users/assign
-----------------------------------------------
+test.net-:test.net:515:510:/home/vpopmail/domains/test.net:-::
+tru64unix.co.kr-:tru64unix.co.kr:515:510:~vpopmail/domains/tru64unix.co.kr:-::



4. vpopmail 사용하기

cd /home/vpopmail/bin

- 도메인추가
./vadddomain 1280.co.kr

- 계정추가
./vadduser suil@1280.co.kr

...
..
.


'Linux' 카테고리의 다른 글

비밀번호 만료일 제거 centOS  (0) 2021.06.21
리눅스서버 설치후 보안세팅  (0) 2019.01.10
백업 ftp + cron 설정  (0) 2019.01.10
IP 알리아스  (0) 2019.01.10
iptables로 IP, IP대역 막기  (0) 2019.01.10
Posted by requireme