2008. 9. 22.

리눅스 시간동기화

시간동기화에 대해서 가끔 중요성을 상실할때가 너무많다.

심하게 둔한 관리자는 몇주, 몇달후 날짜가 안맞다는 고객의 제보로 수정 경우도...

저같은 경우는 시스템 설치직후 이 작업부터 시행합니다 ^^;




1. rdate 를 이용한 동기화



- 레드햇계열 및 여타 배포판에서도 별도의 설치과정필요없이 사용할수있다.

쉘스크립파일을 하나 작성한다.



ex) time-sync.cron ---------------------------

#!/bin/bash
/usr/bin/rdate -s time.bora.net && /sbin/clock -w

---------------------------------------------



저장후 실행권한 부여

#chmod 755 time-sync.cron



작성한 파일을 /etc/cron.daily 로 복사 ( 일일 새벽 4시에 동기화 스크립트를 수행함 )









2. ntp 를 이용한 동기화



- rdate 를 이용한 방법보다 소수점 몇몇점이하까지 상세히 동기화해준다고해서 애용중;

#rpm -qa | grep ntp 명령으로 "ntp-버젼" 이 출력되지않으면

http://rpmfind.net 에서 "ntp" 로 검색해서 배포판에 해당하는 패키지를 설치한다



ex1)

OS : Fedora Core 3

#wget ftp://rpmfind.net/linux/fedora/core/3/i386/os/Fedora/RPMS/ntp-4.2.0.a.20040617-4.i386.rpm

#rpm -Uvh ntp-4.2.0.a.20040617-4.i386.rpm



ex2)

#rpm -Uvh ftp://rpmfind.net/linux/fedora/core/3/i386/os/Fedora/RPMS/ntp-4.2.0.a.20040617-4.i386.rpm



- 동기화



  #ntpdate -b -s time.kriss.re.kr

  // -s : 결과를 화면이 아닌 syslog 로 보냄



* 다음과 같은 오류가 발생한 경우


 [root@truefeel root]# ntpdate -b time.kriss.re.kr
 17 Mar 21:03:25 ntpdate[8244]: no server suitable for synchronization found


 -> NTP 프로토콜은 UDP port 123 을 사용하는데, 이 포트가 방화벽 등으로
    막혀있는 경우에는

    #ntpdate -u time.kriss.re.kr

    처럼 -u 를 옵션을 사용해서 다른 포트 사용하거나

IPTABLE 을 사용중이면 OUTBOUNT UDP 123 포트를 열어준다



- cron.daily 에 등록 ( 쉘스크립트 파일 작성 )



ex) time-sync.ntp ---------------------------

#!/bin/bash
/usr/sbin/ntpdate -b -s time.kriss.re.kr && /sbin/clock -w

---------------------------------------------

저장후 실행권한 부여

#chmod 755 time-sync.ntp



작성한 파일을 /etc/cron.daily 로 복사 ( 일일 새벽 4시에 동기화 스크립트를 수행함 )

2008. 9. 21.

FreeNX 설치 방법

vnc보다 freenx가 빠르다고 합니다
그래서 freenx를 설치해봤습니다

설치환경 : server(centos5.2) client(fedora9)

1) 기존 freenx 삭제
sudo yum remove nx freenx

2) http://www.nomachine.com/download-package.php?Prod_Id=6
freenx server로 사용할 컴퓨터에 client node server 순서로 다운받고 설치한다

3) 클라이언트 컴퓨터에는 freenx client만 설치하면 된다

4) 터미널을 실행한다 설치 스크립트 실행한다
/usr/NX/scripts/setup/nxserver --install

5) NX> 704 ERROR: Cannot add user: nx
이런 오류가 난다면 터미널에서 다음을 실행
sudo userdel nx

6) 키 생성을 위해 다음을 실행
/usr/NX/bin/nxserver --keygen

7) /usr/NX/share/keys/default.id_dsa.key 의 내용을 복사해서
nx client(fedora9)의 프로그램>>인터넷>>NX client for linux>>NX client for linux 클릭
configure버튼 클릭>key버튼 클릭 위의 복사한 내용을 붙여넣기>저장

8) sudo gedit /usr/NX/etc/server.cfg 설정 파일을 수정한다
EnableUserDB = "1"
EnablePasswordDB = "1"
EnableClipboard = "both"
0을 1로 변경 #마크 제거한다

9) nxserver --useradd username
패스워드 설정

10) 방화벽 설정
sudo vi /etc/sysconfig/iptables
위의 파일에 다음을 추가
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5000:6000 -j ACCEPT

11) 서비스 재시작
/etc/rc.d/init.d/nxserver restart
/etc/rc.d/init.d/iptables restart

12) 클라이언트쪽에서
프로그램>>인터넷>>NX client for linux>>NX client for linux 클릭해서 ip입력
9번에서 설정한 사용자명과 비밀번호 입력하면 원격접속이 된다


------------------------------------------------------------------------------------
http://www.nomachine.com/download-package.php?Prod_Id=6

http://www.nomachine.com/select-package.php?os=linux&id=1


http://www.nomachine.com/download-package.php?Prod_Id=4


wget http://64.34.161.181/download/3.2.0/Linux/nxnode-3.2.0-13.i386.rpm
wget http://64.34.161.181/download/3.2.0/Linux/FE/nxserver-3.2.0-16.i386.rpm
wget http://64.34.161.181/download/3.2.0/Linux/nxclient-3.2.0-14.i386.rpm

rpm -ivh nxclient-3.2.0-14.i386.rpm
rpm -ivh nxnode-3.2.0-13.i386.rpm
rpm -ivh nxserver-3.2.0-16.i386.rpm


vi /etc/sysconfig/iptables
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

/etc/init.d/iptables restart

/etc/init.d/nxserver restart


http://www.nomachine.com/download-package.php?Prod_Id=65

윈도우 패키지를 받는다.

vi /usr/NX/etc/server.cfg

EnableUserDB = "1"
EnablePasswordDB = "1"
EnableClipboard = "both"

0을 1로 변경 # 마크를 제거한다.

접근 사용자 생성


방화벽 설정
sudo vi /etc/sysconfig/iptables
위의 파일에 다음을 추가
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5000:6000 -j ACCEPT

서비스 재시작
/etc/rc.d/init.d/nxserver restart
/etc/rc.d/init.d/iptables restart


클라이언트쪽에서
프로그램>>인터넷>>NX client for linux>>NX client for linux 클릭해서 ip입력

2008. 9. 18.

회사 사람들



회사 사람들

qmail에 DomainKeys 적용

이번 강좌는 발신지변조 방지 기술중 하나인 DomainKeys 시스템에 대해 다뤄보도록 하겠습니다.
도메인키 시스템은 Yahoo에서 주도하여 개발된 새로운 인증 방법으로써 최근엔 쥐메일 등과 같은
업체에서도 시범적 적용을 하고 있는 기술 입니다.
이 기술은 발신지 메일서버의 비밀키로 사인(Sign)되어온 메일의 도메인 정보를 가지고
수신지에서 발신지의 공개키(public key)를 이용하여 발신지 서버에 인증을 한뒤
메일의 정상유무를 확인하는 방법으로 최근 유행하는 피싱(phising) 또는 발신지 변조메일 등을
원천적으로 차단할 수 있습니다.
이는 기존 AOL의 SPF 기술보다 한단계 진보한 기술이라 볼 수 있습니다.

만약 이 기술에 대해서 자세한 문헌을 보고 싶다면 아래 URL을 참조하시기 바랍니다.
※ http://domainkeys.sf.net/ , http://antispam.yahoo.com/domainkeys

1. libdomainkeys 다운로드 (최신버전: http://sourceforge.net/projects/domainkeys/)
libdomainkeys는 gmail.com 의 운영자인 Russell Nelson 씨가 만든 라이브러리로써,
쉽고 빠르게 적용할 수 있다는 장점이 있습니다.
[root@localhost]# wget http://nchc.dl.sourceforge.net/sourceforge/domainkeys/libdomainkeys-0.68.tar.gz
[root@localhost]# tar xfz libdomainkeys-0.68.tar.gz
[root@localhost]# cd libdomainkeys-0.68
[root@localhost]# make


2. qmail-dk 패치 적용
[root@localhost]# wget http://www.qmail.org/qmail-1.03-dk-0.54.patch
[root@localhost]# tar xfz qmail-1.03.tar.gz
[root@localhost]# cd qmail-1.03
[root@localhost]# patch -p1 < ../qmail-1.03-dk-0.54.patch

※ 만약 smtp relay allow 방식이 qmail + vpopmail를 사용하는 방법이 아니라
  qmail + smtp-auth 방식을 사용하시는 분들은 위 패치를 하신뒤 아래 패치도
  같이 해주셔야 되며, vpopmail을 이용하시는 분들은 3번 섹션으로 넘기시면 됩니다.
[root@localhost]# wget http://jeremy.kister.net/code/qmail-dk-0.54-auth.patch
[root@localhost]# cd qmail-1.03
[root@localhost]# patch -p1 < ../qmail-dk-0.54-auth.patch


3. qmail-dk 바이너리 파일의 생성 및 설치
이제 DomainKeys 시스템에서 사용될 바이너리 파일을 생성하도록 하겠습니다.
하지만 컴파일 하기에 앞서 주의하셔야 될 사항이 있습니다.
바로 큐메일소스 디렉토리의 위치 입니다.
위에서 적용한 qmail-dk 패치의 내용중에는 qmail-dk.c 라는 원시코드가 생성이 되는 부분이 있는데
이 원시코드에서 libdomainkeys의 헤더를 자신의 상위 디렉토리에 찾도록 코딩되어 있습니다.
따라서 큐메일소스 디렉토리는 반드시 libdomainkeys 디렉토리 내에 존재해야 됩니다.
[root@localhost]# mv qmail-1.03 libdomainkeys-0.68/
[root@localhost]# cd libdomainkeys-0.68/qmail-1.03
[root@localhost]# make qmail-dk
[root@localhost]# cp qmail-dk /var/qmail/bin/
[root@localhost]# chown root.qmail /var/qmail/bin/qmail-dk
[root@localhost]# cp qmail-dk.8 /var/qmail/man/man8/


4. RSA DomainKeys 생성
이곳에서 생선된 RSA Key가 실제 메일헤더에 적용되어 발송될 인증키 입니다.
[root@localhost]# mkdir -p /etc/domainkeys/foobar.com/
[root@localhost]# cd /etc/domainkeys/foobar.com/
[root@localhost]# openssl genrsa -out rsa.private 768
[root@localhost]# openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
[root@localhost]# mv rsa.private default
[root@localhost]# chown -R qmaild .
[root@localhost]# chmod 600 default


5. public Domainkey 추출
DomainKeys를 적용하려면 DNS의 Zone 파일에 TXT 레코드와 공용키를 추가시켜야 됩니다.
따라서 TXT 레코드에서 사용할 공용키(public key)를 추출하도록 합니다.
[root@localhost]# grep -v ^- rsa.public | perl -e 'while(<>){chop;$l.=$_;}print "t=y; p=$l;\n";'


6. Zone 파일에 TXT 레코드 추가
위에서 말했듯이 도메인키 시스템을 적용하려면 존 파일에 TXT 레코드가 필요 합니다.
따라서 기존 존파일에 아래의 내용을 추가시켜 줍니다.
_domainkey   IN   TXT   "t=y; o=-;"
default._domainkey   IN   TXT   "public DomainKey"

※ 위의 내용만으로는 어디에 적용하실지 혼동하시는 분이 계실까봐 샘플을 보여드립니다.
[root@localhost]# cat /var/named/zone-foobar.com
$TTL 86400
@       IN   SOA   ns.foobar.com. root.foobar.com. (
                2007010100 ; Serial
                 10800   ; Refresh (3 hours, 10800)
                 3600    ; Retry (1 hours, 3600)
                 1209600  ; Expire (2 weeks, 1209600)
                 86400   ; Minimum (1 days, 86400)
                 )
;
; Default Setting (NS, MX, A)
        IN   NS   ns.foobar.com.
        IN   MX 10  mail.foobar.com.
        IN   A    192.168.0.1
;
; DomainKeys Setting (TXT)
_domainkey   IN   TXT   "t=y; o=-;"
default._domainkey   IN   TXT   "t=y; p=MHwwDQYJKoZIhvcNAQ...."
;
; Name servers (registered at InterNIC)
ns       IN   A    192.168.0.1
;
; Hosts Here - This is comments
www      IN   A    192.168.0.1



7. qmail-queue 파일의 교체
이제 큐메일에서 메일을 발송할 때 domainkey를 메일헤더에 추가하여 발송하도록
위에서 설치했던 qmail-dk를 사용하도록 큐메일 파일을 교체해주어야 합니다.
[root@localhost]# ln /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.orig
[root@localhost]# ln /var/qmail/bin/qmail-dk /var/qmail/bin/qmail-queue.new
[root@localhost]# mv /var/qmail/bin/qmail-queue.new /var/qmail/bin/qmail-queue


8. tcp.smtp 수정
처음 패치를 했을때와 마찬가지로 이 부분도 smtp-auth 사용자와 vpopmail 사용자는
각각 다른 내용으로 tcp.smtp에 추가를 해주어야 됩니다.
1. smtp-auth 사용자
[root@localhost]# vi /etc/tcp.smtp
:allow,DKVERIFY="DEGIJKfh",QMAILQUEUE="bin/qmail-dk"
[root@localhost]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

2. vpopmail 사용자
[root@localhost]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT="",DKSIGN="/etc/domainkeys/foobar.com/default",QMAILQUE
UE="bin/qmail-dk"
192.168.0.1:allow,RELAYCLIENT="",DKSIGN="/etc/domainkeys/foobar.com/default",QMAILQU
EUE="bin/qmail-dk"
:allow,DKVERIFY="DEGIJKfh",QMAILQUEUE="bin/qmail-dk"
[root@localhost]# /home/vpopmail/bin/clearopensmtp


이제 DomainKeys를 사용할 준비가 모두 끝났습니다.
실제로 yahoo와 gmail로 메일을 발송해보시기 바랍니다.

9. DomainKeys 적용확인
야후에서는 도메인키 인증이 되면 메일을 읽었을 때 "발신:" 부분에 아래와 같은 메시지가 남습니다.
야후! 도메인키는, 이 메세지가 다음 도메인으로 부터 보내진것을 입증합니다 : foobar.com.

구글에서는 메일을 읽은뒤, 오른쪽에 보시면 "추가옵션" 이라는 부분이 있습니다.
클릭하시면 보낸사람 오른쪽으로 "서명한 사람: foobar.com" 이라는 메시지가 붙습니다.
혹은 제목 아래의 옵션들중 "원본 보기"를 클릭하시면 메일헤더를 보실 수 있는데
아래와 같은 메일헤더가 추가되어 있으면 성공적으로 도메인키가 적용이 된것 입니다.
DomainKey-Status: good (test mode)
Received: (qmail 23592 invoked from network); 13 Jan 2007 21:21:12 +0900
Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=default; d=foobar.com;
b=oIozmfhoDF+L3+hhO0ncfSh4FdLBp3yiyBkvIJ27FqNRzsXZrRe6Q03XjwN0h10uUZrjphyX...


10. 다수 도메인 사용
만약 도메인키를 적용할 도메인이 많다면 아래와 같이 소프트링크를 걸어주셔야 됩니다.
이것은 수신측 메일서버에서 메일을 받은 경우, 송신 메일서버로 dkverify 쿼리를 요청하는데
송신 메일서버의 qmail-dk가 default키를 /etc/domainkeys/도메인/default 에서 찾기 때문입니다.
[root@localhost]# ln -s /etc/domainkeys/foobar.com /etc/domainkeys/foobar2.com

※ 필자의 경우 qmail-dk.c 자체를 수정해서 사용하고 있습니다.
만약 위의 방법 말고 더 좋은 방법을 찾은 분은 리플 남겨주시기 바랍니다.

qmail에 DomainKeys 적용

이번 강좌는 발신지변조 방지 기술중 하나인 DomainKeys 시스템에 대해 다뤄보도록 하겠습니다.
도메인키 시스템은 Yahoo에서 주도하여 개발된 새로운 인증 방법으로써 최근엔 쥐메일 등과 같은
업체에서도 시범적 적용을 하고 있는 기술 입니다.
이 기술은 발신지 메일서버의 비밀키로 사인(Sign)되어온 메일의 도메인 정보를 가지고
수신지에서 발신지의 공개키(public key)를 이용하여 발신지 서버에 인증을 한뒤
메일의 정상유무를 확인하는 방법으로 최근 유행하는 피싱(phising) 또는 발신지 변조메일 등을
원천적으로 차단할 수 있습니다.
이는 기존 AOL의 SPF 기술보다 한단계 진보한 기술이라 볼 수 있습니다.

만약 이 기술에 대해서 자세한 문헌을 보고 싶다면 아래 URL을 참조하시기 바랍니다.
※ http://domainkeys.sf.net/ , http://antispam.yahoo.com/domainkeys

1. libdomainkeys 다운로드 (최신버전: http://sourceforge.net/projects/domainkeys/)
libdomainkeys는 gmail.com 의 운영자인 Russell Nelson 씨가 만든 라이브러리로써,
쉽고 빠르게 적용할 수 있다는 장점이 있습니다.
[root@localhost]# wget http://nchc.dl.sourceforge.net/sourceforge/domainkeys/libdomainkeys-0.68.tar.gz
[root@localhost]# tar xfz libdomainkeys-0.68.tar.gz
[root@localhost]# cd libdomainkeys-0.68
[root@localhost]# make


2. qmail-dk 패치 적용
[root@localhost]# wget http://www.qmail.org/qmail-1.03-dk-0.54.patch
[root@localhost]# tar xfz qmail-1.03.tar.gz
[root@localhost]# cd qmail-1.03
[root@localhost]# patch -p1 < ../qmail-1.03-dk-0.54.patch

※ 만약 smtp relay allow 방식이 qmail + vpopmail를 사용하는 방법이 아니라
  qmail + smtp-auth 방식을 사용하시는 분들은 위 패치를 하신뒤 아래 패치도
  같이 해주셔야 되며, vpopmail을 이용하시는 분들은 3번 섹션으로 넘기시면 됩니다.
[root@localhost]# wget http://jeremy.kister.net/code/qmail-dk-0.54-auth.patch
[root@localhost]# cd qmail-1.03
[root@localhost]# patch -p1 < ../qmail-dk-0.54-auth.patch


3. qmail-dk 바이너리 파일의 생성 및 설치
이제 DomainKeys 시스템에서 사용될 바이너리 파일을 생성하도록 하겠습니다.
하지만 컴파일 하기에 앞서 주의하셔야 될 사항이 있습니다.
바로 큐메일소스 디렉토리의 위치 입니다.
위에서 적용한 qmail-dk 패치의 내용중에는 qmail-dk.c 라는 원시코드가 생성이 되는 부분이 있는데
이 원시코드에서 libdomainkeys의 헤더를 자신의 상위 디렉토리에 찾도록 코딩되어 있습니다.
따라서 큐메일소스 디렉토리는 반드시 libdomainkeys 디렉토리 내에 존재해야 됩니다.
[root@localhost]# mv qmail-1.03 libdomainkeys-0.68/
[root@localhost]# cd libdomainkeys-0.68/qmail-1.03
[root@localhost]# make qmail-dk
[root@localhost]# cp qmail-dk /var/qmail/bin/
[root@localhost]# chown root.qmail /var/qmail/bin/qmail-dk
[root@localhost]# cp qmail-dk.8 /var/qmail/man/man8/


4. RSA DomainKeys 생성
이곳에서 생선된 RSA Key가 실제 메일헤더에 적용되어 발송될 인증키 입니다.
[root@localhost]# mkdir -p /etc/domainkeys/foobar.com/
[root@localhost]# cd /etc/domainkeys/foobar.com/
[root@localhost]# openssl genrsa -out rsa.private 768
[root@localhost]# openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
[root@localhost]# mv rsa.private default
[root@localhost]# chown -R qmaild .
[root@localhost]# chmod 600 default


5. public Domainkey 추출
DomainKeys를 적용하려면 DNS의 Zone 파일에 TXT 레코드와 공용키를 추가시켜야 됩니다.
따라서 TXT 레코드에서 사용할 공용키(public key)를 추출하도록 합니다.
[root@localhost]# grep -v ^- rsa.public | perl -e 'while(<>){chop;$l.=$_;}print "t=y; p=$l;\n";'


6. Zone 파일에 TXT 레코드 추가
위에서 말했듯이 도메인키 시스템을 적용하려면 존 파일에 TXT 레코드가 필요 합니다.
따라서 기존 존파일에 아래의 내용을 추가시켜 줍니다.
_domainkey   IN   TXT   "t=y; o=-;"
default._domainkey   IN   TXT   "public DomainKey"

※ 위의 내용만으로는 어디에 적용하실지 혼동하시는 분이 계실까봐 샘플을 보여드립니다.
[root@localhost]# cat /var/named/zone-foobar.com
$TTL 86400
@       IN   SOA   ns.foobar.com. root.foobar.com. (
                2007010100 ; Serial
                 10800   ; Refresh (3 hours, 10800)
                 3600    ; Retry (1 hours, 3600)
                 1209600  ; Expire (2 weeks, 1209600)
                 86400   ; Minimum (1 days, 86400)
                 )
;
; Default Setting (NS, MX, A)
        IN   NS   ns.foobar.com.
        IN   MX 10  mail.foobar.com.
        IN   A    192.168.0.1
;
; DomainKeys Setting (TXT)
_domainkey   IN   TXT   "t=y; o=-;"
default._domainkey   IN   TXT   "t=y; p=MHwwDQYJKoZIhvcNAQ...."
;
; Name servers (registered at InterNIC)
ns       IN   A    192.168.0.1
;
; Hosts Here - This is comments
www      IN   A    192.168.0.1



7. qmail-queue 파일의 교체
이제 큐메일에서 메일을 발송할 때 domainkey를 메일헤더에 추가하여 발송하도록
위에서 설치했던 qmail-dk를 사용하도록 큐메일 파일을 교체해주어야 합니다.
[root@localhost]# ln /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.orig
[root@localhost]# ln /var/qmail/bin/qmail-dk /var/qmail/bin/qmail-queue.new
[root@localhost]# mv /var/qmail/bin/qmail-queue.new /var/qmail/bin/qmail-queue


8. tcp.smtp 수정
처음 패치를 했을때와 마찬가지로 이 부분도 smtp-auth 사용자와 vpopmail 사용자는
각각 다른 내용으로 tcp.smtp에 추가를 해주어야 됩니다.
1. smtp-auth 사용자
[root@localhost]# vi /etc/tcp.smtp
:allow,DKVERIFY="DEGIJKfh",QMAILQUEUE="bin/qmail-dk"
[root@localhost]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

2. vpopmail 사용자
[root@localhost]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT="",DKSIGN="/etc/domainkeys/foobar.com/default",QMAILQUE
UE="bin/qmail-dk"
192.168.0.1:allow,RELAYCLIENT="",DKSIGN="/etc/domainkeys/foobar.com/default",QMAILQU
EUE="bin/qmail-dk"
:allow,DKVERIFY="DEGIJKfh",QMAILQUEUE="bin/qmail-dk"
[root@localhost]# /home/vpopmail/bin/clearopensmtp


이제 DomainKeys를 사용할 준비가 모두 끝났습니다.
실제로 yahoo와 gmail로 메일을 발송해보시기 바랍니다.

9. DomainKeys 적용확인
야후에서는 도메인키 인증이 되면 메일을 읽었을 때 "발신:" 부분에 아래와 같은 메시지가 남습니다.
야후! 도메인키는, 이 메세지가 다음 도메인으로 부터 보내진것을 입증합니다 : foobar.com.

구글에서는 메일을 읽은뒤, 오른쪽에 보시면 "추가옵션" 이라는 부분이 있습니다.
클릭하시면 보낸사람 오른쪽으로 "서명한 사람: foobar.com" 이라는 메시지가 붙습니다.
혹은 제목 아래의 옵션들중 "원본 보기"를 클릭하시면 메일헤더를 보실 수 있는데
아래와 같은 메일헤더가 추가되어 있으면 성공적으로 도메인키가 적용이 된것 입니다.
DomainKey-Status: good (test mode)
Received: (qmail 23592 invoked from network); 13 Jan 2007 21:21:12 +0900
Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=default; d=foobar.com;
b=oIozmfhoDF+L3+hhO0ncfSh4FdLBp3yiyBkvIJ27FqNRzsXZrRe6Q03XjwN0h10uUZrjphyX...


10. 다수 도메인 사용
만약 도메인키를 적용할 도메인이 많다면 아래와 같이 소프트링크를 걸어주셔야 됩니다.
이것은 수신측 메일서버에서 메일을 받은 경우, 송신 메일서버로 dkverify 쿼리를 요청하는데
송신 메일서버의 qmail-dk가 default키를 /etc/domainkeys/도메인/default 에서 찾기 때문입니다.
[root@localhost]# ln -s /etc/domainkeys/foobar.com /etc/domainkeys/foobar2.com

※ 필자의 경우 qmail-dk.c 자체를 수정해서 사용하고 있습니다.
만약 위의 방법 말고 더 좋은 방법을 찾은 분은 리플 남겨주시기 바랍니다.

qmail 릴레이 허용 방법 소개

큐메일에서 특정 사용자에게 smtp relay를 열어주기 위한 방법은 많이 있습니다.
이 때문에 큐메일을 처음 접하시는 분들은 혼란을 초래하기도 하죠.
그러나 조금만 각도를 달리해서 생각해보면 그만큼 유연한 설정이 가능하다는 장점이 될 수 있습니다.

이번 강좌에서는 큐메일에서 smtp relay를 열어주기 위한 방법을 소개만 하겠습니다.
실제적인 적용법을 다 적기에는 너무 많군요.

1. qmail + smtp-auth 패치를 적용해서 사용하는 경우
qmail-smtpd를 패치하여 smtp 인증을 사용하는 방법 입니다.
패치된 qmail-smtpd는 다양한 인증 프로그램을 사용할 수 있으므로 유연한 설정이 가능하죠
대표적인 인증 프로그램으로는 다음과 같은 프로그램들이 있습니다.
1. vchkpw
  vchkpw는 vpopmail의 pop 인증 프로그램 입니다.
  vpopmail 가상 유저들에게 smtp 서비스를 해줄 수 있는 프로그램이죠.
2. cmd5checkpw
  계정과 암호를 별도의 파일(/etc/poppasswd)에서 관리를 합니다.
  많지 않은 사용자에게만 smtp 서비스를 해줄 때 사용 됩니다.
3. checkpassword
  sendmail처럼 시스템 계정(/etc/passwd)을 사용하여 smtp 서비스를 해줍니다.
4. checkpassword + mysql
  checkpassword에 mysql 패치를 적용해서 시스템 계정과 DB에 만든 가상 계정을
  동시에 사용하여 smtp 서비스를 해줄 수 있습니다.


2. vpopmail 을 사용할 경우
1. vpopmail의 로밍 서비스
  vpopmail의 로밍 서비스를 가능하도록 컴파일 했다면(--enable-roaming-users=y)
  vpopmail로 만들어준 가상 유저들은 pop에 로그인후 smtp 서비스를 사용할 수 있습니다.
  이것은 vpopmail이 해당 유저가 pop 인증에 성공했을 경우에 cdb 파일을 자동으로
  업데이트 해주기 때문 입니다.
  이렇게 업데이트 된 cdb 파일을 qmail-smtpd를 구동시키는 tcpserver가 참고하고
  그 뒤에 RELAYCLIENT 환경 변수를 만들어서 relay가 허용이 됩니다.
2. vpopmail + mysql
  vpopmail을 mysql과 함께 사용할 수 있도록 컴파일 했을 경우에는 pop 인증이 성공할 경우
  lastauth 라는 테이블이 업데이트 됩니다.
  또한 tcpserver + Matt Simerson의 mysql 패치를 사용하면 이 테이블에서 pop 접근에
  성공한 ip 주소를 읽어들여 smtp relay를 허용합니다.
  만약 매우 많은 pop 유저를 가지는 대형 서버의 경우 이 방법이 좋습니다.
  왜냐하면 매번 cdb 파일을 다시 읽어드리거나 업데이트 하지 않아도 되기 때문 입니다.
  qmail-smtpd 스크립트의 tcpserver에는 -x 옵션 자체를 사용하지 않게 됩니다.


3. qmail + vida 형식으로 운영하는 경우
이것은 한국에는 매우 드문 방식이지만, 주로 일본에서 많이 사용되는 방법 입니다.
필자가 일본에서 처음으로 외주를 맡았을때 vida 라는 형식을 사용하는것을 처음 알았습니다.
vida는 qmail Virtual Domain and Authentication package 라고 불리웁니다.
정말로 큰 대규모 메일서버라면 qmail+vpopmail 보다는 qmail+vida 시스템이 빠르다는것을
어떤 문서에서 본 기억이 나는군요.
저도 잠깐 다뤄본 것이기 때문에 깊게 설명을 해드릴 수는 없고, 간략한 특징만 알려드리겠습니다.
그저 그냥 이런게 있구나~ 정도로 알아두시면 될 듯 합니다.
- checkpassword의 인증 방식의 추가(CRAM-MD5, APOP 대응)
- checkpassword의 SMTP 인증 대응
- qmail-smtpup 프로그램의 추가
- 가상 메일 박스 대응
- IP주소 베이스 및 로그인 ID베이스의 버추얼 도메인 대응
- 패스워드 데이타베이스는 CDB 를 이용하기 때문에 유저수가 많아도 빠름
- D.J.Bernstein씨의 라이브러리를 적극적으로 이용

MTA Error Code

▶ SERVER REPLY: 501 Denied domain name
; 도메인주소를 잘못 입력 or 수신측에서 도메인을 수신거부한 경우

▶ 421 Server too busy.
; 수신측 서버의 응답지연. 수신서버의 트래픽등으로 메일을 수신 받지 못하는 상황에서 발송자에게 리턴 메일을 보냄.

▶ 421-Microsoft ESMTP MAIL Service, Version: 5.0.2195.5600 ready at Service not available, closing transmission channel
; MS사의 smtp 서버의 장애로 인해 메일을 수신받지 못하는 상황에서 리턴된 메시지.

▶ 421 4.3.2 Your IP(218.236.206.104) is filtered and this connection will be closed. You must register your IP to spammaster@hanafos.com By SpaceLee, the Lord of mail server.
; 우리쪽 (mail.hanafos.com) 서버로 메일을 발송시 필터링 조건에 위배되어 스패머로 인식되고 필터링 되어 발신자에게 리턴되는 메시지.

▶ 441 4.4.1 No answer from host
; 수신측 서버의 응답이 없어서 리턴된 메시지.

▶ 451 4.4.0 DNS resolving error
; 수신측 서버의 도메인을 못찾아 리턴된 메시지.

▶ 451 4.3.0 Other or undefined mail system status
; 수신측 메일 시스템의 프로토콜이 틀리거나 수신 smtp 서버가 아닐경우 리턴되는 메시지.

▶ 451 4.3.0 Temporary system failure. Please try again later.
; 수신 서버의 일시적인 장애로 인해 메일을 수신받지 못해 리턴된 메시지.

▶ 451 4.4.2 Bad connection (io timeout)
; 수신 서버의 응답이 없어서 응답시간이 초과 되어 리턴된 메시지.

▶ 451 Relay Server Not Ready.
; 수신측 서버에서 릴레이 기능이 안돼어 리턴된 메시지.

▶ 452 4.4.5 Insufficient disk space; try again later
; 수신서버의 디스크용량이 부족하여 메일을 수신받지 못해 리턴된 메시지.

▶ 452 4.4.5 ... Insufficient disk space; try again later
; 수신자(leo@buffgame.com)의 메일함 용량이 부족하여 메일을 수신받지 못해 리턴된 메시지

▶ 500 Syntax Error, Command Unrecognized EHLO mo02.hanafos.com
; 발송자의 메일 발송기(아웃룩, 유도라 등등)에서 메일발송시 수신측 메일 서버에서 SMTP 명령어를 인식하지 못해 리턴된 메시지.

▶ 500 5.5.1 Command unrecognized: "XXXX mo02.hanafos.com"
; 수신서버가 SMTP 명령어를 인식 하지 못함. (위와 동일).

▶ 501 5.1.8 Sender domain must exist(honorstech.com)
; 수신측 도메인(honorstech.com) 이 존재 하지 않아 리턴된 메시지.

▶ 502 Not implemented
; 수신측 서버가 smtp 명령어를 인식 하지 못해 리턴된 메시지.

▶ 505 Authentication required
; 수신측 서버가 릴레이 인증 등을 허용하지 않아 리턴된 메시지.

▶ 512 5.1.2 Bad destination system address
; 수신 서버의 장애나 네트웍 트래픽등으로 인헤 수신서버가 응답이 없을 때 리턴된 메시지.

▶ 550 5.1.1 Suspended user
; 수신자의 사용자의 계정이 중단 상태.

▶ 550 5.1.2 ... Unsupported mail destination
; 수신 서버가 응답이 지연되어 리턴된 메시지.

▶ 550 5.7.1 ... Access denied.(211.202.13.144)
; 수신자(gyunu@chollian.net)가 발신자의 메일주소를 수신 거부한 상태.

▶ 550 5.7.1 ... Relaying denied. IP name lookup failed [211.202.13.144]
; 수신 서버에서 발신자의 IP에 대해 릴레이 거부를 하여 메일을 보내지 못해 리턴된 메시지.

▶ 550 Requested action not taken: mailbox unavailable
; 수신자의 메일함을 찾지 못해 리턴된 메시지.

▶ 550 Mail is reject ( filtering reject )
; 수신 서버에서 발신자의 메일 주소나 IP를 필터링 하여 거부되어 리턴된 메시지.

▶ 550 5.1.1 ... User unknown
; 수신자 (hkaprk@jeill.co.kr)계정을 찾지 못해 리턴된 메시지.

▶ 550 5.7.1 Unable to relay for lyc410@hanafos.net
; 수신 서버에서 릴레이 거부를 하여 리턴된 메시지.

▶ 550 Invalid recipient lobster@fernand.com
; 수신자 계정을 찾지 못해 리턴된 메시지 .

▶ 550 RCPT ERROR. Mailbox doesn't exist
; 수신자 메일함이 존재 하지 않아서 리턴된 메시지.

▶ 553 5.3.0 ... spam
; 발송자의 계정이 수신서버 상에서 스패머로 등록이 되어 메일 수신 거부를 해서 리턴된 메시지

▶ 553 sorry, your envelope sender is in my badmailfrom list
; 발신자의 메일 주소가 수신서버상에서 블랙리스트에 올라 거부되어 리턴됨.

▶ 553 sorry, that domain isn't in my list of allowed rcpt hosts
; 발신자의 메일 도메인주소 자체가 수신 서버에서 차단되어 리턴된 메시지.

▶ 553 5.1.8 ... Domain of sender address uni@honorstech.com does not exist
; 발신자의 도메인에 대해 수신서버에서 체크 하여 없는 도메인일 경우 리턴시킨 메시지.

▶ 553 5.0.0 We do not accept mail from spammers - If you have questions,please email admin@www.narun.net.
; 발신자의 메일 계정이 스패머로 수신서버에서 등록이 되어 리턴된 메시지.

▶ 553 5.0.0 Your message may contain the Win32.Klez worm!!- If you have questions,please email postmaster@ecweb-1.blueweb.co.kr.
; 발신자의 메일에서 Win32.Klez 라는 웜바이러스가 발견되어 리턴된 메시지.

▶ 553 sorry, your envelope sender is enlisted as spammer.
; 발신자의 메일 주소가 수신서버상의 스패머 리스트에 등록 되어 리턴된 메시지.

▶ 553-This target address is not our MX service
; 수신자의 주소가 수신서버에서 서비스 안하는 도메인일 경우 리턴된 메시지.

▶ 554 5.3.2 Rejected by mailbox host. REPLY:(250 ... Sender ok)
; 수신자가 발송자의 메일 계정에 대해 수신 거부를 하여 리턴된 메시지 .

▶ 554 5.3.0 Mail have traversed Too many hops. Reject it.
; 발신자가 메일을 보낼 때 동보메일로 수신자의 메일 계정을 수신서버의 제한량 이상 넣어 보내어 리턴된 메시지.

▶ 554 5.3.2 Rejected by mailbox host. REPLY:(550 5.1.1 unknown or illegal alias: kgng_h_w@samsung.com)
; 수신자가 발송자의 메일 계정에 대해 수신거부를 설정하여 리턴된 메시지.

▶ 554 1048035239.13309.hanmir accept failed. [code=-1]
; hanmir 서버에서 응답이 안돼어 리턴된 메시지.

▶ 554 delivery error: dd Sorry, your message to bk6218@yahoo.co.kr cannot be delivered. This account is over quota. - mta111.mail.yahoo.co.kr
; 수신자의 메일함 용량 초과로 인해 리턴된 메시지.

▶ 554 5.1.0 Sender Denied
; 발신자의 계정을 수신서버에서 수신 거부함.

▶ 554 : Recipient address rejected: Access denied
; 수신자가 발신자의 계정에 대해 수신 거부를 설정함.

qmail + vpopmail 사용환경에서의 procmail 설정

메일서버를 운영하면서 골치아픈것 제 1순위를 뽑자면 역시 스팸메일 일것입니다.
물론 각종 스팸툴등을 사용하는 방법도 있습니다만 시스템에 부하를 많이 가져온다는 단점이 있죠
또한 최근 유행하는 reverse domain 체크라던지 SPF 적용도 한가지 방법일 수 있을것입니다.
그러나 최대한 안귀찮게(?) 스팸을 걸러내는 방법은 procmail이 좋을듯 합니다.

1. hcode 설치
hcode는 한글코드를 인/디코딩 하기 위해 필요한 바이너리 파일 입니다.
검색엔진에서 쉽게 구할 수 있으나, 제대로 작동하지 않는 소스가 상당수 차지하고 있죠
따라서 필자는 임은재님께서 올려주신 hcode 소스를 사용하도록 하겠습니다.
[root@localhost]# wget http://people.kldp.org/~eunjea/tmp/hcode2.1-mailpatch3-TABpatch.tgz
[root@localhost]# tar xfz hcode2.1-mailpatch3-TABpatch.tgz
[root@localhost]# cd hcode2.1-mailpatch3-TABpatch
[root@localhost]# make
[root@localhost]# cp -pf hcode /var/qmail/bin/


2. procmail 설정
레드헷 계열이라면 기본적으로 procmail이 rpm으로 설치되어 있을 것입니다.
만약 설치되지 않아있다면 yum등을 이용해 설치를 하시면 되겠습니다.
procmail의 설정 방법은 매우 간단합니다.
아마 이곳저곳 찾아보신 발빠른 분들이라면 필자의 필터링 설정과 약간 다르다는걸 눈치채신 분들도
있을거라 예상하지만 대부분의 문서는 vpopmail 로밍 환경이 아닌 mysql 환경을 타겟으로
제작된 문서가 상당수 입니다.

[root@localhost]# vi /etc/procmailrc
LOGFILE=/var/log/qmail/procmail.log

## Filtering Rules
# 인코드되어 날아오는 헤더를 디코드 하는 부분.
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?KSC5601\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?ISO-8859-1\?(b|B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

# 영문
:0
* ^Subject:.*(advert|sex|porno|casino)
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

# 한글
:0
* ^Subject:.*(광고|홍보|廣告|몰카|성인|광 고|홍 보|몰 카|성 인|포르노|광.고|홍.보|몰.카|성.인)
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

# 괄호
:0
* ^Subject:.*(\[광고\]|\[홍보\]|\[몰카\]|\[성인\])
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

※ 이 부분에서 유의해야 할 부분이 있습니다.
만약 실제계정(account)가 아닌 가상계정(vpopmail)을 사용하고 계신다면 반드시 필터링룰에 의해
걸러진 스팸메일이 어디로 보내져야 되는지 "절대경로"로 써주셔야 됩니다.
위 예제는 spam@foobar.com 이라는 계정을 생성해주고 필터링된 메일을 모두 spam 계정으로
전송되도록 설정 해놓은 것입니다.
만약 직접 삭제되도록 하고 싶다면 "/dev/null" 이런식으로 변경하시면 됩니다.

3. procmail log 파일 생성
걸러진 스팸메일의 목록을 확인하기 위해 로그 파일을 생성하도록 하겠습니다.
[root@localhost]# touch /var/log/qmail/procmail.log
[root@localhost]# chmod 666 /var/log/qmail/procmail.log


4. vpopmail과 procmail의 연동
모든 설정이 끝났으므로 vpopmail과 연동하도록 설정하면 됩니다.
vpopmail의 로밍 서비스를 이용하게 되면 전체 컨트롤 파일인 /var/qmail/rc 에서
반영되도록 할 수는 없고 모든 메일 도메인계정 아래에 있는 .qmail-default에서 연동해줘야 됩니다.
[root@localhost]# cd /home/vpopmail/domains/foobar.com
[root@localhost]# vi .qmail-default
| (/var/qmail/bin/preline /usr/bin/procmail -p -m /etc/procmailrc || /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox )

큐안의 메일을 안전하게 삭제/복구 하기

메일서버를 운영하다보면 가끔 원치 않게 큐 디렉토리를 삭제해야 되는 일이 생깁니다.
그럴 경우에는 임의적으로 삭제/복구 하는 방법 보다는 Eric Huss가 제작한 queue-fix를
사용하는것이 안전하고 좋습니다.

1. queue-fix 다운로드
[root@localhost]# wget http://www.netmeridian.com/e-huss/queue-fix.tar.gz
[root@localhost]# tar xfz queue-fix.tar.gz
[root@localhost]# cd queue-fix
[root@localhost]# make


2. 큐메일 프로세스 정지
[root@localhost]# service qmail stop


3. 큐메일 디렉토리 삭제
[root@localhost]# rm -rf /var/qmail/queue


4. 큐메일 디렉토리 복구
[root@localhost]# ./queue-fix -i /var/qmail/queue


5. 큐메일 프로세스 시작
[root@localhost]# service qmail start

※ 여기서 중요한것은 큐메일 디렉토리를 삭제하고 복구를 했을 경우
일부 시스템에서는 리부팅을 해줘야만 완전히 복구 되는 경우가 있습니다.

vpopmail 에서 각 바이너리 파일들의 용도

~vpopmail/bin 디렉토리 안을 살펴보면 가상 도메인 관리를 위한 바이너리들이 있는데
다음과 같은 기능을 합니다.

vadddomain : 가상 도메인을 추가합니다.
postmaster 암호를 물어보는데 이것은 웹 인터페이스에서 로그인 할때 물어볼 암호입니다.
사용방법은 ./vadddomain 도메인명

vdeldomain : 가상 도메인과 모든 유저를 삭제합니다.
사용방법은 ./vdeldomain 도메인명

vadduser : pop 메일 유저 계정을 만듭니다.
사용방법은 ./vadduser 계정명@도메인명

vdeluser : pop 메일 유저를 삭제합니다.
사용방법은 ./vdeluser 계정명@도메인명

vpasswd : 메일 유저의 암호를 변경합니다.
사용방법은 ./vpasswd 계정명@도메인명

vsetuserquota : 각 유저 별로 quota 설정을 할 수 있습니다.
사용방법은 ./vsetuserquota babo@도메인명 51200 (단위는 byte)

vpopbull : 서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수 있습니다.
사용방법은 ./vpopbull -f 이메일파일명 도메인명

큐메일 서버 구축 #9 - 다람쥐메일(SquirrelMail) 설치

다람쥐메일은 여러가지 출시된 많은 웹메일 오픈소스중 하나이며 필자가 애용하는 프로그램 입니다.
따라서 여타 다른 프로그램보다 사용이 간단한 다람쥐메일을 세팅하도록 하겠습니다.
다람쥐메일은 프로그램을 따로 설치하지 않아도 작동하기 때문에 매우 간편하게 세팅이 가능합니다.
다운로드 받으신 뒤 압축 해제하시고 몇가지 설정만 해주면 동작하는 프로그램이죠

1. 다람쥐메일 다운로드 (최신버전 : http://www.squirrelmail.org/download.php)
[root@localhost]# wget http://jaist.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.6.tar.gz
[root@localhost]# wget http://jaist.dl.sourceforge.net/sourceforge/squirrelmail/all_locales-1.4.6-20060409.tar.gz
[root@localhost]# tar xfpz squirrelmail-1.4.6.tar.gz
[root@localhost]# tar xfpz all_locales-1.4.6-20060409.tar.gz -C squirrelmail-1.4.6


2. 플러그인 다운로드 (최신버전 : http://www.squirrelmail.org/plugins.php)
다람쥐메일은 그대로 사용해도 괜찮지만 좀더 편리한 여러가지 기능을 추가하도록 하겠습니다.
이왕 사용할 웹메일인데 여러가지 플러그인을 활용하면 쓰는것이 편리할 것입니다.
아래는 필자가 추천하는 플러그인들 입니다.
플러그인을 다운받은뒤 압축을 풀고 다람쥐메일 디렉토리중 plugins에 넣어주시면 됩니다.
※ 다람쥐 메일에 기본적으로 들어있는 플러그인
Delete Move Next
Filters
Listcommands
Message Details
NewMail
Sent Subfolders
SquirrelSpell


※ 다운받아서 추가해야되는 플러그인
Add-ons -> Notes
AddressBook -> Address Add
Compose -> HTML Mail

Message & Folder Manipulation -> Folder Sizes
Message & Folder Manipulation -> Message Flags & Icons

Message View -> Unsafe Image Rules
Message View -> View As HTML

Miscellaneous -> Compatibility



3. 다람쥐메일 설정
설정하기 전에 다람쥐메일 디렉토리명이 너무 길고 복잡하기 때문에 간단한 이름으로 바꿔줍니다.
필자는 편하게 webmail 이라고 하겠습니다.
[root@localhost]# mv squirrelmail-1.4.6 webmail
[root@localhost]# ./configure


- 다람쥐메일 설정화면
SquirrelMail Configuration : Read: config_default.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >>


- Organization Preferences
Organization Preferences
1. Organization Name : LTN(Linux.Tini4u.Net) 웹메일
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : LTN(Linux.Tini4u.Net) 웹메일
5. Signout Page : http://webmail.foobar.com/
6. Top Frame : _top
7. Provider link : http://webmail.foobar.com/
8. Provider name : LTN(Linux.Tini4u.Net) 웹메일


- Server Settings
Server Settings

General
-------
1. Domain : foobar.com
2. Invert Time : false
3. Sendmail or SMTP : SMTP

IMAP Settings
--------------
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Server software : courier
9. Delimiter : detect

B. Update SMTP Settings : localhost:25
H. Hide IMAP Server Settings


- Plugins
Plugins
Installed Plugins
1. squirrelspell
2. msg_flags
3. notes
4. address_add
5. filters
6. view_as_html
7. folder_sizes
8. compatibility
9. listcommands
10. message_details
11. newmail
12. unsafe_image_rules
13. html_mail
14. sent_subfolders
15. delete_move_next

Available Plugins:
16. spamcop
17. fortune
18. bug_report
19. translate
20. info
21. mail_fetch
22. a

큐메일 서버 구축 #8 - courier-imap 설치

외부에서 급하게 메일을 확인할 일이 있을 경우 메일 클라이언트 프로그램 설정하기 귀찮을때가 있습니다.
그럴 경우를 위해 보통 웹메일을 많이 이용하게 됩니다.
웹메일을 설치하기에 앞서 웹메일을 구축하는데 필요한 imap를 설치하도록 하겠습니다.
imap의 종류는 여러가지가 있는데 큐메일은 imap2002보다는 courier-imap와 연동이 잘 됩니다.
따라서 필자는 courier-imap를 설치하도록 하겠습니다.

1. Tcl 패키지 설치
Tcl은 다른 응용 프로그램에 내장되도록 디자인된 단순한 스크립트 언어 입니다.
Tcl은 Tk 패키지에 포함된 위젯 모음인 Tk와 함께 사용되도록 만들어진 패키지 입니다.
이 패키지는 yum mirror에서 지원을 하므로 추후 업데이트를 위해 yum으로 설치 합니다.
※ 보통 레드헷 시스템에서는 기본적으로 설치가 되어 있습니다.
[root@localhost]# yum -y install tcl


2. expect 패키지 설치
Expect는 telnet, ftp, passwd, fsck, rlogin, tip 등과 같은 상호 대화식 응용 프로그램을
자동화 하는 Tcl 확장 프로그램 입니다.
또한 Expect는 응용 프로그램을 테스트 하는데 유용하게 사용되는 프로그램이기도 합니다.
최근의 레드헷 시스템에서는 yum mirror에서 지원하므로 추후 업데이트를 위해 yum으로 설치 합니다.
[root@localhost]# yum -y install expect

※ 만약 OS의 버전이 낮아 yum에서 지원하지 않는다면 rpm.pbone.net 에서 검색하여 설치하면 됩니다.

3. 퍼미션 조정
courier-imap는 보안을 위하여 일반유저의 권한으로 컴파일 한뒤에 root유저로 설치합니다.
따라서 필자처럼 만약 보안을 위해 퍼미션을 조정해놨다면 임시적으로 조정해주셔야 됩니다.
또한 courier-imap를 컴파일할때 vpopmail의 library를 필요로 하기 때문에 같이 조정합니다.
[root@localhost]# chmod 755 /usr/bin/gcc
[root@localhost]# chmod 755 /usr/bin/g++
[root@localhost]# chmod 755 /usr/bin/find
[root@localhost]# chmod 755 /usr/bin/which
[root@localhost]# chmod 755 /usr/bin/make
[root@localhost]# chmod 755 /usr/bin/install
[root@localhost]# chmod 777 /home/vpopmail/lib/
[root@localhost]# chmod 777 /home/vpopmail/lib/libvpopmail.a


4. 임시계정 생성
앞서 말했듯이 보안을 위해 일반유저(uid 500이상) 권한으로 컴파일 해야 됩니다.
따라서 일반 사용자 계정을 생성해주도록 합니다. 필자는 편하게 webmail 이라고 하겠습니다.
[root@localhost]# useradd webmail


5. courier-imap 설치 (최신버전 : http://sourceforge.net/projects/courier/)
현재 강좌를 쓰는 시점(2006.07.01)에서 courier-imap의 최신버전은 4.1.1 입니다.
그러나 courier-imap 4.x 버전은 이것저것 설치해줄것이 너무 많아 귀찮은점이 많이 있습니다.
따라서 필자는 courier-imap 3.x 버전을 사용해 설치를 하도록 하겠습니다.
courier-imap 3.x 버전은 필자의 개인 패키지 미러에 있습니다.
(http://pkg.tini4u.net/mta/qmail/source/)
또한 일반유저 권한으로 컴파일 해야 되기 때문에 임시 디렉토리인 /var/tmp/에서 하도록 하겠습니다.

- 일반 유저로 변환후 컴파일
[root@localhost]# su - webmail
[webmail@localhost]$ cd /var/tmp
[webmail@localhost]$ wget http://pkg.tini4u.net/mta/qmail/source/courier-imap-3.0.8.tar.bz2
[webmail@localhost]$ tar xfj courier-imap-3.0.8.tar.bz2
[webmail@localhost]$ cd courier-imap-3.0.8
[webmail@localhost]$ CFLAGS="-DHAVE_OPEN_SMTP_RELAY"; export CFLAGS
[webmail@localhost]$ ./configure \
--prefix=/usr \
--datadir=/usr/share/courier-imap \
--sysconfdir=/etc/courier-imap \
--libexecdir=/usr/libexec/courier-imap \
--localstatedir=/var \
--mandir=/usr/share/man \
--without-ipv6 \
--enable-unicode \
--with-authvchkpw \
--with-redhat \
--without-authdaemon \
--without-authmysql \
--without-authldap \
--without-authdaemon \
--without-authpgsql
[webmail@localhost]$ make
[webmail@localhost]$ make check
[webmail@localhost]$ exit


- root로 설치
[root@localhost]# cd /var/tmp/courier-imap-3.0.8
[root@localhost]# make install
[root@localhost]# make install-configure


- courier-imap 데몬 스크립트 복사
[root@localhost]# cp -f courier-imap.sysvinit /etc/rc.d/init.d/courier-imap
[root@localhost]# chown root.root /etc/rc.d/init.d/courier-imap
[root@localhost]# chmod 755 /etc/rc.d/init.d/courier-imap
[root@localhost]# chkconfig --add courier-imap
[root@localhost]# chkconfig --level 345 courier-imap on


- 임시계정 삭제 및 퍼미션 복구
컴파일과 설치가 모두 정상적으로 되었으므로 임시계정을 삭제하고 퍼미션도 복원합니다.
[root@localhost]# userdel -r webmail
[root@localhost]# chmod 700 /usr/bin/gcc
[root@localhost]# chmod 700 /usr/bin/g++
[root@localhost]# chmod 700 /usr/bin/find
[root@localhost]# chmod 700 /usr/bin/which
[root@localhost]# chmod 700 /usr/bin/make
[root@localhost]# chmod 700 /usr/bin/install
[root@localhost]# chmod 755 /home/vpopmail/lib/
[root@localhost]# chmod 644 /home/vpopmail/lib/libvpopmail.a


- 스크립트 수정
courier-imap가 root가 아닌 vpopmail 유저와 vchkpw 그룹으로 실행되도록 수정합니다.
※ imapd.rc 파일은 58라인을, pop3d.rc 파일은 51라인을 수정하시면 됩니다.
[root@localhost]# vi /usr/libexec/courier-imap/imapd.rc
원본 : -stderrlogger=${exec_prefix}/sbin/courierlogger \
수정 : -stderrlogger=${exec_prefix}/sbin/courierlogger -user=vpopmail -group=vchkpw \
[root@localhost]# vi /usr/libexec/courier-imap/pop3d.rc
원본 : -stderrlogger=${exec_prefix}/sbin/courierlogger \
수정 : -stderrlogger=${exec_prefix}/sbin/courierlogger -user=vpopmail -group=vchkpw \
[root@localhost]# chmod 755 /usr/libexec/courier-imap/imapd.rc
[root@localhost]# chmod 755 /usr/libexec/courier-imap/pop3d.rc


- imap 설정
기본적으로 courier-imap를 설치하고 시작하게 되면 아무런 데몬도 시작되지 않습니다.
그렇기 때문에 imap 스크립트를 수정해서 데몬을 실행하겠다고 수정해줘야 됩니다.
※ imapd 파일의 373 라인을 수정하시면 됩니다.
[root@localhost]# vi /etc/courier-imap/imapd
원본 : IMAPDSTART=NO
수정 : IMAPDSTART=YES


- courier-imap 시작
[root@localhost]# /etc/rc.d/init.d/courier-imap start
Starting Courier-IMAP server: imap

큐메일 서버 구축 #7 - ezmlm과 qmailadmin 설치

qmail을 웹에서 관리할 수 있는 관리 프로그램들 입니다.

1. autorespond 설치 (최신버전 : http://www.inter7.com/?page=software)
autorespond는 BradDameron에 의해 추가된 패키지 입니다.
ezmlm에서 필요로 하는 프로그램이므로 설치해줍니다.
[root@localhost]# wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
[root@localhost]# tar xfz autorespond-2.0.5.tar.gz
[root@localhost]# cd autorespond-2.0.5
[root@localhost]# make
[root@localhost]# cp -p autorespond /usr/local/bin/


2. ezmlm 설치 (최신버전 : http://www.inter7.com/?page=software)
ezmlm은 qmail과 같이 사용할 수 있는 쉽고 빠른 메일링 리스트 프로그램 입니다.
이 프로그램의 자세한 정보는 http://cr.yp.to/ezmlm.html 이곳을 참조하시면 되겠습니다.
또한 ezmlm-idx 라는 여러가지 편리한 패치가 종합적으로 모아져 있는 패치파일이 있습니다.
예전에는 ezmlm과 ezmlm-idx를 따로 받아서 패치를 해주는 작업을 해야만 했지만
최근에는 필자가 알려준 사이트에서 패치를 해서 제공하기 때문에 패치해주는 작업을 안해도 됩니다.
그리고 예전에는 설치전에(make setup) make man으로 man page를 생성해줘야 했으나 이 또한
직접 컴파일되어서 제공하므로 작업순서가 한번 더 줄어들었습니다.
※ ezmlm가 설치되는 기본디렉토리는 /usr/local/bin/ezmlm 입니다.
[root@localhost]# wget http://www.inter7.com/devel/ezmlm-0.53-idx-0.41.tar.gz
[root@localhost]# tar xfz ezmlm-0.53-idx-0.41.tar.gz
[root@localhost]# cd ezmlm-0.53-idx-0.41
[root@localhost]# make
[root@localhost]# make setup


3. qmailadmin (최신버전 : http://sourceforge.net/projects/qmailadmin/)
qmailadmin은 vpopmail의 웹 인터페이스 입니다.
도메인 추가/삭제를 제외한 모든 기능을 웹상에서 할 수 있으며, ezmlm을 이용한
메일링 리스트 추가/삭제/관리까지 할 수 있는 아주 좋은 프로그램 입니다.
※ 필자의 개인패키지 미러에서 한국언어 파일을 제공합니다.
(http://pkg.tini4u.net/mta/qmail/source/)
[root@localhost]# wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.9.tar.gz
[root@localhost]# wget http://pkg.tini4u.net/mta/qmail/source/qmailadmin-ko.tar.gz
[root@localhost]# tar xfz qmailadmin-1.2.9.tar.gz
[root@localhost]# tar xfz qmailadmin-ko.tar.gz -C ./qmailadmin-1.2.9/lang
[root@localhost]# cd qmailadmin-1.2.9
[root@localhost]# ./configure
--enable-htmllibdir=/home/qadmin/html/qmailadmin
--enable-htmldir=/home/qadmin/html/qmailadmin
--enable-cgibindir=/home/qadmin/html/qmailadmin
--enable-imagedir=/home/qadmin/html/qmailadmin/images
--enable-imageurl=/images
--enable-cgipath=/index.cgi
[root@localhost]# make
[root@localhost]# make install-strip
[root@localhost]# cd /home/qadmin/html/qmailadmin
[root@localhost]# mv qmailadmin qmailadmin.cgi
[root@localhost]# ln -sf qmailadmin.cgi index.cgi


4. 버츄얼설정

ServerName mail.foobar.com
DocumentRoot /home/qadmin/html/qmailadmin


※ 웹으로 접속해 봅니다. 접속 주소는 http://mail.foobar.com/ 입니다.

큐메일 서버 구축 #6 - qmail과 vpopmail 시작

드디어 qmail과 vpopmail 설치가 모두 완료되었습니다.
한마디로 메일서버 구축이 완료되었단 말이겠지요 ^^*
이제 메일서버를 시작하고 정상적으로 접속이 되는지 확인을 해보도록 하겠습니다.

1. 서버 시작하기
[root@localhost]# /etc/rc.d/init.d/qmail start
Starting qmail


2. smtp 확인
smtp 확인은 telnet으로 하면 되며 smtp 포트인 25번으로 접속을 하시면 됩니다.
아래와 같이 나온다면 정상적으로 smtp 서버가 구축된 것입니다.
[root@localhost]# telnet localhost 25
Trying 127.0.0.1...
Connected to mail.foobar.com (127.0.0.1).
Escape character is '^]'.
220 mail.foobar.com ESMTP
quit (필자가 telnet에서 빠져나오기 위해 타이핑 한 부분)
221 mail.foobar.com
Connection closed by foreign host.

※ 정상적으로 smtp 서버가 구축이 되지 않은 경우
[root@localhost]# telnet localhost 25
Trying 127.0.0.1...
Connected to mail.foobar.com (127.0.0.1).
Escape character is '^]'.
Connection closed by foreign host.

만약 위처럼 정상적으로 접속이 안되는 경우에는 qmail script의 softlimit 값을 늘려줘 보시기 바랍니다.
[root@localhost]# 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 72000000 \
/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 2>&1
[root@localhost]# /etc/rc.d/init.d/qmail restart
Restarting qmail:
* Stopping qmail-smtpd.
* Sending qmail-send SIGTERM and restarting.
* Restarting qmail-smtpd.


3. pop3 확인
pop3 확인도 smtp와 마찬가지로 telnet으로 하시면 되며, pop3 포트인 110으로 접속하시면 됩니다.
[root@localhost]# telnet localhost 110
Trying 127.0.0.1...
Connected to mail.foobar.com (127.0.0.1).
Escape character is '^]'.
+OK <8595.1151652640@foobar.com>
quit (필자가 telnet에서 빠져나오기 위해 타이핑 한 부분)
+OK
Connection closed by foreign host.

※ 정상적으로 pop3 서버가 구축이 되지 않은 경우
[root@localhost]# telnet localhost 110
Trying 127.0.0.1...
Connected to mail.foobar.com (127.0.0.1).
Escape character is '^]'.
Connection closed by foreign host.

만약 위처럼 접속이 안되는 경우 smtp와 마찬가지로 pop3 script의 softlimit 값을 늘려주시기 바랍니다.
[root@localhost]# vi /var/qmail/supervise/vpop/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 72500000 \
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup foobar.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@localhost]# /etc/rc.d/init.d/qmail restart
Restarting qmail:
* Stopping qmail-smtpd.
* Sending qmail-send SIGTERM and restarting.
* Restarting qmail-smtpd.

※ 만약 softlimit 값을 늘려줬어도 동일한 문제가 일어난다면 처음부터 다시 확인해보시기 바랍니다.
설치가 잘못된 경우일 가능성이 매우 높습니다.

큐메일 서버 구축 #5-2 - vpopmail + mysql 설치

이 강좌는 vpopmail의 도메인과 사용자를 mysql database에서 관리하는 방법 입니다.
2003년에 작성된 강좌라 비공개로 해두었는데, 생각보다 많은 분들께서 강좌를 공개해달라고
이메일과 쪽지로 연락을 주시기에 다시 강좌로 쓰게 되었습니다.
예전에는 mysql을 연동하는 방법이 꽤 귀찮은 작업이 많았는데, vpopmail의 버전이 5.4로
올라오면서 기존 roaming을 이용하는 방법과 크게 다른 작업을 하실 내용이 없습니다.
거의 대부분의 내용이 중복되는 사항이니 어쩌면 '뭐가 달라?' 라고 하시는 분이 계실지도 모르겠습니다.
다만 주의사항이 있다면 vpopmail을 설치하기 전에 mysql이 먼저 설치가 되어 있어야 됩니다.

1. 유저, 그룹 추가
vpopmail 운영을 위한 유저와 그룹을 생성하셔야 됩니다.
※ 아래 -r 옵션은 시스템 계정(uid 500미만)으로 유저를 생성하겠다는 의미 입니다.
[root@localhost]# groupadd -r vchkpw
[root@localhost]# useradd -r -g vchkpw vpopmail
[root@localhost]# mkdir -p /home/vpopmail/etc/
[root@localhost]# chmod 755 /home/vpopmail

※ vpopmail의 기본디렉토리는 /home/vpopmail/ 입니다.

2. vpopmail 설치 (최신버전: http://sourceforge.net/projects/vpopmail/)
[root@localhost]# chmod 777 /home/vpopmail/etc/
[root@localhost]# touch /home/vpopmail/etc/tcp.smtp
[root@localhost]# wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.17.tar.gz
[root@localhost]# tar xfz vpopmail-5.4.17.tar.gz
[root@localhost]# cd vpopmail-5.4.17
[root@localhost]# ./configure \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=15 \
--enable-auth-logging=y \
--enable-logging=e \
--enable-auth-module=mysql
[root@localhost]# make
[root@localhost]# make install-strip
[root@localhost]# chmod 755 /home/vpopmail/etc/
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/

※ 위 configure 옵션으로 pop3 인증후 15분동안 아무런 서버 사용이 없으면 자동으로 relay를 닫아
open relay가 되어 스패머들의 타겟이 되는것을 막도록 합니다.
그리고 tcp.smtp 릴레이 파일을 임시생성하는 이유는 위 옵션에 파일경로를 지정해줬기 때문입니다.
자동설정을 사용하지 않고 굳이 tcpserver-file 경로를 지정해주는 이유는 아무런 옵션이 없는 경우
시스템에서 자동으로 찾게 되는데, 이런 경우 /etc/tcp.smtp를 대부분 찾기 때문 입니다.

그리고 mysql을 소스컴파일 설치한 경우 mysql library를 못찾는 머신이 있을겁니다.
그런 경우에는 아래와 같이 library option을 추가로 넣어주시면 됩니다.
--enable-incdir=/mysql/path/to/include \
--enable-libdir=/mysql/path/to/lib


3. mysql db 추가
[root@localhost]# mysql -u root -p mysql
mysql> create database vpopmail;
mysql> insert into user (host, user, password) values('localhost','vpopmail',password('1234'));
mysql> insert into db values('localhost','vpopmail','vpopmail','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

※ 위 insert문은 mysql 5.0 기준이므로, db 추가는 데이터베이스 강좌를 참조하시기 바랍니다.

4. 기본 도메인 설정, MySQL 설정, SMTP 릴레이 설정
vpopmail 5.2.4 버전부터는 기본도메인 설정옵션인 --enable-default-domain이 사라지고
~vpopmail/etc/defaultdomain 에서 관리되며, vpopmail 5.4.x 버전부터는 mysql과 연동시 했던
기존 vmysql.c 파일을 수정하던 작업이 사라지고 ~vpopmail/etc/vpopmail.mysql에서
mysql의 관련 정보를 적용시킬 수 있습니다.
[root@localhost]# echo "foobar.com" > /home/vpopmail/etc/defaultdomain
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/defaultdomain
[root@localhost]# chmod 640 /home/vpopmail/etc/defaultdomain
[root@localhost]# vi /home/vpopmail/etc/vpopmail.mysql
localhost|0|vpopmail|1234|vpopmail
[root@localhost]# chmod 640 /home/vpopmail/etc/vpopmail.mysql
[root@localhost]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.2:allow,RELAYCLIENT=""
[root@localhost]# chmod 640 /home/vpopmail/etc/tcp.smtp
[root@localhost]# /home/vpopmail/bin/clearopensmtp

※ 위에서 clearopensmtp를 해주는 이유는 tcp.smtp를 이용해 tcp.smtp.cdb 파일을 생성하기 위함입니다.

5. crontab 설정
clearopensmtp를 자동으로 한번씩 실행해주기 위해 crond 데몬을 이용 합니다.
필자는 15분에 한번씩 실행되도록 설정하겠습니다.
[root@localhost]# crontab -e
*/15 * * * * /home/vpopmail/bin/clearopensmtp


6. qmail smtp 스크립트 변경
tcp.smtp 파일이 변경되었으므로 qmail을 설치할 때 작성한 run script중 하나를 수정해줘야 됩니다.
[root@localhost]# 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 2>&1


6. vpopmail을 위한 디렉토리와 스크립트 생성
[root@localhost]# mkdir /var/qmail/supervise/vpop
[root@localhost]# 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 -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup foobar.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@localhost]# chmod 755 /var/qmail/supervise/vpop/run


7. 도메인과 메일계정 생성
[root@localhost]# /home/vpopmail/bin/vadddomain foobar.com
[root@localhost]# /home/vpopmail/bin/vadduser webmaster@foobar.com 1234

※ vadddomain실행시 나오는 패스워드는 qmailadmin에서 사용할 비밀번호 입니다.
또한 vadddomain [도메인] [postmaster 비밀번호] 로도 사용가능합니다.
vadduser 사용법은 vadduser [메일계정] [비밀번호] 입니다.

큐메일 서버 구축 #5-1 - vpopmail(roaming) 설치

이 강좌는 여러가지 vpopmail 운영방법중 vpopmail의 roaming을 이용하는 방법 입니다.

1. 유저, 그룹 추가
vpopmail 운영을 위한 유저와 그룹을 만들어주어야 됩니다.
※ 아래 -r 옵션은 시스템 계정(uid 500미만)으로 유저를 생성하겠다는 의미 입니다.
[root@localhost]# groupadd -r vchkpw
[root@localhost]# useradd -r -g vchkpw vpopmail
[root@localhost]# mkdir -p /home/vpopmail/etc/
[root@localhost]# chmod 755 /home/vpopmail

※ vpopmail의 기본디렉토리는 /home/vpopmail/ 입니다.

2. vpopmail 설치 (최신버전 : http://sourceforge.net/projects/vpopmail/)
[root@localhost]# chmod 777 /home/vpopmail/etc/
[root@localhost]# touch /home/vpopmail/etc/tcp.smtp
[root@localhost]# wget http://jaist.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.13.tar.gz
[root@localhost]# tar xfz vpopmail-5.4.13.tar.gz
[root@localhost]# cd vpopmail-5.4.13
[root@localhost]# ./configure \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=15 \
--enable-auth-logging=y \
--enable-logging=e
[root@localhost]# make
[root@localhost]# make install-strip
[root@localhost]# chmod 755 /home/vpopmail/etc/
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/

※ 위 configure 옵션으로 pop3 인증후 15분동안 아무런 서버 사용이 없으면 자동으로 relay를 닫아
open relay가 되어 스패머들의 타겟이 되는것을 막도록 합니다.
그리고 tcp.smtp 릴레이 파일을 임시생성하는 이유는 위 옵션에 파일경로를 지정해줬기 때문입니다.
굳이 tcpserver-file을 지정해주는 이유는 옵션으로 넣어주지 않으면 시스템에서 자동으로 찾게되는데
정상적으로 smtp 릴레이 파일을 찾는 경우도 있지만 릴레이 파일을 정상적으로 찾지 못하는 머신을
간혹 세팅해본 경험이 있기 때문입니다.

3. 기본 도메인 설정 및 SMTP 릴레이 설정
vpopmail 5.2.4 버전부터는 default-domain이 설치옵션에서 사라지고 파일로 적용되고 있습니다.
default-domain의 파일은 ~/vpopmail/etc/defaultdomain 입니다.
[root@localhost]# echo "foobar.com" > /home/vpopmail/etc/defaultdomain
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/defaultdomain
[root@localhost]# chmod 640 /home/vpopmail/etc/defaultdomain
[root@localhost]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.2:allow,RELAYCLIENT=""
[root@localhost]# chmod 640 /home/vpopmail/etc/tcp.smtp
[root@localhost]# /home/vpopmail/bin/clearopensmtp

※ 위에서 clearopensmtp를 해주는 이유는 tcp.smtp를 이용해 tcp.smtp.cdb 파일을 생성하기 위함입니다.

4. crontab 설정
clearopensmtp를 자동으로 한번씩 실행해주기 위해 crond 데몬을 이용 합니다.
필자는 15분에 한번씩 실행되도록 설정하겠습니다.
[root@localhost]# crontab -e
*/15 * * * * /home/vpopmail/bin/clearopensmtp


5. qmail smtp 스크립트 변경
tcp.smtp 파일이 변경되었으므로 qmail을 설치할 때 작성한 run script중 하나를 수정해줘야 됩니다.
[root@localhost]# 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 2>&1


6. vpopmail을 위한 디렉토리와 스크립트 생성
[root@localhost]# mkdir /var/qmail/supervise/vpop
[root@localhost]# 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 -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup foobar.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@localhost]# chmod 755 /var/qmail/supervise/vpop/run


7. 도메인과 메일계정 생성
[root@localhost]# /home/vpopmail/bin/vadddomain foobar.com
[root@localhost]# /home/vpopmail/bin/vadduser webmaster@foobar.com 1234

※ vadddomain실행시 나오는 패스워드는 qmailadmin에서 사용할 비밀번호 입니다.
또한 vadddomain [도메인] [postmaster 비밀번호] 로도 사용가능합니다.
vadduser 사용법은 vadduser [메일계정] [비밀번호] 입니다.

큐메일 서버 구축 #4 - qmail 부트 스크립트

큐메일 부트 스크립트 입니다. 아래 내용을 그대로 긁어서 사용하시면 됩니다.
혹은 http://pkg.tini4u.net/mta/qmail/source/ 에서 받으실 수 있습니다.
[root@localhost]# wget http://pkg.tini4u.net/mta/qmail/source/qmail_init.tar.gz
[root@localhost]# tar xfpz qmail_init.tar.gz
[root@localhost]# mv qmail /etc/rc.d/init.d/qmail
[root@localhost]# chkconfig --add qmail
[root@localhost]# chkconfig --level 345 qmail on


#!/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 <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

큐메일 서버 구축 #3 - qmail 설치

큐메일은 AUTH 릴레이를 여러가지와 연동해서 사용을 할 수 있습니다.
- 시스템계정 (/etc/passwd)
- cmd5checkw (/etc/poppasswd)
- checkpassword + mysql (유저 데이터를 db에 저장)
- vchkpw (vpopmail pop 유저 데이터를 사용, db 또는 vpasswd)
위와 같이 여러가지를 이용해서 사용할 수가 있습니다.

필자는 AUTH 릴레이를 vchkpw에 맡기고, 큐메일은 사용만 가능하도록 설치를 할 것입니다.

1. 칵테일패치 (최신버전 : http://people.kldp.org/~eunjea/qmail/patch/)
칵테일 패치는 qmail.kldp.org의 운영자인 임은재 님께서 제작하신 패치 입니다.
큐메일을 사용하는데 있어 여러가지 편리한 패치가 종합적으로 되어 있기 때문에
일일히 패치를 하나씩 찾아 해주는 번거로움을 줄이기 위해 필자는 칵테일 패치를 하겠습니다.
[root@localhost]# wget ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz
[root@localhost]# wget http://people.kldp.org/~eunjea/qmail/patch/qmail-ej-cocktail-14.tar.gz
[root@localhost]# tar xfz qmail-1.03.tar.gz
[root@localhost]# tar xfz qmail-ej-cocktail-14.tar.gz
[root@localhost]# cd qmail-1.03
[root@localhost]# patch -p1 < ../qmail-ej-cocktail-14/cocktail.patch
patching file Makefile
patching file Makefile-cert.mk
patching file TARGETS
patching file base64.c
...
...

※ 만약 패치도중 hunk나 fail이 나온다면 큐메일 바닐라 소스가 아닌 것입니다.
반드시 큐메일 바닐라 소스를 이용하시기 바랍니다.

2. 큐메일설치 (최신버전 : ftp://ftp.eu.uu.net/pub/unix/mail/qmail/)
이제 본격적인 큐메일 설치작업을 하도록 하겠습니다.

- concurrency limit 파일 수정
큐메일 설치작업을 하기전 수정할 소스가 있습니다.
바로 위에서 패치했던 파일중 conf-spawn 파일 입니다.
이 파일의 기본값은 1000 입니다만, 각 OS에 따라서 설정값이 다릅니다.
필자는 레드헷을 이용하고 있기 때문에 1000을 509로 수정하도록 하겠습니다.
[root@localhost]# vi conf-spawn
509

This is a silent concurrency limit. You can't set it above 255. On some
systems you can't set it above 125. qmail will refuse to compile if the
limit is too high.


- 유저, 그룹 추가
qmail 운영을 위한 유저와 그룹을 만들어주어야 됩니다.
각 OS에 필요한 유저및 그룹은 INSTALL.ids 파일에 명시되어 있습니다.
※ 아래 -r 옵션은 시스템 계정(uid 500미만)으로 유저를 생성하겠다는 의미 입니다.
[root@localhost]# groupadd -r nofiles
[root@localhost]# useradd -r -g nofiles -d /var/qmail/alias alias
[root@localhost]# useradd -r -g nofiles -d /var/qmail qmaild
[root@localhost]# useradd -r -g nofiles -d /var/qmail qmaill
[root@localhost]# useradd -r -g nofiles -d /var/qmail qmailp
[root@localhost]# groupadd -r qmail
[root@localhost]# useradd -r -g qmail -d /var/qmail qmailq
[root@localhost]# useradd -r -g qmail -d /var/qmail qmailr
[root@localhost]# useradd -r -g qmail -d /var/qmail qmails


- 큐메일 설치
[root@localhost]# make
[root@localhost]# make setup check
[root@localhost]# ./config
Your hostname is mail.foobar.com.
Your host's fully qualified name in DNS is mail.foobar.com.
Putting mail.foobar.com into control/me...
Putting foobar.com into control/defaultdomain...
Putting foobar.com into control/plusdomain...

Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
192.168.0.2: Adding mail.foobar.com to control/locals...

If there are any other domain names that point to you,
you will have to add them to /var/qmail/control/locals.
You don't have to worry about aliases, i.e., domains with CNAME records.

Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to those hosts.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

※ 정상적으로 config가 되지 않았을 경우
[root@localhost]# ./config
Your hostname is mail.foobar.com.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
You will have to set up control/me yourself.

※ 만약 위처럼 메시지가 나온다면 Network설정과 DNS 문제 입니다.
혹 DNS가 설치되어 있고 DNS 서버에 이름이 정상적으로 등록되어 있다면 Network 설정을 확인해야됩니다.
[root@localhost]# cat /etc/resolv.conf
search mail.foobar.com
nameserver 168.126.63.1
nameserver 168.126.63.2

※ 필자는 search 부분을 등록하지 않은 서버를 세팅할 때 고생한적이 있습니다.
resolv에서 search [domain name] 부분은 반드시 있어야 됩니다.

[root@localhost]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.1 mail.foobar.com mail

[root@localhost]# cat /etc/sysconfig/network
...
HOSTNAME=mail.foobar.com
...

※ 호스트네임 부분 또한 반드시 있어야 됩니다.
만약 위의 모든 세팅이 정상적인데도 config가 제대로 되지 않는다면 아래와 같이 해주면 됩니다.
[root@localhost]# ./config-fast mail.foobar.com


- 큐메일 설치 확인
큐메일이 정상적으로 설치되었다면 /var/qmail/control/ 디렉토리에 각종 설정파일이 생성이 됩니다.
[root@localhost]# ls -l /var/qmail/control
-rw-r--r-- 1 root root 11 6월 30 11:42 defaultdomain
-rw-r--r-- 1 root root 27 6월 30 11:42 locals
-rw-r--r-- 1 root root 17 6월 30 11:42 me
-rw-r--r-- 1 root root 11 6월 30 11:42 plusdomain
-rw-r--r-- 1 root root 27 6월 30 11:42 rcpthosts


- 컨트롤 파일 수정
기본적인 설정 파일을 그대로 사용하셔도 상관은 없습니다만 필요 없는 부분이 생성되어 있는
경우가 많이 있으므로 필자는 몇가지 설정파일을 수정해주도록 하겠습니다.
[root@localhost]# vi /var/qmail/control/defaultdomain
foobar.com

[root@localhost]# vi /var/qmail/control/locals
localhost

[root@localhost]# vi /var/qmail/control/me
mail.foobar.com

[root@localhost]# vi /var/qmail/control/plusdomain
mail.foobar.com

[root@localhost]# cat /dev/null > /var/qmail/control/rcpthosts


- 큐메일 데몬을 위한 디렉토리와 스크립트 파일 생성
[root@localhost]# vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/

[root@localhost]# chmod 755 /var/qmail/rc
[root@localhost]# mkdir -p /var/qmail/supervise/qmail-send/log
[root@localhost]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[root@localhost]# chmod 1755 /var/qmail/supervise/qmail-send
[root@localhost]# chmod 1755 /var/qmail/supervise/qmail-smtpd

[root@localhost]# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc

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

[root@localhost]# 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 /etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

[root@localhost]# 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

[root@localhost]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@localhost]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@localhost]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[root@localhost]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run


- 큐메일을 위한 로그 디렉토리 생성
[root@localhost]# mkdir -p /var/log/qmail/smtpd
[root@localhost]# chown qmaill /var/log/qmail /var/log/qmail/smtpd


- Alias 설정
큐메일은 root로 메일을 배달하지 않으므로 반드시 알리아즈를 만들어줘야 합니다.
그리고 postmaster, mailer-daemon으로 오는 메일도 알리아즈 해서 사용하면 편리하겠죠.
아래는 server@foobar.com 이란 주소로 알리아즈 시킨 것입니다.
[root@localhost]# echo server@foobar.com > /var/qmail/alias/.qmail-root
[root@localhost]# echo server@foobar.com > /var/qmail/alias/.qmail-postmaster
[root@localhost]# echo server@foobar.com > /var/qmail/alias/.qmail-mailer-daemon
[root@localhost]# chmod 644 /var/qmail/alias/*


- qmail 바이너리 파일 소프트 링크
MTA를 필요로 하는 많은 프로그램이 아직까지 sendmail를 사용하고 있기 때문에
qmail 바이너리 파일을 sendmail로 링크해주는것이 좋습니다.
[root@localhost]# ln -s /var/qmail/bin/sendmail /usr/lib
[root@localhost]# ln -s /var/qmail/bin/sendmail /usr/sbin


- qmail 시작
[root@localhost]# ln -s /var/qmail/supervise/qmail-send /service/
[root@localhost]# ln -s /var/qmail/supervise/qmail-smtpd /service/

큐메일 서버 구축 #2 - ucspi-tcp, daemontools 설치

큐메일은 혼자서 작동하지 않기 때문에 다른 데몬과 연계해서 실행을 해야만 합니다.
큐메일의 실행은 xinetd와 tcpserver로 할 수 있으나 필자는 보안과 속도면에서 큐메일과 잘 맞는
tcpserver로 구축을 하도록 하겠습니다.

1. ucspi-tcp 설치 (최신버전 : http://cr.yp.to/ucspi-tcp/install.html)
ucspi-tcp는 tcpserver와 tcpclient 전송제어 프로토콜(TCP client-server)을 구축하는데
좀더 편리하게 사용할 수 있도록 제작된 command-line 툴 입니다.
이 프로그램의 자세한 정보는 http://cr.yp.to/ucspi-tcp.html 이곳을 참조하시면 되겠습니다.

※ 본강좌의 이번편은 간단한 설치작업이지만 설치하기전에 반드시 체크해야될 사항이 있습니다.
최근의 OS에서는 gcc 버전이 3(or 4)이상을 사용하기 때문에 소스를 그대로 설치하게 되면
중간에 에러가 나게 됩니다. 따라서 헤더파일을 약간 수정해주어야 됩니다.
이는 gcc 버전이 업데이트 되었기 때문이니 만약 gcc버전이 2이하라면 수정하지 않아도 됩니다.
[root@localhost]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
[root@localhost]# tar xfz ucspi-tcp-0.88.tar.gz
[root@localhost]# cd ucspi-tcp-0.88

필자는 gcc버전이 3.4.5 이므로 파일의 최상단에 #include 를 추가해 줍니다.
[root@localhost]# vi error.h
#include
#ifndef ERROR_H
#define ERROR_H
...
...
[root@localhost]# make
[root@localhost]# make setup check


2. daemontools 설치 (최신버전 : http://cr.yp.to/daemontools/install.html)
[root@localhost]# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
[root@localhost]# mkdir /package
[root@localhost]# chmod 1755 /package
[root@localhost]# tar xfz daemontools-0.76.tar.gz -C /package
[root@localhost]# cd /package/admin/daemontools-0.76

필자는 gcc버전이 3.4.5 이므로 파일의 최상단에 #include 를 추가해 줍니다.
[root@localhost]# vi src/error.h
/* Public domain. */
#include
#ifndef ERROR_H
#define ERROR_H
...
...
[root@localhost]# package/install


※ 만약 daemontools를 설치하는데 아래와 같은 에러가 나는 경우가 있습니다.
./compile tai64nlocal.c
tai64nlocal.c: In function `main':
tai64nlocal.c:54: warning: assignment makes pointer from integer without a cast
tai64nlocal.c:55: dereferencing pointer to incomplete type
...

이것은 tai64nlocal.c의 두번째 줄 #include 에서 에러가 나는것 입니다.
따라서 이 부분을 #include 로 수정해주면 정상적으로 설치가 가능합니다.

큐메일 서버 구축 #1 - 프롤로그

1. qmail 이란?
일반적으로 Unix/Linux 기반의 MTA는 Sendmail을 많이 사용하고 있습니다.
그러나 Sendmail은 프로그램이 단일화 되어 보안에 상당히 취약하며
사용함에 있어서도 불편한점이 많고 또 많은 전문지식을 필요로 합니다.
하지만 qmail은 모듈방식을 채택하여 사용하기 편리하며 그 기능또한 매우 다양 합니다.

2. qmail 제작자와 제작 의도
qmail은 D. J. Bernstein 교수가 제작했으며 큐메일은 보안에 매우 강력합니다.
또한 하루에 수십, 수백 만통의 메일을 배달해야만 하는 대형 서버들의 qmail 사용과
제작자의 보안에 대한 보장은 그 신뢰도를 더해 주고 있습니다.

3. qmail 메일의 특징과 장점

- 안전성
qmail을 통해 시스템에 침입할 수 없습니다.
실제 qmail은 발표된 이후로 아직까지 알려진 보안 사고가 없으며 Bernstein 교수가 qmail을
만들게 된 동기 역시 정기적으로 알려지곤 하는 Sendmail이나 다른 MTA의 보안홀 때문이라고 합니다.

- 신뢰성
qmail은 메세지를 절대 잃어버리는 일이 없습니다.
qmail은 NFS 파일 시스템상에서도 안전한 Maildir 형태 메일함의 선구자입니다.
Maildir 형태는 qmail에서 처음으로 사용하기 시작한 메일함 형식으로 배달이 이루어 지고 있는 동안에
시스템이 다운되더라도 파일 시스템에 문제가 생기지 않는 유일한 메일함이며 NFS 파일 시스템상에서
동시에 여러개의 메일이 배달되고 있는 동안에도 사용자가 메일을 읽을 수 있는 안전한 메일함입니다.

- 속도
qmail은 메세지를 Sendmail보다 빠르게 처리하면서 안정성을 잃지 않습니다.
특히 수 많은 메일을 동시에 배달해야 하는 메일링 리스트의 경우 가장 빠른 성능을 보이게 됩니다.
한 예를 들면 1000개 이상의 각기 다른 호스트에 메일을 배달하는데 76초 밖에 걸리지 않기도 합니다.

- 간단함
qmail은 다른 어떠한 MTA 보다도 작습니다.
포워딩, 알리아싱, 메일링 리스트 메카니즘을 독립적으로 가지고 있는 다른 MTA들과는 다르게
qmail은 한가지의 간단한 포워딩 메카니즘을 사용해 모든 기능을 구현하였습니다.
다른 MTA가 "빠르고 불안전한 -> 느린 큐" 방식의 배달 방식을 사용하는것 과는 달리
qmail은 새로운 아이템을 즉시 큐에 넣으므로 "빠른 큐"라는 하나의 배달 방식만을 사용합니다.

- 능률
qmail은 오래된 486 16M 시스템에서 하루에 70,000통 이상의 메일을 처리하는데
무리가 없을 정도로 그 성능과 능률이 뛰어납니다.

- 메일링 리스트
qmail은 일반유저가 메일링 리스트를 제어할 수 있기 때문에 관리자의 업무가 줄어드는데 도움을 줍니다.

- 가상 호스트 구축
쉬운 가상 호스트 구축으로 qmail은 다중 도메인 지원의 선구자입니다.

- 직관적인 관리
qmail은 최소한의 작업으로 관리가 손쉽습니다.

- 유연한 배달 프로그램
qmail은 외부 메일 프로세서를 위한 강력한 인터페이스를 제공합니다.

- 다양한 OS 지원
qmail은 동일한 소스로 포팅이 필요 없이 대부분의 UNIX 시스템을 지원합니다.
AIX, BSD/OS, FreeBSD, HP/UX, Irix, Linux, NetBSD, OpenBSD, OSF/1, SunOS, Solaris, 기타..

4. qmail의 모듈화 디자인
qmail은 Bernstein 교수의 다른 소프트웨어들 처럼 특정한 목적을 가지고 있는 작은 프로그램들의
모음이라 할 수 있는데 예를 들어 네트워크로 부터의 메일 수신은 qmail-smtpd가
외부로의 전송은 qmail-remote가 메일큐의 관리는 qmail-queue가 전담하는 식입니다.

5. 다양한 애드언과 패치
qmail의 모듈화된 구조는 새로운 기능을 추가하기 위한 다양한 에드언들의 개발을 쉽게 함으로써
이미 수많은 에드언들이 개발/제공되고 있으며, 관련 프로젝트도 많이 진행되고 있습니다.
몇가지 예를 들어 보겠습니다.

- vpopmail
vpopmail은 qmail하에서 가상 도메인/유저를 쉽게 관리하는 통합 관리 도구로 qmailadmin과
같이 사용함으로써 모든 관리를 웹으로 편리하게 할 수 있는 소프트웨어 입니다.

- qmail-ldap
LDAP와 qmail의 연동을 위한 패키지와 문서와 qmail이 어떻게 메세지를 처리하는지 이해하는데
큰 도움이 되는 그림 (big qmail picture)을 제공합니다.

- qmail + mysql
qmail은 mysql과 연동해서 사용할 수 있으므로 손쉬운 웹기반 인터페이스를 제작하는데 유용합니다.

- qmail-Scanner
qmail용 메일 바이러스 검사기로 대부분의 유료 바이러스 검사기와 연동하여 사용할 수 있습니다.

- Maildrop
procmail을 대체하는 로컬 MDA, 필터링 도구와 연동하여 강력한 필터링 서비스가 가능합니다.

- ezmlm
qmail의 제작자가 만든 메일링 리스트 관리 도구로 설정과 관리가 매우 간단하고 쉽습니다.

- qmail-smtpd-auth
유동 IP 사용자들의 SMTP 릴레이 지원을 위한 패치

이 외에도 필요에 따라 사용할 수 있는 수많은 에드언과 패치가 존재하며, 관련 정보와 뉴스들은
http://qmail.org (영문)의 웹 사이트와 qmail 메일링 리스트등과 한국 qmail 홈페이지에서
찾아 볼 수 있으며 qmail과 MySQL을 연동한 한글 웹메일 프로젝트도 진행중입니다.
qmail 메일링 리스트의 주소는 qmailannounce-subscribe(at)list.cr.yp.to 입니다.

6. qmail 설치
qmail 을 설치할 때 구성할 수 있는 경우의 수는 매우 다양합니다.
어떤 인증 모듈을 사용하는지, IMAP 지원 여부, 스팸 필터링 기능 지원 여부, qmailAdmin 지원 여부,
Webmail 지원 여부 등등에 따라 수많은 경우가 있을 수 있습니다.

2008. 9. 1.

APM 설치 패키지 버전 및 Config 설정

[Apache]
./configure --prefix=/app1/web/apache2055-php --enable-mods-shared=most --enable-modules=so --with-mpm=worker --enable-module=vhost_alias

[MySQL]
./configure --prefix=/usr/local/mysql --with-charset=euckr --localstatedir=/usr/local/mysql/data --with-berkeley --enable-assembler

[PHP]
./configure --with-apxs2=/app1/web/apache2055-php/bin/apxs
--with-mysql=/usr/local/mysql
--with-config-file-path=/app1/web/apache2055-php/conf
--with-exec-dir=/usr/local/apache2055-php/bin --enable-track-vars
--enable-trans-sid --enable-thread-safe-client

[Package]
httpd-2.0.55.tar.gz , mysql-5.0.27.tar.gz, php-4.4.4.tar.gz