Qmail 을 이용한 virtual mail system (아랑)
Muchunalang’s Single-UID based POP3 box HOWTO
이 글은 시스템 계정을 사용하지 않고, 다수의 pop3 계정 사용자를 다루기 위하여
어떻게 qmail을 설정하는지 설명한다.
여기서 다루어 질 파일들:
control/rcpthosts
control/virtualdomains
users/assign
users/poppasswd (checkpassword 에서 사용하는 특정 패스워드 파일 )
먼저 앞서 소개된 qmail 셋팅법 (시스템용)을 참조하여 qmail 시스템을 만든다.
기본 설정이 완료 되면 몇가지 수정해야 할 부분이 있다.
먼저..checkpasswd 를 가상메일셋팅용으로 바꾸어야 한다.
ftp://ftp.zzang911.net/pub/linux/server/mailserver/qmail/checklocalpwd-1.0.tar.gz
에서 다운 받는다.
특정 디렉토리에서 압축을 풀고 make 하여 생성되는 바이너리 파일을 /bin 에 복사
한다. 그런뒤 /etc/inetd.conf 에서 pop3 부분을 아래 부분처럼 수정한다.
pop-3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup \\
host-domain /bin/checklocalpwd /var/qmail/bin/qmail-pop3d Maildir
그런뒤 inetd 를 재시작..
이제 예문을 통해 설명해 보겠다.
alang at zzang911.net
메일을 가상 메일로 설정해 보겠당..
1. 먼저 /var/qmail/control/rcpthosts 에 zzang911.net를 추가 한다.
[root@zzang911 qmail]# echo zzang911.net >> /var/qmail/control/rcpthosts
2. /var/qmail/control/virtualdomains 파일에 사용할 가상 도메인을 다음 형식으로
추가한다.
[root@zzang911 qmail]# vi /var/qmail/control/virtualdomains
———————————————————————
zzang911.net:zzang911-net
3. /var/qmail/users/assign 에 메일 아이디를 다음 형식으로 추가 한다.
[root@zzang911 qmail]# vi /var/qmail/users/assign
———————————————————-
=zzang911-net-alang:popmail:534:534:/home/popmail/zzang911-net/alang:::
.
위의 형식이 의미하는 바를 차례로 설명하겠다.
zzang911-net-alang : alang at
zzang911.net 를 뜻한다.
popmail : 가상 메일 계정으로 접근할때 사용되는 단하나의 실제 시스템 계정이다.
534:534 : popmail 의 uid 와 gid 이다.
/home/popmail/zzang911-net/alang : .qmail 이 위치할 장소다. .qmail 은 메일의 저장
장소와 방식을 나타내는 파일로 ./Maildir/ 방식을 주로 한다. 자세한 내용은 아래 qmail
설치편을 참고 하길 바란다.
여기서 주의해야 할점은 assign 파일의 마지막은 . 으로 끝이 나야 한다.
assign 파일을 수정한 뒤에는 항상 /var/qmail/bin/qmail-newu 를 실행해 줌으로 해서
cdb db파일을 갱신하게 된다.
이런식으로 설정을 마쳤으면 여기 설정에 맞추어서 메일이 저장될 디렉토리를 만들어준다.
# mkdir /home/popmail/zzang911-net
# mkdir /home/popmail/zzang911-net/alang
# /var/qmail/bin/maildirmake /home/popmail/zzang911-net/alang/Maildir/
# echo ./Maildir/ > /home/popmail/zzang911-net/alang/.qmail
이것들이 무엇을 하는것인지는 아래 설치편에 자세히 나와 있음.
4. /var/qmail/users/poppasswd 파일을 다음 형식으로 설정하라.
[root@zzang911 qmail]# vi /var/qmail/users/poppasswd
————————————————————–
alang:Jq6RNhk40gnPs:popmail:/home/popmail/zzang911-net/alang
위 형식은 다음과 같다.
메일아이디:encry패스워드:시스템아이디:.qmail 위치
poppasswd 파일을 설정하였다면 반드시 /etc 디렉토리 안에 복사를 하든 링크를 하여../etc
안에도 존재하게 해 주어야 한다.
이와 같이 /etc/passwd 파일 말고 별도의 가상메일을 위한 poppasswd 파일을 만들었다면..
이파일을 참조하여 인증을 하는 프로그램이 있어야 겠다…이것이 위의 checklocalpwd 당.
위에 재대로 설치가 되었다면…통과..
메일아이디용 패스워드를 만드는 프로그램도 필요하겠다..
[root@zzang911 qmail]# vi /var/qmail/bin/mkpasswd.pl
————————————————————-
#!/usr/bin/perl
# Small perl program to assist is encrypting passwords
# Paul Gregg <pgregg at
tibus.net>, March 1999.
if (@ARGV) {
$pw1 = shift; $seed = shift;
} else {
system(“stty -echo”);
print “Ente print “\\nAgain: “; $pw2 = <STDIN>;
system(“stty echo”);
if ($pw1 ne $pw2) { print “Sorry, passwords don’t match.\\n”; exit; }
print “\\nSeed: “; $seed = substr(<STDIN>,0,2);
}
chomp($seed); chomp($pw1);
if (length($seed) eq 0) {
srand(time());
$a = int(rand(25) + 0.5) + (int(rand(1) + 0.5) * 32) + 65;
$b = int(rand(25) + 0.5) + (int(rand(1) + 0.5) * 32) + 65;
$seed = sprintf (“%c%c”, $a, $b);
}
printf(“%s\\n”, crypt($pw1, $seed));
————————————————————-
와 같이 만들고 퍼미션을 755 정도 주면…OK.
여기서 변환된 패스워드를 위의 poppasswd 의 패스워드 부분에 넣어 준다.
(무지 번거로운 작업이지만 아래 부분의 스크립트를 사용하면..이런 노가다를
줄일수 있다.)
자…이제 qmail 을 재가동하고…테스트 메일을 보내 보자.
# mail -v alang at
zzang911.net
Subject: test
test
.
Cc: .
메일이 재대로 도착했는지 확인을 해 보자.
# telnet 0 110
Trying 0.0.0.0…
Connected to 0 (0.0.0.0).
r a Password: “; $pw1 = <STDIN>;
Escape character is ‘^]’.
+OK <5856.977835866@211.201.133.135>
user alang
+OK
pass XXXXXX
+OK
list
+OK
.
이와 같이 나온다면 무사히 설정이 완료 된것이다.
자 이제 가상메일생성 스크립트를 소개하겠다..아래 스크립트를 이용하면..
위의 복잡한 설정 과정을 한번에 끝낼수 있다. 하지만…어떻게 아이디가
추가되는지 확실히 이해가 되었을 경우에만 사용하시길…뒷일 책임 못짐.
[root@zzang911 qmail]# vi /var/qmail/bin/pop3useradd
——————————————————————-
#!/bin/sh
# Written by Myoungjin Choi
# No Warrenty! 잘 생각해보고 쓰세요.
if [ $# -ne 3 ]; then
echo “Usage: $0 virtualdomain pop3userid passwd”
exit 127
fi
if [ -d $2 ]; then
echo “해당 디렉토리가 이미 존재합니다”
exit
fi
mkdir /home/popmail/$1
mkdir /home/popmail/$1/$2
echo “./Maildir/” > /home/popmail/$1/$2/.qmail
/var/qmail/bin/maildirmake /home/popmail/$1/$2/Maildir/
chmod 700 /home/popmail/$1/$2 -R
chmod 600 /home/popmail/$1/$2/.qmail
chown popmail.popmail /home/popmail/$1 -R
chown popmail.popmail /home/popmail/$1/$2 -R
passwd=`/var/qmail/bin/mkpasswd.pl $3`
echo $2:$passwd:popmail:/home/popmail/$1/$2 >> /var/qmail/users/poppasswd
printf “,s/^\\\\\\.//\\nwq\\n” | ed /var/qmail/users/assign 2> /dev/null
printf “d\\nwq\\n” | ed /var/qmail/users/assign 2> /dev/null
echo =$1-$2:popmail:534:534:/home/popmail/$1/$2::: >> /var/qmail/users/assign
echo “.” >> /var/qmail/users/assign
/var/qmail/bin/qmail-newu
——————————————————————-
위 스크립트는 가상메일이 /home/popmail 을 기준으로 저장된다는 전제조건을 달고
있다..그냥 사용할려면…위의 설정방법과 완전히 똑같이 설정이 되어있어야 한다.
자신의 환경에 맞추어 수정하시길 바란다.
스크립트를 사용하여 muchun at
zzang911.net 메일을 추가 할땐 다음과 같이 하면 된다.
[root@zzang911 bin]#./pop3useradd zzang911-net muchun XXXXX
이로써…가상 메일 계정 셋팅을 실질적인 예를 통해 알아 보았다. 자세한 내용은
아래 문서를 참고 바랍니다.
http://linux.zzang911.net/books/qmail/single-uid-base-pop3-qmail-howto.html
single-uid-base-pop3-qmail-howto문서
ttp://linux.zzang911.net/books/qmail/qmail-virtual.html
qmail-virtual-howto 문서
이것으로 일일이 시스템 계정을 추가하지 않고도 메일계정만 도메인 별로 많이 만들수
있습니다.
유용하겠죠…*^^*
2 Responses
3atlantis
2venereal