== "'필요한 프로그램들과 다운로드"'
==
netqmail-1.06(http://qmail.org/netqmail-1.06.tar.gz)
knetqmail-1.06(http://ejlabs.net/txt/patch/knetqmail-1.06-20080815.tar.bz2)
libdomainkeys-0.68(http://shupp.org/software/libdomainkeys-0.68.tar.gz)
libdomainkeys.diff(http://shupp.org/patches/libdomainkeys.diff)
ucspi-tcp-0.88.tar.gz(http://cr.yp.to/ucspi-tcp/install.html)
daemontools-0.76.tar.gz(http://cr.yp.to/daemontools/install.html)
vpopmail-5.4.28.tar.gz(http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.28/vpopmail-5.4.28.tar.gz)
==
"'knetqmail 설치"' ==
qmail 소스는 크게 나누면 qmail-1.03과 netqmail-1.0x가 존재하며
mysql 패치와 미패치 버젼이 존재하는데
netqmail에는 doublebounce patch, dns patch 등이
적용되어 있는데 date-localtime patch, smtp auth patch 등이 포함되어 있지
않으므로
knetqmail-1.06(http://ejlabs.net/txt/patch/knetqmail-1.06-20080815.tar.bz2)를
사용할 것을 권고한다.
qmail에 mysql patch된 버젼이 존재하는데 이는 mysql에서 체크하는 부분을
vpopmail단이 아닌 qmail에서 처리하는 것이고
주로 웹호스팅에서 사용하고 있다.
mysql
patch 여부와 무관하게 chkuser patch가 적용된 버젼의 경우 vpopmail을 먼저 설치해야 한다.
즉
netqmail -> vpopmail -> knetqmail 순서로 설치해야 한다.
$
tar zxvf netqmail-1.06.tar.gz
$ cd
netqmail-1.06
INSTALL.ids 파일을 편집한다.(qmail 에 필요한 계정과
그룹들이다. 해당 OS에 맞추어 편집한다.)
# 대신 $ 를 사용했으니 이하 모든 작업은 root로 실행한다.
$ 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
실행
전 qmail 디렉토리를 생성한다.
$ mkdir -p /var/qmail
$ sh INSTALL.ids
qmail 관련 계정, 그룹이 생성되었는지 확인한다.
qmail 설치하기 전에 계정 그룹이
생성되어 있어야 한다.
$ cat /etc/passwd
$ cat
/etc/group
$ make
$ make setup
check
make시 errno 관련 에러가 나면 vi error.h 하여 extern int
errno; 를 삭제하고 #include <errno.h> 라고 추가하고 다시 make한다.
이후 설치되는
프로그램들에서 동일 에러 발생 시 동일하게 조치한다. 이 라인을 추가하는 patch가 존재하나 굳이 패치 적용보다는 직접 수정하는 게
편하다.
이후 vpopmail 설치가 완료되면 아래와 같이 knetqmail로
재설치한다.
$ wget
http://shupp.org/software/libdomainkeys-0.68.tar.gz
$ wget
http://shupp.org/patches/libdomainkeys.diff
$ tar zxvf
libdomainkeys-0.68.tar.gz
$ patch -d libdomainkeys-0.68 <
libdomainkeys.diff
$ cd libdomainkeys-0.68
$ make
$ tar jxvf knetqmail-1.06-20080815.tar.bz2
$ mv
knetqmail-1.06-20080815 libdomainkeys-0.68/
$ cd
libdomainkeys-0.68/knetqmail-1.06-20080815
$ make
$ make setup
check
기본 /var/qmail/control 및의 설정 파일의 설정을 위해 다음을 실행한다.
$ ./config
이는 메일서버에 대한 기본 호스트 정보를 /var/qmail/control/에 자동으로 생성하는
부분이다.
에러가 발생할 경우 먼저 DNS에 MX레코드가 잘 생성되었는지, /etc/resolv.conf 상단에 search
test.net처럼 등록이 되어 있는지 검사한다.
이는 qmail이 /etc/hosts파일이 아닌 DNS에서 정보를 가져오기
때문입니다. 그래도 에러가 날 경우는 다음처럼 강제로 등록한다.
$ ./config-fast test.net
물론 서브 도메인도 가능하다. (예 #./config-fast mail.test.net)
== "'부수적인
프로그램 설치"'
==
ucspi-tcp-0.88 설치하기
$ tar xzvf
ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88
$ make
$ make setup
check
참고 : ucspi-tcp 0.86 이상부터는 rblsmtpd가 포함되어 있습니다. 따라서 따로 설치하지 않는다.
daemontools는 설치 방법이 좀 다르다.
$ tar xzvf daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ ./package/install
/usr/local/bin에
링크 걸린 파일을 삭제 후 command에 있는 바이너리 파일 모두를 /usr/local/bin으로 복사한다.
$ cd
/usr/local/bin
$ rm -rf envdir fghack pgrphack setlock softlimit svc
svscan svstat tai64nlocal envuidgid multilog readproctitle setuidgid supervise
svok svscanboot tai64n
$ cd -
$ cd command
$ cp -a *
/usr/local/bin
설치 시 생성된 /command, /service 디렉토리를 삭제한다.
$ rm -rf
/command /service
/etc/inittab에서 다음 라인
삭제
SV:123456:respawn:/command/svscanboot
svscanboot 및 자식
프로세스 종료
(이 부분은 qmail 구동 스크립트에 따라 다른 매뉴얼과 다를 수 있다.)
==
"'qmail 설정 파일 편집"' ==
아래 smtpd/run 스크립트는 "'"smtp 인증 후 릴레이 허용""' 방식에
따른 스크립트이다.
모두 이상없이 설치가 되었다면 다시 qmail에 사용할 파일을 만든다.
$ vi
/var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start '|preline procmail ./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/qmail-send
로그
파일 개수를 늘리려면 다음과 같이 옵션을 추가한다. qmail-smtp 로그에도 동일하게 적용 가능하다.
exec
/usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s16777215 n50
/var/log/qmail/qmail-send
(s는 파일사이즈(16MB가 최고), n은 파일 개수임)
$ vi
/var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7000000 /usr/local/bin/tcpserver -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $VPOP_UID -g $VPOP_GID 0 25 /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1
주의)
위 설정에서 가장 문제가 많이 발생한다. uid, gid가 설정되지 않는 문제와 tcpserver가 실행되지 않는 문제 그리고 메모리값이 너무
작은 문제 등이다.
따라서 다음과 같이 설정하면 수고를 덜 수 있다.
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 50000000 /usr/local/bin/tcpserver -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $VPOP_UID -g $VPOP_GID 0 25 /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1
50000000은
메모리 할당량을 늘려준 것이다.
VPOP_UID=`id -u vpopmail`에서 `은 키보드 ! 옆에 있는 키값이며 vpopmail의
uid, gid 값을 직접 입력할 수도 있다.
또한 qmail-smtpd가
/home/vpopmail/etc/tcp.smtp.cdb 파일에 대해 읽기 권한이 필요하므로 디렉토리 및 파일의 권한을 확인해야
한다.
$ vi /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/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
다음은
qmail-smtpd 를 위한 로그 디렉토리 만들기
mkdir -p /var/log/qmail/qmail-smtpd /var/log/qmail/qmail-send
chown qmaill /var/log/qmail/qmail-send /var/log/qmail/qmail-smtpd
qmail
부트 파일
다음은 qmail 데몬의 부트 스크립트이다. /etc/rc.d/init.d/qmail 로 만들어준다.
$
vi /etc/rc.d/init.d/qmail
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: sendmail을 대체하는 빠르며, 안정적이고, 유연한 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-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 /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
chmod 644 /home/vpopmail/etc/tcp.smtp*
echo "Reloaded /home/vpopmail/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
이것을
/etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장 한 후 실행 퍼미션)을 준다.
$ chmod 700
/etc/init.d/qmail
다음 ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다.
리부팅
할때 qmail 데몬이 실행되도록 체크해주거나 다음과 같이 chkconfig 를 이용한다.
$ chkconfig --level
235 qmail on
== "'vpopmail 설치"' ==
vpopmail 은 가상 도메인 추가,
설정, pop 유저 설정과 pop3 데몬등의 기능을 한다.
*vpopmail은 버젼에 따라 옵션에 많은 변화가 있으므로 주의해야
한다.
설치하기 전에 vpopmail 이 사용할 유저와 그룹을 만든다.
$ groupadd vchkpw
$
useradd -g vchkpw vpopmail
$ tar xzf vpopmail-5.4.28.tar.gz
$ cd
vpopmail-5.4.28
1. MySQL 사용하지 않을 경우(즉, CDB 사용)
보통 다음 옵션만 주고 컴파일
하면 된다.
$ ./configure --enable-roaming-users=y
--enable-relay-clear-minutes=30
$ make
$ make install-strip
2. MySQL을 사용 할 경우
아래와 같은 라인이 없다면 설치 후
/home/vpopmail/etc/vpopmail.mysql에 설정해 준다.
qmail에 mysql patch가 적용된 버젼의 경우 컴파일
하기 전에 먼저 vmysql.h 를 열어서 sql 서버를 억세스할수 있는 user와 암호등을 설정해 주어야 한다.
mysql에 root
이외의 계정을 생성해서 vpopmail db에 모든 권한을 부여한다.
1. qmail에 mysql
patch가 된 경우
$ vi vmysql.h
24 /* Edit to match your set up */
25
#define MYSQL_UPDATE_SERVER "localhost"
26 #define MYSQL_UPDATE_USER
"vpopmail"
27 #define MYSQL_UPDATE_PASSWD "password"
28
29 #define
MYSQL_READ_SERVER "localhost"
30 #define MYSQL_READ_USER "vpopmail"
31
#define MYSQL_READ_PASSWD "password"
32 /* End of setup section*/
2.
qmail에 mysql patch가 안된 경우
$ vi
/home/vpopmail/etc/vpopmail.mysql
localhost|0|vpopmail|password|vpopmail
localhost|0|vpopmail|password|vpopmail
$ ./configure --enable-auth-module=mysql --enable-roaming-users=y
--enable-relay-clear-minutes=60 \
--enable-incdir=/usr/local/mysql/include/mysql \
--enable-libdir=/usr/local/mysql/lib/mysql
※ mysql 이 RPM 으로 설치된
경우는 아래처럼 수정한다.
$ ./configure --enable-auth-module=mysql
--enable-roaming-users=y --enable-relay-clear-minutes=60 \
--enable-incdir=/usr/include/mysql
\
--enable-libdir=/usr/lib64/mysql
$ make
$ make
install-strip
다음 파일에는 qmail smtp 데몬이 메일을 중계(relay)할 주소를
적어주는 것이다.
192.168.1.100 은 당연히 설치할 서버의 주소로바꿔야 한다. 그외 메일을 중계 해줄 서버의 주소가 있다면 같은
형식으로 추가한다.
$ vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.100:allow,RELAYCLIENT=""
첫번째와 두번째줄은 메일 서버 내부의 릴레이를 열어 준 것이다.
릴레이를 전혀 허용하지 않으려면 첫번째와 두번째 룰만
있으면 된다.
192.168.1.100:allow,RELAYCLIENT="" 를 예를 들어 설명하면 tcpserver는 해당 ip
(192.168.1.100)로 부터의 접속을 허용하고 (:allow)
해당 ip에서 접속이 있을 경우 RELAYCLIENT 환경 변수를
설정한 후 qmail-smtpd를 실행하게 되므로 릴레이가 허용되는 원리이다.
이후에 이 파일에 변경이 있는 경우 다음의 qmail 부트
스크립트를 이용해 다음과 같이 한다.
/etc/rc.d/init.d/qmail cdb
== "'pop3 데몬 시동 파일"' ==
$ mkdir
/var/qmail/supervise/qmail-pop3d
$vi
/var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 50000000 /usr/local/bin/tcpserver -H -R -l 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup tecs7036.cafe24.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
$
mkdir /var/qmail/supervise/qmail-pop3d/log
$ vi
/var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/qmail-pop3d
디렉토리
생성 및 권한을 변경한다.
chmod +t /var/qmail/supervise/qmail-pop3d
mkdir /var/log/qmail/qmail-pop3d
chown qmaill /var/log/qmail/qmail-pop3d
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
sendmail
에서 qmail 로의 전환
모든 설정이 확실히 되었다고 생각이 들면 sendmail을 죽이고 qmail로 전환한다.
/etc/rc.d/init.d/sendmail stop : sendmail 내린다.
이제 기존의 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/sendmail
$ ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
== "'인증 방식 설정"' ==
AUTH 릴레이
대부분의 경우에는 지금까지의 설정만으로 충분 할
것입니다. 하지만, 유동 IP 사용자들에게 릴레이를 열어 줘야 하는
메일 서버의 경우에는 인증 후 릴레이 방식(POP3 인증 후 릴레이
포함)을 사용하는 것이 좋은데 이 방법은 qmail 소스를 패치해야 한다.
즉, qmail-smtpd가 암호 인증후에 릴레이를 열어 주도록
만들어 줘야한다.
인증 방법은 여러가지로 유연하게 적용할 수 있는데 다음 중 하나이거나 여러 가지 인증 소스를 동시에 사용할 수도
있다.
>> smtp 인증 후 릴레이 허용
1. 시스템 계정 (/etc/passwd)
2.
cmd5checkpw (/etc/poppasswd)
3. checkpassword + mysql(유저 데이터를 db에 저장)
4.
vchkpw(vpopmail pop 유저 데이터를 사용, db또는 vpasswd)
>> pop3 인증 후 릴레이
허용
1. tcpserver(pop3 인증 후 릴레이 /home/vpopmail/etc/tcp.smtp.cdb 또는
/etc/tcp.smtp.cdb)
smtp 인증 사용자가 몇 명 되지 않을 때 가장 손쉽게 적용할 수 있는 cmd5checkpw를
사용하는 방법을 설명한다.
물론 qmail을 패치해야 하므로 qmail 소스도 가지고 있어야 한다.
먼저
cmd5checkpw를 설치합니다.
$ tar xzf cmd5checkpw-0.22.tar.gz
$ cd
cmd5checkpw-0.22
$ make ; make install
$ touch /etc/poppasswd
$ useradd
-M checkpw
$ chown checkpw /bin/cmd5checkpw
$ chmod a+s
/bin/cmd5checkpw
$ chown checkpw /etc/poppasswd
$ chmod 400 /etc/poppasswd
smtp-auth 패치합니다. (다운로드 :
http://members.elysium.pl/brush/qmail-smtpd-auth/)
$ tar xzf
qmail-1.03.tar.gz
$ tar xzf qmail-smtpd-auth-0.30.tar.gz
$ cd
qmail-smtpd-auth-0.30
$ cp README.auth base64.c base64.h ../qmail-1.03
$
patch -d ../qmail-1.03 < auth.patch
$ cd ../qmail-1.03
$ make
$ make
setup check
정상적으로 패치가 되었다면, 후에 qmail이 구동되었을때 다음과 같이 EHLO 응답 메세지를 확인해 볼 수
있다.
$ telnet localhost 25
Trying 127.0.0.1…
Connected to
localhost.
Escape character is '^]'.
220 braineyes.com ESMTP
ehlo
localhost <-- 이 부분은 제가 입력한
것입니다.
250-braineyes.com
250-PIPELINING
250-AUTH LOGIN CRAM-MD5 PLAIN
<-- 이 부분이 나오면 정상이다.
250 8BITMIME
이제 우리는 패치된 qmail-smtpd가 생겼다. "인증후
릴레이 열어주기"가 가능하도록 하려면 qmail-smtpd 구동 스크립트를 수정해줘야 한다.
#!/bin/sh
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 7000000 /usr/local/bin/tcpserver -vRHl0 -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd braineyes.com /bin/cmd5checkpw /bin/true 2>&1
패치된
qmail-smtpd에는 "checkprogram subprogram"의 형식을 사용할 수 있는데 여기서는 "/bin/cmd5checkpw
/bin/true"를 사용했다.
cmd5checkpw 는 암호 파일을 /etc/poppasswd 를 사용하며, 내용은 다음과 같은 요령으로
추가해
준다.
------------------------------
username:password
------------------------------
이제 클라이언트들은 인증후에 이 서버를 사용해서 메일을 보낼 수 있다.
checkpassword를 사용해서 계정 유저의
/etc/passwd를 사용하는 방법도 있지만 이것은 별로 권장하지 않는다.
암호가 알려지는 경우 서버로 로그인까지 가능케 되버리니까요.
되도록 cmd5checkpw 와 /etc/poppasswd 만을 사용하도록 하고
계정 사용자 인경우 로그인 암호와는 다른 암호를
사용하도록 하는 것이 보안 상 좋다.
(POP, SMTP, LOGIN 암호를 모두 동일하게 설정하는 실수를 하지 마세요).
vpopmail의 암호 확인 프로그램인 vchkpw를 사용하여 vpopmail에서 생성해준 사용자와 암호를 그대로 사용할 수도
있다.
이는 다음에서 설명하는 POP3 인증을 반드시 해야 하는 번거로움이 줄일 수 있다. 참고로 이를 사용하려면
아웃룩에서는 서버
설정에 보내는 메일 인증 필요를 체크하고 "받는 서버와 동일한 정보 사용"나 "로그온 정보"를 입력해야 한다.
다음은
vchkpw(vpopmail)를 인증 프로그램으로 사용하도록 한 qmail-smtpd 구동 스크립트 예이다.
# !/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7000000 /usr/local/bin/tcpserver -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $VPOP_UID -g $VPOP_GID 0 25 /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1
즉
ID가 vpopmail으로 변경되며 /bin/cmd5checkpw이 /home/vpopmail/bin/vchkpw로 변경된다.
이제는 웹호스팅 업체에서 주로 사용하는 vpopmail의 로밍 서비스를 알아 보자.
이는 POP3 인증 후에
tcp.smpt.cdb에 기록된 아이피에 대해 일정 시간 smtp 릴레이를 열어주도록 하는 기능이다.
이 경우는 smtp-auth 패치를
하지 않고 vpopmail configure 시 로밍 관련 옵션(--enable-roaming-user=y)을 사용해서 설치한다.
추후
인증 방식을 vchkpw로 바꿀 수도 있다면 smtp-auth 패치를 해두어도 되지만 이는 권장하지 않는다.
크론탭에 다음과 같이 등록하여
주기적으로 오픈 릴레이된 아이피들을 청소해 주어야 한다.
물론 vpopmail configure시 인증 유효 시간을
설정(--enable-relay-clear-minutes=#)할 수 있는데
반드시 크론에 등록하도록 권장하고 있다.
# clear relay
40 * * * * /home/vpopmail/bin/clearopensmtp <- 매시 40분에 로그인 후 1시간이 지난 아이피를 clear하도록 등록
다음은
tcpserver의 tcp.smtp.cdb를 이용한 qmail-smtpd 구동 스크립트 예입니다.
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7000000 /usr/local/bin/tcpserver -H -R -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
-u $VPOP_UID -g $VPOP_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1[Relay 테스트]
1. http://www.rbl.jp/cgi-bin/svcheck.cgi?hostname=mail.10free.co.kr&lang=en 에서 테스트해보면 된다.
2. telnet relay-test.mail-abuse.org[qmail relay badmailto설정]
/var/qmail/control/badmailto 에 아래와 같이 넣어야한다.
[!%#:*^(){}]
@.*@[Outlook 에서 암호를 다시 물어보는 경우 테스트를 아래와 같이 해서 체크할것]
telnet localhost 110
user 계정@도메인
pass 암호
결과가 아래 와같이 나오는 경우 tcp.smtp파일이 존재하는 디렉토리 권한의 문제이다
tcprules: fatal: unable to create /etc/tcp.smtp.tmp.27798: access denied
최종테스트
[root@backup vpop]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK <1978.1275009413@10free.co.kr>
user 계정@도메인
+OK
pass 암호
+OK
quit
+OK
Connection closed by foreign host.