1. ucspi-tcp 설치
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
** make시 오류가 발생할 경우 해당 os의 gcc 버전이 높아서 발생하는 문제이므로
ucspi-tcp 폴더 안의 err.h 파일에 #incldue <errno.h>을 추가함으로써 해결할수 있다.
make setup check
2. daemontools 설치
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
mkdir /usr/local/package
tar zxvf daemontools-0.76.tar.gz
cd /usr/local/package/admin/daemontools-0.76
/package/install
** install 시에 오류 발생할 경우
/usr/local/package/admin/daemontools-0.76/src/error.h에 #include <error.h>를 추가한다.
3. qmail 설치
wget ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz
wget http://people.kldp.org/~eunjea/qmail/patch/qmail-ej-cocktail-14.tar.gz --> 칵테일 패치
tar zxvf qmail-1.03.tar.gz
tar zxvf qmail-ej-cocktail-14.tar.gz
cd qmail-1.03
patch -p1 < ../qmail-ej-cocktail-14/cocktail.patch
vi conf-spawn
-->con-spawn을 수정, OS별로 설정값이 다름, 레드햇일경우 509로 수정
큐메일 유저, 그룹 추가
groupadd -r nofiles
useradd -r -g nofiles -d /var/qmail/alias alias
useradd -r -g nofiles -d /var/qmail/qmail qmaild
useradd -r -g nofiles -d /var/qmail/qmail qmaill
useradd -r -g nofiles -d /var/qmail qmailp
groupadd -r qmail
useradd -r -g qmail -d /var/qmail qmailq
useradd -r -g qmail -d /var/qmail qmailr
useradd -r -g qmail -d /var/qmail qmails
make
make setup check
./config
--> config에서 오류 발생시 ./config-fast mail.도메인 실행
컨트롤 파일 수정
vi /var/qmail/control/defaultdomain
--> 자신이 사용하고자 하는 도메인으로 설정
vi /var/qmail/control/locals
--> localhost로 설정
vi /var/qmail/control/me
--> mail.도메인
vi /var/qmail/control/plusdomain
--> mail.도메인
cat /dev/null > /var/qmail/control/rcphosts
qmail 데몬을 위한 디렉토리와 스크립트 파일 생성
vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH"
qmail-start ./Maildir/
chmod 755 /var/qmail/rc
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
chmod 1755 /var/qmail/supervise/qmail-send
chmod 1755 /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 qmail
/usr/local/bin/multilog t /var/log/qmail
vi /var/qmail/supervise/qmail-smtpd/run
--> #!/bin/sh
0_UID=`id -U qmaild`
0_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000
/usr/local/bin/tcpserver -vRHl 0
-x /etc/tcp.smtp.cdb
-u $0_UID -g $0_GID 0 25 /var/qmail/bin/qmail-smtpd Z>& 1
vi /var/qmail/supervise/qmail-smtpd/log/run
--> #!/bin/sh
exec /usr/local/bin/setuidgid qmail
/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
Alias설정
큐메일은 root로 메일을 배달하지 않으므로 반드시 알리아즈를 만들어 줘야 함
postermaster, mailer-daemon 오는 메일도 알리아즈해서 사용하는 것이 편리
ex)system@jinkalee.com 으로 알리아즈
--> echo system@jinkalee.com > /var/qmail/alias/.qmail-root
echo system@jinkalee.com > /var/qmail/alias/.qmail-postermaster
echo system@jinkalee.com > /var/qmail/alias/.qmail-mailer-daemon
chmod 644 /var/qmail/alias/.*
qmail 바이너리 파일 소프트 링크
MTA를 필요로 하는 프로그램이 Sendmail을 사용하기 때문에 qmail 바이너리 파일을
sendmail로 링크해 주는 것이 좋음
--> mv /usr/lib/sendmail /usr/lib/sendmail.default
ln -s /var/qmail/bin/sendmail /usr/lib
mv /usr/sbin/sendmail /usr/sbin/sendmail.default
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/
qmail 부트스크립트 다운로드
wget http://pkg.tini4u.net/mta/qmail/source/qmail_init.tar.gz
tar zxvf qmail_init.tar.gz
mv qmail /etc/rc.d/init.d/qmail
chkconfig --add qmail
chkconfig --level 345 qmail on
*** chkconfig가 안될경우 path경로가 잡혀있지 않은 것이 원인
/sbin/chkconfig --옵션 이런식으로 적어주면 됨
4. mysql 설치 ( 기본 설치 참조)
mysql 공유 라이브러리 위치 설정
cd /usr/local/mysql/lib
cat >> /etc/ld.so.conf
vpopmail DB 및 유저 생성
5. vpopmail 설치
vpop메일 운영을 위한 유저와 계정 생성
groupadd -r vchkpw
useradd -r -g vchkpw vpopmail
mkdir -p /home/vpopmail/etc/
chmod 755 /home/vpopmail/
vpop메일 설치
chmod 777 /home/vpopmail/etc/
wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.17.tar.gz
tar zxvf vpopmail-5.4.17
./configure --enable-roaming-users --enable-tcprules-prog=/usr/local/bin/tcprules
--enable-tcpserver-file=/etc/tcp.smtp --enable-relay-clear-minutes=15 --enable-logging=p
--disable-ip-alias-domains --disable-passwd --enable-clear-passwd --enable-auth-module=mysql
--enable-many-domains=y --enable-valias=y --enable-mysql-limits=y --enable-auth-module=mysql
--enable-incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/lib/mysql
--enable-domain-quotas=y
-------------------------- 설명 ----------------------------
// roaming 옵션 목록
--enable-roaming-users :enable roaming users functionality
--enable-tcprules-prog=path :defaults to /usr/local/bin/tcprules
--enable-tcpserver-file=path :defaults to /home/vpopmail/etc/tcp.smtp
--enable-relay-clear-minutes=15 :defaults to 180
//mysql 옵션 목록
--enable-auth-module=mysql :mysql 사용하겠다
--enable-incdir=/usr/local/mysql/include... :include 경로
--enable-libdir=/usr/local/mysql/lib.... :lib 경로
--enable-many-domains :도메인별로 테이블을 생성관리 할것이라면 --enable-many-domains=n 옵션을 사용한다.
--enable-mysql-limits :mysql을 이용한 쿼터 설정
--enable-logging=y : 모든 pop 로그인 기록과 오류 메시지를 남긴다.
--enable-logging=n : 아무런 로그도 남기지 않는다.
--enable-logging=e : 오류/ 치명적인 오류 메세지를 기록한다.
--enable-logging=p : 오류 로그에 암호를 포함한다.
--enable-logging=v : --enable-logging=y 와 같으며 사용자 암호를 로그에 포함한다.
--enable-default-domain :주서버의 메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다.
--enable-domain-quotas: 도메인별 쿼터 설정 (--enable-mysql-limits 옵션과 같이 사용)
--enable-many-domains : 도메인별로 테이블을 생성한다는 옵션
--enable-mysql-limits : 쿼터 설정데 대한 세부 옵션 (README.vlimit 파일 참고)
-------------------------- 설명 ----------------------------
--> --enable-relay-clear-minutes=15 : pop3인증후 15분동안 아무런 서버 사용이 없을경우 자동으로
relay을 닫아 open relay가 되어 스패머들의 타겟이 되는것을 막음
--> tcp.smtp릴레이 파일을 임시 생성하는 이유는 위 옵션에 파일경로를 지정해 줬기 때문이며
자동설정을 사용하지 않고 tcpserver-file경로를 지정해주는 이유는 아무런 옵션이 없는 경우
시스템에서 자동으로 찾게 되며, 이런 경우 /etc/tcp.smtp를 대부분 찾기 때문
make
make install-strip
chmod 755 /home/vpopmail/etc/
chown vpopmail.vchkpw /home/vpopmail/etc/
--> mysql을 소스컴파일로 설치했을때 mysql library를 못 찾을 경우
--enable-incdir=/mysql/path/to/include
--enable-lib-dir=/mysql/path/to/lib 을 옵션으로 넣어 준다 .
기본 도메인 설정, Mysql 설정, SMTP릴레이 설정
echo "jinkalee.com" > /home/vpopmail/etc/defaultdomain
chown vpopmail.vckpw /home/vpopmail/etc/defaultdomain
chmod 640 /home/vpopmail/etc/defaultdomain
vi /home/vpopmail/etc/vpopmail.mysql
--> localhost|0|vpopmailmysql유저ID|패스워드|DB명
ex)localhost|0|vpopmail|1234|vpopmail
vi /home/vpopmail/etc/tcp.smtp
-->127.0.0.1:allow,RELAYCLIENT=""
사용할IP:allow,RELAYCLIENT=""
chmod 640 /home/vpopmail/etc/tcp.smtp
/home/vpopmail/bin/clearopensmtp
주기적으로 smtp허용 IP를 갱신해주도록 cron에 등록.
. crontab -e
. 40 * * * * /home/vpopmail/bin/clearopenstmp
qmail smtp 스크립트 변경
tcp.smtp 파일이 변경되었으므로 qmail 설치시 작성한 run script을 수정
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 2000000
/usr/local/bin/tcpserver -vRHl 0
-x /home/vpopmail/etc/tcp.smtp.cdb
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd Z>& 1
vpopmail을 위한 디렉토리와 스크립트 생성
mkdir /var/qmail/supervise/vpop
vi /var/qmail/supervice/vpop/run
---------------------------------------------------------------------------
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 2500000
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110
/var/qmail/bin/qmail-popup ecstore.co.kr
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
chmod 755 /var/qmail/supervise/vpop/run
도메인과 메일계정 생성
/home/vpopmail/bin/vadddomain 사용할도메인
/home/vpopmail/bin/vadduser 사용할ID@도메인 패스워드
참고 사이트
http://blog.daum.net/freeppro/5891609
http://cafe.naver.com/ssyangcal.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2620