Posted
Filed under Linux

sendmail 구동시 권한 설정
chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue


본 자료 출처 : http://www.kjist.ac.kr/new/com-services/manual/manual_02.html





1. 자료 받기






2. 압축을 풉니다.




    shell> gzip -cd sendmail-8.10.1.tar.gz |tar xvf -



3. 문서 확인




    README Sendmail 에 대한 소개와, 각 디렉토리 내용소개. 유의할 점.
    INSTALL 설치방법에 대한 개괄.
    FAQ 자주 물어보는 질문들.
    RELEASE_NOTES 새로운 버젼이 나올 때마다 추가되는 사항에 대한 정보.
    KNOWNBUGS 알려진 버그에 대한 정보.



4. 컴파일




    shell> cd sendmail sendmail-8.10.1
    shell> sh Build --> sendmail compile
    shell> /etc/rc.d/init.d/sendmail stop shell> cd cf/cf --> cf/cf 디렉토리로 이동

cf/cf 디렉토리에서, generic-osname_version.mc 와 같은 형식의 file 들 중 , 자신의 os name 과 version에 가장 가까운 것을 선택하여 config.cf 로 복사한다.
(참고: % uname -a 명령으로 자신의 os 종류를 알수 있다. )

    shell> cp generic-linux.mc sendmail.mc shell> vi sendmail.mc
    shell> sh Build sendmail.cf -> sendmail.mc 를 바탕으로 sendmail.cf 를 만든다
sendmail.cf 와 컴파일된 sendmail 을 설치하기 전에, 만일을 대비해 이전에 사용하던sendmail 과 sendmail.cf 를 다음과 같이 다른곳에 복사해둔다.
    shell> cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.8.9.3 shell> cp /usr/lib/sendmail /usr/lib/sendmail.8.9.3
참고: OS 에 따라서, sendmail.cf 와 sendmail 의 위치가 다를수 있다. 일반적으로 sendmail.cf 는 /etc /etc/mail sendmail 은 /usr/sbin /usr/lib 등에 위치한다.
    shell> cp sendmail.cf /etc/mail/sendmail.cf shell> cd ../../sendmail shell> sh Build install
다음은 makemap 디렉토리로 이동하여 makemap 을 설치하는 과정이다. newaliases 등의 명령어로 aliases 등의 db file 들을 갱신할때 필요하다. sendmail 을 실행할때, "class hash not available" 등의 에러메세지가 나온다면, 대부분 makemap 의 문제로 makemap 을 새로 설치할 필요가 있다.
    shell> cd ../makemap shell> sh Build --> makemap 설치를 위한 컴파일
    shell> sh Build installshell> cd /etc/mail shell> touch access relay-domains
access파일은 spam relay를 IP나 HOSTNAME으로 제어하기 위하여 생성된 것이며
relay-domain은 domain name별로 제어하기 위해서다.
    shell> vi /etc/mail/local-host-names abc
    abc.domainname.com
    localhost
    shell> /usr/sbin/makemap hash access < access shell> chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue shell> chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue shell> newaliases shell> /usr/lib/sendmail -bi --> 제대로 설치되었는지 확인. /etc/mail/aliases: 3 aliases, longest 10 bytes, 52 bytes total
만일, /etc/sendmail.cf 를 찾는 err 가 나오면
    shell> ln -s /etc/mail/sendmail.cf /etc/sendmail.cf shell> /etc/rc.d/init.d/sendmail start



<sendmail 설정하기>

Sendmail에서 가장 중요하고도 어려운 부분이 sendmail.cf 파일의 설정입니다. O’Reilly사에서 Sendmail에 대한 전문서적이 나올 정도로 방대하고 다양한 기능을 가지고 있으며 사용법도 매우 다양합니다. Sendmail을 사용하기 위해 기본적으로 알아야 할 설정 파일들에 대해 살펴보겠습니다.





1. /etc/sendmail.cf
Sendmail의 가장 중요한 설정파일로 /etc 또는 /etc/mail 디렉토리에 자동으로 설치되어 있습니다. Sendmail.cf에 대한 자세한 내용은 Bryan Costales 와 Eric Allman이 집필한 O’Reilly의 Sendmail을 참고하십시요. 여기서는 간단히 메일서버를 관리하기 위한 몇 가지 설정에 대해서만 다루겠습니다.

    Fw/etc/mail/local-host-names

메일을 수신할 호스트 이름을 명시한 파일의 위치를 설정합니다.

    FR-o /etc/mail/relay-domains

relay-domains파일에는 Relay를 허용할 호스트의 이름을 설정합니다. 주석으로 처리하면 모든 IP에 대해서 Relay가 허용되므로 스팸메일과 같은 문제가 발생할 수도 있으므로 주의하시기 바랍니다.

    DnMAILER-DAEMON

Sendmail 서버가 에러메시지를 보내야 할 경우 보낸 사람의 이름을 결정합니다. 잘못된 메일이 되돌아 온 경우 FROM : Mail Delivery Subsystem <MAILER-DAEMON>과 같은 메시지를 보신적이 있을 것입니다.

    Kaccess hash /etc/mail/access

Relay를 허용하거나 거부할 특정 IP와 도메인을 설정하는 파일입니다. relay-domains보다 사용이 편리하므로 많이 사용됩니다.

    O ForwardPath=$z/.forward.$w:$z/.forward

여러 개의 메일을 가진 경우, 특정 메일계정으로 들어온 메일을 다른 메일로 곧바로 보내주는 포워딩 파일을 설정합니다.

사용자의 홈 디렉토리에 .forward라는 파일을 만들고 포워딩시킬 메일 주소를 입력하면 됩니다.

    # O MaxMessageSize=1000000

메일의 최대 크기를 결정합니다. 주석을 제거하면 설정한 크기(Byte단위)보다 큰 메일은 전송할 수 없게 됩니다. 지금 써준 1000000은 1메가로 제한한 메일 용량입니다.

    O QueueDirectory=/var/spool/mqueue

큐 디렉토리를 설정합니다.

    O Timeout.queuereturn=5d

메일을 보내려는 호스트에 문제가 생기면 메일은 큐 디렉토리에 저장됩니다. Sendmail 서버는 쌓인 메일을 상대방 호스트에 보내기 위해 주기적으로 접속을 시도하며, 일정한 기간이 지나면 메일을 다시 발송한 사람에게 되돌려 보냅니다. Sendmail이 메일을 보내려고 시도하는 기간을 설정하는 옵션으로 5d는 5일을 의미합니다.

    O Timeout.queuewarn=4h

큐 디렉토리에 쌓인 메일이 지정한 시간안에 전송되지 못할 경우 메일을 보낸 사람에게 경고 메일을 보냅니다. 기본값은 4h로 4시간안에 전송되지 못하면 보낸 사람에게 경고의 메일을 보냅니다.

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5u:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
T=DNS/RFC822/X-Unix,
A=procmail -Y -a $h -d $u

사용자계정에 대문자가 있는 경우에도 메일을 받을 수 있도록 설정하려면 Mlocal로 시작하는 부분을 찾아 F= 부분에 'u'를 추가합니다.



 2. /etc/mail/access
 




스 팸메일을 방지하기 위해 Relay를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한 파일입니다. 먼저 vi에디터나 emacs를 사용해 /etc/mail/access파일을 열고 릴레이를 허용하거나 거부할 IP 주소를 아래와 같이 입력합니다.

203.243.88      RELAY -> 203.243.88 네트워크에 속하는 C클래스의 IP주소에 대해서는 메일을 [보내기/받기]를 할 수 있지만 다른 IP주소에서는 메일을 받을 수만 있습니다.

spam.com      REJECT -> spam.com 도메인에 속한 모든 호스트에서 오는 메일은 완전히 거부됩니다.
이와 같이 설정한 후에는 아래의 명령으로 DB파일(access.db)을 만들어 줍니다.

    # cd /etc/mail
    # makemap hash access < access

위의 작업은 access 파일을 수정할 때마다 해주어야 하며, Sendmail을 다시 시작할 필요는 없습니다.

[Relay에 대하여]
그럼 간단하게 Relay에 대한 개념을 알아보겠습니다.

예를 들어 A라는 사람은 IP주소가 203.243.88.21이라는 컴퓨터에서 aroma@mail.linuxul.com이라는 메일을 사용한다고 가정하고, B라는 사람은 IP주소가 168.211.106.34인 컴퓨터에서 nea@yahoo.co.kr 이라는 메일을 사용한다고 가정합니다.

B가 A에게 메일을 보내면 메일은 203.249.88.21로 가는 것이 아니라 mail.linuxul.com서버의 /var/mail 디렉토리 밑에 aroma라는 파일로 복사가 됩니다. 그러면 A는 MUA 프로그램을 사용해 메일을 확인할 수 있지요. 그런데 여기서 중대한 문제점이 생겨나게 됩니다. 아무나 주소를 맞게 보내면 그냥 /var/mail에 쌓이게 되는 것이죠. 그래서 하드디스크가 메일로 꽉 차버리거나, 네트워크 전송량의 증가로 네트워크가 마비되는 경우가 생겨나게 됩니다. 이 문제를 막기 위해서 고안된 방법이 바로 Relay라는 방법입니다.

Relay에는 두 가지 방식이 있습니다.

    o 첫 번째는 메일을 보내는[송신] 컴퓨터의 제한
    o 두 번째는 메일을 받는[수신] 컴퓨터의 제한

Relay로 주로 쓰이는 방법은 메일을 확인하는 컴퓨터는 제한하지 않고 메일을 보내는 것을 제한하는 것입니다. 즉, 위의 그림과 같이 /etc/mail/access파일에 203.243.88의 C클래스를 허용 가능하게 해주면 203.243.88.21 처럼 허용 그룹에 들어 있는 컴퓨터에서는 메일을 보내고/받을 수가 있지만, 그룹에 들지 않은 168.211.106.34 라는 컴퓨터에서는 메일을 확인할 수만 있습니다. 또한 spam.com이라는 도메인에 속한 호스트에서 오는 메일 은 보내기와 받기가 모두 거부됩니다.
/etc/mail/relay-domains을 사용해도 됩니다. 하지만, 차이점은 relay-domains을 사용하면sendmail데몬을 다시 실행시켜 주어야 하지만 /etc/mail/access파일을 사용하면 다시 실행할 필요 없이 makemap hash /etc/mail/access < /etc/mail/access라고 실행만 시켜주면 됩니다.




3./etc/mail/local-host-names
 




메일을 수신할 호스트의 이름을 입력하는 파일로, Sendmail 8.9.x 버전이하에서 사용되었던 sendmail.cw 파일의 명칭이 Sendmail 8.10.x 버전부터는 local-host-names로 변경되었습니다. Sendmail 서버는 이곳에 적힌 호스트 의 이름으로 메일이 들어오면 더 이상 다른 서버로 메일을 보내지 않고 자신의 메일박스에 저장합니다. 아래와 같이 메일서버의 호스트이름을 입력하거나 여러 개의 가상호스트를 사용한다면 모두 입력해야 합니다.




4. /etc/aliases
 




특정 사용자에게 온 메일을 다른 사람에게 보내주거나, 메일링리스트를 작성해야 하는 경우에 사용되는 파일로 보안에 주의하여 사용해야 합니다. aliases 파일을 열어보면 시스템 계정들이 아래와 같이 root로 alias되어 있습니다.
또한 특정 사용자를 다른 사용자로 alias 시킬 수도 있습니다.




5. 메일링 리스트 작성하기
 




메일링리스트란 동일한 메일을 여러 사람에게 보내야 할 경우 사용되며, 그룹을 지정해 구성원들의 목록을 써주거나 특정 파일을 지정하는 방법 등으로 사용됩니다. 예를 들어 aroma, bulpeng, bibi와 같은 사용자들을 test1라는 그룹으로 지정해 보겠습니다.

vi편집기로 /etc/aliases 파일을 열고 아래의 라인을 추가한 후 저장합니다. 앞으로 test1에게 메일을 보내면 지정된 모든 사용자들에게 메일이 도착하게 됩니다.

    test1: aroma, bulpeng, bibi
다른 하나는 특정파일을 지정해 주는 방법으로 include 지시자를 사용한 후에 파일의 경로와 파일이름을 입력합니다.

    test2: :include:/etc/maillist/test2

    # cat /etc/maillist/test2
    aroma
    bulpeng
    bibi


파일을 수정한 후에는 newaliases 명령으로 aliases.db를 만들어 줍니다

    .# newaliases
    /etc/aliases: 40 aliases, longest 28 bytes, 434 bytes total

이제 test1 또는 test2로 메일을 보내면 지정된 사용자들(aroma, bulpeng, bibi)이 모두 메일을 받아볼 수 있습니다.



< MAIL Server에서의 한글 지원문제>
 




메일에서 사용되는 SMTP프로토콜은 기본적으로 7bit문자만을 기반으로 제작되었습니다. 하지만 한글의 경우 EUC-KR로 표현하면 8bit를 사용하기 때문에 문제가 생길 수 있습니다. 따라서 메일에서 사용하기 위해 한글의 7bit 표현방법인 ISO-2022-kr(RFC 1557)이 만들어 졌고 메일의 본문에 사용되었습니다(헤더에는 EUC-KR을 B나 Q인코딩 방법으로 인코딩해서 사용했습니다.).

하지만 대부분의 프로그램에서는 한글을 8bit표현방법인 EUC-KR을 사용했으므로 이 두 표현간의 변환을 해 주는 프로그램이 필요했습니다. 이 작업은 크게 MTA, MDA, MUA에서 해 줄 수 있습니다. MTA에서 변환을 해 주는 대표적인 프로그램이 sendmail 8.6.12h2입니다. 이 프로그램은 프로그램으로부터 8bit표현을 입력으로 받아서 다른 곳으로 전송할때 ISO-2022-kr로 변환한 후 전송을 하고, 네트웍을 통해 받은 ISO-2022-kr로 표현된 메일을 EUC-KR로 변환 후 메일박스에 저장하도록 만들어 졌습니다. 그래서 몇년전까지만 해도 대부분의 메일서버에서 sendmail 8.6.12h2를 사용했었습니다.

하지만 SMTP 프로토콜이 8bit문자를 지원하는 ESMTP 프로토콜로 변하면서 본문에서도 ISO-2022-kr대신에 EUC-KR을 사용하도록 표준이 바뀌었습니다. 하지만 이 안을 정식 표준으로 공표하지 않았고, 아직까지 인터넷에는 ISO-2022-kr 로 표현된 메일이 돌아다니기 때문에 이 메일을 EUC-KR로 변환해 주는 작업이 추가적으로 필요하게 되었습니다.

ISO-2022-kr을 EUC-KR로 변환해 주는 프로그램들은 UNIX환경에서는 많이 만들어 졌습니다. hconv와 hmconv가 대표적인 프로그램입니다. 이제 관리자가 해 줘야 하는일은 sendmail이 받은 메일을 메일박스로 저장하기 전에 이 프로그램을 통과하게 만들어서 ISO-2022-kr을 EUC-KR로 변환만 해 주면 되게 되었습니다. 이렇게 필터링을 가능하게 해 주는 대표적인 프로그램이 procmail입니다.

여기에서는 procmail을 이용하여 한글 메일을 처리하는 과정을 설명드리겠습니다. 여기에서 알아두셔야 할 내용중에 중요한 내용으로 MDA에 대한 이해입니다. MDA(Mail Delivery Agent)는 MTA(Mail Transfer Agent, 대표적인 예는 sendmail입니다.)

가 받은 메일의 최종적인 도착지가 현재 호스트인경우(sendmail의 경우 sendmail.cw를 참고하여 결정합니다.) 메일을 MDA에게 넘겨줍니다. 보통 시스템의 기본적인 MDA는 /bin/mail입니다. procmail은 /bin/mail대신에 사용할 수 있는 프로그램으로 필터링 기능이 강력하여 한글처리에 이용할 수 있습니다.
또 잘못 이해하시는 분들중에 procmail자체가 한글 디코딩을 해준다고 알고 계신분들이 많습니다. 이것은 잘못된 것입니다.
실제로 procmail도 한글 디코딩을 위해 다른 프로그램(보통 hcode나 hmconv를 이용합니다.)을 이용합니다. procmail이 하는일은 단순히 어떤 헤더가 있을때 적당한 프로그램을 불러 한글 디코딩을 해 줍니다.

따라서 procmail뿐만 아니라 한글 디코딩을 위한 프로그램을 설치하셔야 합니다. 여기에서는 hcode를 사용하도록 하겠습 니다.

hcode는 ftp://ftp.kaist.ac.kr/hangul/code/hcode/에서 구할 수 있습니다.
가져온 프로그램을 적당한 디렉토리에 풀고 소스 디렉토리에서 단순히 make를 입력하면 컴파일이 완료됩니다. 컴파일 결과로 생긴 hcode를 /usr/local/bin 에 복사해 둡니다.(다른 디렉토리도 상관없습니다.)

그다음 procmail을 설치합니다. procmail은 대부분의 ftp서버에서 구할 수 있습니다.
프로그램을 구한 후 디렉토리에서 make를 입력한 후 메시지에 나온대로 대답하면 설치할 수 있습니다. 만들어진 procmail을 역시 /usr/local/bin에 설치합니다.

그런다음 /etc/procmailrc을 만들어 환경설정을 해준후 sendmail이 MDA로 procmail을 사용할 수 있도록 sendmai.cf를 적절하게 수정합니다.

%% 일반적으로 PC의 MUA(Mail User Agent)로 사용되는 프로그램인 Microsoft outlook, Netscape messenger이 한글처리를 자동으로 해주므로 유닉스 시스템용 MUA프로그램인 Mutt나 elm을 사용하지 않은 한 한글 메일을 송, 수신한데 불편은 없습니다. 




2009/09/02 17:40 2009/09/02 17:40
Posted
Filed under Linux
/etc/sysconfig/network-scripts/ifcfg-eth0  열어서
ONBOOT=no  되어 있는 것을 yes로  수정 한다.
2009/08/31 15:53 2009/08/31 15:53
Posted
Filed under Linux
[원본] : https://www.sulinux.net/bbs/board.php?bo_table=success_2&wr_id=168

1.    PHP 경로 확인
php, pear, pecl 등의 실행파일이 /usr/bin/ 아래에 존재하거나 링크되어 있는지 확인해야 합니다. 
Apache+PHP 를 RPM 으로 설치했다면 해당 위치에 존재하지만 컴파일로 설치했을 경우 다음처럼 /usr/bin/ 아래로 링크를 걸어주어야 합니다.

# 파일이 존재하는지 확인
ls /usr/bin/php /usr/bin/pear /usr/bin/pecl /usr/bin/phpize
#result# ls: **** 그런 파일이나 디렉토리가 없음
 
# /usr/bin/php 가 존재하지 않을 경우 PHP가 설치된 디렉토리를 기준으로 심볼릭링크 생성.
#ln -s /PHP_설치경로_직접입력/bin/* /usr/bin/
ln -s /usr/local/php/bin/* /usr/bin/
 
# 링크된 파일의 실행 테스트
/usr/bin/php -v
/usr/bin/pear config-show

주의) 컴파일로 설치된 PHP와 RPM으로 설치된 PHP가 함께 설치되어 있을 경우 PHP 충돌로 인해 설치시 예기치 못한 문제가 발생할 수 있습니다.  
따라서 반드시 2개 중 하나를 삭제해야 합니다.
# RPM으로 설치된 PHP가 있는지 확인.
rpm -qa|grep php
 
# 웹페이지의 phpinfo() 정보에서 보여지는 PHP 버젼, php.ini 경로가
# 다음처럼 쉘모드에서와 일치하는지 확인.
php -v
php -i|grep ini
 
 
2.    PHP mailparse 모듈 설치
# pear나 wget 을 통해 mailparse 소스를 다운받습니다.
#pear download mailparse
#pecl download mailparse
# 다운받은 파일의 압축을 해제합니다.
tar zxvf mailparse-2.1.1.tgz
 
# 디렉토리로 이동후 소스 컴파일
cd mailparse-2.1.1/
phpize
./configure
make
make install
 

3.    기존 메일서비스(SMTP/POP3) 중지
설치시 엔메일용 SMTP/POP3 서비스를 실행하게 됩니다. 
따라서 기존에 운영중이던 SMTP/POP3 서비스는 종료시키고 부팅시 자동 실행되지 않도록 조치하셔야 합니다. 
그렇지 않을 경우 설치가 완료되어도 엔메일에서 메일을 받지 못하게 됩니다.
다음은 Linux 에서 일반적으로 많이 사용되는 sendmail, ipop3 데몬을 기준으로 한 것이며
시스템에 따라 postfix, qmail, courier-imap 등 다른 서비스가 사용하고 있을 수 도 있으니 미리 확인해보시기 바랍니다.

# 부팅시 자동실행 방지.
/sbin/chkconfig sendmail off
/sbin/chkconfig ipop3 off
#/sbin/chkconfig postfix off
#/sbin/chkconfig courier-imap off
 
# 기존 메일서비스용 데몬 종료.
/etc/init.d/sendmail stop
/etc/init.d/xinetd reload
#/etc/init.d/postfix stop
#/etc/init.d/courier-imap stop
 
# 메일서비스 종료후 SMTP(25), POP3(110)포트에서 응답이 없는지 확인.
telnet 127.0.0.1 25
telnet 127.0.0.1 110
 
# 만약 25, 110 포트에서 응답이 있다면 기존 메일서비스가 종료된 것이 아니므로 재확인하셔야 합니다.
 
 
4.    일부 리눅스 배포판의 SELinux 중지
-- SULinux는 그냥 다음 단계로 넘어가도 되지만 확인하는것이 좋습니다. --
fedora, redhat enterprise 등 SELinux 가 설치된 리눅스에서는 아래처럼 이 기능을 설치시 알 수 없는 문제가 발생하지 않습니다.

# 설정파일에서 옵션을 enforcing 에서 disabled 로 수정.
vi /etc/selinux/config
        SELINUX=enforcing
        =>
        SELINUX=disabled
 
# SELinux 를 재부팅하지 않고 즉시 중지
/usr/sbin/setenforce 0
 
# 만약 setenforce 가 없다면 서버를 재부팅해야 합니다.
 

5.    설치 프로그램 실행
설치 프로그램을 다운받아서 원하는 디렉토리에 넣어두고 실행합니다. 
이때 아파치 웹서버를 미리 실행해두어야 설치 프로그램에서 아파치 웹서버의 정보를 자동인식할 수 있게 됩니다. 
자세한 내용은 설치 프로그램에서 나오는 안내문구를 보고 따라서 진행하시면 됩니다.

예제) /tmp 디렉토리에 넣어두었을 경우의 예제.
# 프로그램과 설치파일을 다운받아서 FTP로 올려두거나 wget 으로 받습니다.
wget http://passkorea.net/nmailphp/nmail-php-linux.tgz
# 압축을 해제합니다.
tar zxvf nmail-php-linux.tgz

# 주의) 반드시 /usr/bin/php 위치에 php 실행파일이 존재해야 합니다.
# 1.   PHP 경로 확인 을 했다면 이상없으니 아래 파일을 실행 하세요.
# 참고 글자가 깨어져서 확인이 불가 할때는 vi /etc/sysconfig/i18n 을 열고 아래와 같이 수정하고 서버를 재부팅(reboot)해야 합니다.
----------- i18n -----------------------------
#UTF-8
LANG="ko_KR.UTF-8"
SUPPORTED="ko_KR.UTF-8:ko_KR:ko"
SYSFonT="lat0-sun16"
SYSFonTACM="8859-15"
 
#eucKR
LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFonT="lat0-sun16"
SYSFonTACM="8859-15"
---------------------------------------------
#언어설정을 마쳤다면 아래 파일을 실행 한다 - /usr/bin/php nmail-php-2.5.1_install.php 을 모두 적어 넣는다.
/usr/bin/php nmail-php-2.5.1_install.php
# 설치 스크립트를 실행한 후 ‘설치 완료’가 나올때까지 지시대로 진행하시면 됩니다.

6.    Apache 가상호스트 설정

# Nmail PHP - http://mail.YourDomain.com/
<VirtualHost *:80>
     ServerAdmin postmaster@YourDomain.com
     DocumentRoot "/home/nmail2/nmail"
     ServerName mail.YourDomain.com
     ServerAlias mail.*
     ErrorLog logs/nmail2.error_log
     TransferLog logs/nmail2.access_log
</VirtualHost>


7.    /root/bin/su_usersetup 파일 수정
# su_usersetup 파일을 이용해 사용자 계정을 추가 할때 메일 도메인과 어드민(webmaster) 계정을 자동으로 만들자
su_usersetup 파일 중 87번 라인 정도의

 han_print "sendmail 셋팅중 ...."
 /root/bin/su_mailuser --addforward $5 webmaster $3

을 찾아 주석처리하고 아래와 같이 변경한다.

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

       #han_print "sendmail 셋팅중 ...."
       #/root/bin/su_mailuser --addforward $5 webmaster $3

        han_print "nmail 셋팅중 ...."
        /home/nmail2/tools/domain_add.php $5
        han_print "nmail 관리자 생성중 ...."
        /home/nmail2/tools/mbr_add.php $5 webmaster webmaster $4 ADMIN

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

su_usersetup 파일 중 119번 라인 정도의

        /root/bin/su_dbuser --del $db_name $db_user
        han_print " 가상 호스트 부분 삭제.."
        /root/bin/su_vhost --del $3
        han_print "메일 관련 셋팅부분 삭제"
        han_print "/etc/mail/local-host-names 에서 삭제중 .."
        cat /etc/mail/local-host-names | grep -v "^$3" > /tmp/imsi  
                       cat /tmp/imsi > /etc/mail/local-host-names
                       han_print "/etc/mail/virtusertable 에서 삭제중.."
                       cat /etc/mail/virtusertable | grep -v "@$3" > /tmp/imsi
                       cat /tmp/imsi > /etc/mail/virtusertable
                       rm -rf /tmp/imsi
                       han_print "관련 db 갱신중.."
                       makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
                       han_print "sendmail 재 시작중..."
                       /etc/rc.d/init.d/sendmail restart


을 찾아 아래와 같이 주석처리 한다.

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

        /root/bin/su_dbuser --del $db_name $db_user
        han_print " 가상 호스트 부분 삭제.."
        /root/bin/su_vhost --del $3
        #han_print "메일 관련 셋팅부분 삭제"
        #han_print "/etc/mail/local-host-names 에서 삭제중 .."
        #cat /etc/mail/local-host-names | grep -v "^$3" > /tmp/imsi  
                       #cat /tmp/imsi > /etc/mail/local-host-names
                       #han_print "/etc/mail/virtusertable 에서 삭제중.."
                       #cat /etc/mail/virtusertable | grep -v "@$3" > /tmp/imsi
                       #cat /tmp/imsi > /etc/mail/virtusertable
                       #rm -rf /tmp/imsi
                       #han_print "관련 db 갱신중.."
                       #makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
                       #han_print "sendmail 재 시작중..."
                       #/etc/rc.d/init.d/sendmail restart

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

8.    /etc/sysconfig/i18n  재설정

----------------------------------------------------------------------
#UTF-8
LANG="ko_KR.UTF-8"
SUPPORTED="ko_KR.UTF-8:ko_KR:ko"
SYSFonT="lat0-sun16"
SYSFonTACM="8859-15"
 
#eucKR
#LANG="ko_KR.eucKR"
#SUPPORTED="ko_KR.eucKR:ko_KR:ko"
#SYSFonT="lat0-sun16"
#SYSFonTACM="8859-15"
--------------------------------------------------------------------

위와 같이 eucKR 부분을 #-주석처리 하거나 삭제 하세요. 그런 후

다시 한번 서버를 재시작 (reboot)  한다.
2009/07/28 09:07 2009/07/28 09:07
Posted
Filed under Linux
[원본 주소] : http://navyism.com/main/memo.php?bd=apm_tip&no=20
Apache 인증모듈이란 특정 디렉토리에 대한 접근을 apache가 통재하는 것입니다. 관리자페이지가 있는 디렉토리에 설정을 해두면 좋습니다. 본 사항을 적용 후 접속을 하면 브라우저에서 FTP를 접속 할 때와 같은 로그인 창이 뜨게됩니다.
아래글은 tozigy.com에서 가져온 글을입니다._>>


Pbi12라는 분이 linux.co.kr에 올리신 글인데 꼼꼼하게 잘 설명한듯 보여서 올립니다. 저도 도움을 받았고요. 훗;

*전제 조건이 있습니다.  
ROOT 즉 절대 권한을 가진 서버관리자가 셋팅을 해줘야 한다는 것입니다.  
root가 없다면 서버 관리자에게 httpd.conf부분만  
이렇게 해달라고 요청하셔야 합니다.  


1. httpd.conf를 수정한다.  

먼저 /usr/local/apache/conf/httpd.conf에서  
디렉터리에 대한 옵션 부분에 보시면  
AllowOverride None으로 되어 있으면 AllowOverride All로 바꾸줍니다.  
# AccessFileName .htaccess줄이 주석줄로 되어 있으면 주석도 풀어줍니다.  


2. .htaccess파일을 만든다.  

인증을 받고 싶은 디렉토리로 가서 vi로 아래와 같은 파일을 만들어야 합니다.  

======================================================  
AuthType Basic  
AuthName pbi12  
AuthUserFile /home/pbi12/public_html/pds/.htpasswd  
require user pbi12  
======================================================  
이 내용을 .htaccess로 저장해줍니다.  
여기서 name과 아래 3번에서 생성할 .htpasswd 파일의 경로를  
자신의 환경대로 바꾸어 줍니다.  
그리고 마지막에 중요한게 require 인데,  
여기서는 유저 한명씩 할때 처리 방법입니다.  
user 인 pbi12 한명을 넣은 것이죠.  
아래 나오는 부분에서 유저를 생성하게 되는데 그 유저를 여기다가 넣어서  
쓸 수 있는 것입니다. 더 추가 할 때에는 pbi12 다음에 한칸 띄고 나서  
다른 유저 이름을 적으시면 됩니다.  


3. .htpasswd파일을 만든다.  

암호파일(.htpasswd)은 암호화되어서 저장이 되므로 그냥 텍스트로 입력해서는 안되구요,  
/usr/local/apache/bin에 있는 htpasswd라는 프로그램을 이용해서 만드는데,  

shell# /usr/local/apache/bin/htpasswd -c /home/pbi12/public_html/pds/.htpasswd pbi12  

이것은 htpasswd 를 해서 -c 새파일을 만드는데, pbi12의 디렉터리에 .htpasswd로 생성하며,  
pbi12라는 유저를 추가한다는 것입니다.  
이렇게 형식으로 치면 암호를 넣으라고 나오는데 여기에 암호를 적어 넣으면 성공입니다^^;  
(이때 -c 옵션은 처음 넣을때만 하면되며 그 다음 부터 추가할때는 필요가 없습니다.  
그 다음에도 -c 옵션을 추가하면 이전 것(.htpasswd)은 지워버리고 새로 작성되므로 추가 하실때에는 그냥 -c 옵션 없이 다른 유저를 추가하시면 됩니다.)  

그러면 .htpasswd의 파일이 아래와 같이 생성되어진다.  
pbi12:NoWPewwtesgrTR  


4. 아파치를 재시작합니다.  

# /usr/local/apache/bin/apachectl restart  


5. 종료!  

이렇게 되면 자신이 .htaccess 를 넣은 곳을 웹에서 접속하게 되면 아파치 인증창이 뜨게  
됩니다. 자신이 만든 유저 정보를 치고 들어가면 접속이 되는 것이구요~  


보통 사용하실 분들은 여기까지만 보셔두 상관없습니다.  

아래에는 그룹으로 지정하고 싶으신 분을 위한 코너입니다^^;  


ADD1. 그룹으로 아파치 인증을 만들때에...  

유저를 추가하는 것과 크게 다른 점은 없습니다.  
하지만, .htaccess파일을 만들때에  

======================================================  
AuthType Basic  
AuthName pbi12  
AuthUserFile /home/pbi12/public_html/pds/.htpasswd  
AuthGroupFile /home/pbi12/public_html/pds/.group  
require group admin  
======================================================  

이렇게 바뀌어야 합니다.  
그룹을 참조할 파일을 추가 해주는 것입니다.  
그리고 require에서는 group 을 admin 그룹으로 할때 저런식으로 해주는 것입니다.  
admin 그룹을 만드는 법을 알아보겠습니다.  


ADD2. 그룹 참조 파일 생성하기...  

이 부분은 별로 어렵지 않습니다.  
유저를 생성하고 나면 그 내용을 참조해서 그룹으로 묶어 주는 것이기 때문입니다.  
.group 파일안에다가  

===================  
admin: pbi12 pds  
===================  

위의 가운데 한줄입니다.  
저렇게 넣어주면 admin 이라는 그룹안에 pbi12 라는 유저와 pds 라는 유저를 묶으겠다는 말이 됩니다. 그러면 admin 그룹을 사용할 수 있는 것이죠.  

마지막으로 말씀 드리고 싶은 것은 .htpasswd 라는 파일과 .group 파일의 이름은 여러분 마음대로 바꾸셔도 상관없다는 점 말하고 끝내겠습니다.  
아참! .htaccess 파일은 사용하고자 하는 위치에 저 이름 그대로 사용하셔야 하는 점 혼동 마시구요 ~  
그럼 아파치 인증을 마치겠습니다.  
2009/07/27 10:53 2009/07/27 10:53
Posted
Filed under Linux
Informational 1xx 
100 Continue
101 Switching Protocols


Successful 2xx 
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content


Redirection 3xx 
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy

 
Client Error 4xx 
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type


Server Error 5xx 
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported 
2009/07/21 15:35 2009/07/21 15:35
Posted
Filed under Linux

FTP함수의  종류와  사용법 

(1)  ftp_connect  :  FTP서버에  연결한다. 
----------------------------------------------- 
int  ftp_connect  (string  host  [,  int  port]) 
$ftp=ftp_connect("서버주소  또는  도메인명",21); 
----------------------------------------------- 

(2)  ftp_login  :  계정과  패스워드로  서버에  접근한다. 
----------------------------------------------- 
int  ftp_login  (int  ftp_stream,  string  username,  string  password) 
$ftplogin  =  ftp_login($ftp,  "$ftp_user_name",  "$ftp_user_pass"); 
----------------------------------------------- 

(3)  ftp_pwd  :  현재  디렉토리  값을  리턴한다. 
----------------------------------------------- 
int  ftp_pwd  (int  ftp_stream) 
$ftp_dir  =  $ftp_pwd($ftp); 
----------------------------------------------- 

(4)  ftp_cdup  :  가장  상위  디렉토리로  이동 
----------------------------------------------- 
int  ftp_cdup  (int  ftp_stream) 
$ftp_dir  =  $ftp_cdup($ftp); 
----------------------------------------------- 

(5)  ftp_chdir  :  FTP  디렉토리의  변경 
----------------------------------------------- 
int  ftp_chdir  (int  ftp_stream,  string  directory) 
$chdir=ftp_chdir  ($ftp,  $ftp_dir); 
----------------------------------------------- 

(6)  ftp_mkdir  :  디렉토리를  만들고  만든  디렉토리명을  반환한다. 
----------------------------------------------- 
string  ftp_mkdir  (int  ftp_stream,  string  directory) 
$mkdir  =  ($ftp,"만들  디렉토리명"); 
----------------------------------------------- 

(7)  ftp_rmdir  :  디렉토리를  삭제한다. 
----------------------------------------------- 
int  ftp_rmdir  (int  ftp_stream,  string  directory) 
$mkdir  =  ($ftp,"삭제할  디렉토리명"); 
----------------------------------------------- 

(8)  ftp_nlist  :  디렉토리의  파일이름을  배열로  반환한다. 
----------------------------------------------- 
int  ftp_nlist  (int  ftp_stream,  string  directory) 
$contents  =  ftp_nlist(  $ftp,  "디렉토리명"); 
----------------------------------------------- 

(9)  ftp_rawlist  :  디렉토리의  파일이름과  읽고  쓰고  실행할  권한을  파일  당  한  줄의  배열로  반환한다. 
----------------------------------------------- 
int  ftp_rawlist  (int  ftp_stream,  string  directory) 
$contents  =  ftp_nlist(  $ftp,  "디렉토리명"); 
----------------------------------------------- 

(10)  ftp_systype  :  FTP서버의  타입을  리턴하는데  리눅스는  UNIX로  표시해준다. 
----------------------------------------------- 
int  ftp_systype  (int  ftp_stream) 
echo  ftp_systype($ftp); 
----------------------------------------------- 

(11)  ftp_get  :  FTP로부터  파일을  다운로드  받는다. 
----------------------------------------------- 
int  ftp_get  (int  ftp_stream,  string  local_file,  string  remote_file,  int  mode) 
$download  =  ftp_get($ftp,  "저장할  파일명",  "다운받을  파일명","FTP_ASCII  or  FTP_BINARY"); 
----------------------------------------------- 

.pl  또는  .cgi  같은  Perl  CGI인  경우에는  FTP_ASCII로  다운  받고  다른  파일은  FTP_BINARY로  다운  받아야  한다. 

(12)  ftp_fget  :  FTP로부터  파일  포인터를  다운받는다. 
----------------------------------------------- 
int  ftp_fget  (int  ftp_stream,  int  fp,  string  remote_file,  int  mode) 
$download  =  ftp_fget($ftp,  "저장할  파일명",  "다운받을  파일명","FTP_ASCII  or  FTP_BINARY"); 
----------------------------------------------- 

(13)  ftp_put  :  FTP서버에  파일을  업로드  한다. 
----------------------------------------------- 
int  ftp_put  (int  ftp_stream,  string  remote_file,  string  local_file,  int  mode) 
$upload  =  ftp_put($ftp,  "업로드할  파일명",  "업로드될  파일명","FTP_ASCII  or  FTP_BINARY"); 
----------------------------------------------- 

(14)  ftp_fput  :  FTP서버에  파일  포인터를  업로드한다. 
----------------------------------------------- 
int  ftp_fput  (int  ftp_stream,  string  remote_file,  string  local_file,  int  mode) 
$upload  =  ftp_fput($ftp,  "업로드할  파일명",  "업로드될  파일명","FTP_ASCII  or  FTP_BINARY"); 
----------------------------------------------- 

(15)  ftp_size  :  파일의  사이즈를  구한다. 
----------------------------------------------- 
int  ftp_size  (int  ftp_stream,  string  remote_file) 
$filesize  =  ftp_size(  $ftp,  $contents[$i]  ); 
----------------------------------------------- 
ftp_nlist  나  ftp_rawlist에  의해  구한  파일명에  대한  배열값인  $contents[$i]에는  각  파일명과  속성이  저장되어지는데  이  파일명을  사이즈로  구하면  파일이면  사이즈가  리턴되고  디렉토리이면  -1이  리턴된다. 

(16)  ftp_mdtm  :  파일의  마지막  수정시간을  timestamp  값으로  리턴한다. 
----------------------------------------------- 
int  ftp_mdtm  (int  ftp_stream,  string  remote_file) 
$filemdth  =  ftp_size(  $ftp,  "파읾명"); 
----------------------------------------------- 

(17)  ftp_rename  :  파일명을  변경한다. 
----------------------------------------------- 
int  ftp_rename  (int  ftp_stream,  string  from,  string  to) 
$rename  =  ftp_rename(  $ftp,  "바꿀  파일명",  "바뀐  후  파일명"); 
----------------------------------------------- 

(18)  ftp_delete  :  해당  파일을  삭제한다. 
----------------------------------------------- 
int  ftp_delete  (int  ftp_stream,  string  path) 
$delfile  =  ftp_delete($ftp,  "지울  파일명"); 
----------------------------------------------- 

(19)  ftp_quit  :  연결된  FTP의  접속을  끊는다. 
----------------------------------------------- 
int  ftp_quit  (int  ftp_stream) 
ftp_quit  ($ftp); 
-----------------------------------------------  

2009/07/17 20:34 2009/07/17 20:34
Posted
Filed under Linux

리눅스 tar압축하는 방법
tar -cvf test.tar *    //압축
tar xvf test.tar       //해지


tar xvzf test.tar.gz




[압축할 때] tar cvzf 파일명.tar.gz <디렉토리> 또는 파일
[압축 해제] tar xvzf 파일명.tar.gz

[예제]
tar -xvvf foo.tar : foo.tar 파일을 푼다.
tar -xvvzf foo.tar.gz : gzip으로 압축된 foo.tar.gz 파일을 푼다.
tar -cvvf foo.tar foo/ : foo 디렉토리에 있는 내용물을 foo.tar 파일로 묶는다.
[출처] 리눅스 tar압축하는 방법 |작성자 지우개

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux



리눅스는 Redhat9 Kernel 2.4.20버전을 사용하였습니다.
또한 가능하면 이 문서에 있는 소스를 받으세요. 이문서상외의 소스나 기타 프로그램들은
작동여부를 장담할 수 없습니다.

설치 기초 작업은 /root/src라는 곳에서 작업을 합니다.

설치순서는
openssl - mysql BerkelyDB - qmail - ucspi - daemon tools - checkpassword - imap - phpmail
순으로 설치를 합니다.

#################
설치 기초 공사#########################
1. openssl
설치
1)
가능하면 기본 설정으로 설정하시기 바랍니다. 기본을 /usr/local/ssl로 잡고 있고 다른 소스들도 ssl을 쓸시 저 기본 디렉토리를 사용합니다. 그러니 고치지 마시고 기본 그대로의 사용을 적극 권장드립니다.
-
http://www.openssl.org/source/ 에서 openssl-0.9.7a.tar.gz 이버전을 받으세요.
qmail
홈페이지에서 faq를 보시면 위 버전 이상은 어떤 이유에서인지 에러가 난다고하네요. 정확하게 어디서 보기는 봤는데 출처는 정확히 모르겠습니다. 아시는분 리플달아주세요.

2) Install
./config
make; make install

- mysql
설치
http://downloads.mysql.com/archives/...3.23.58.tar.gz 타볼소스로 다운받습니다.

3)
컴파일 옵션 / 설치
./configure --prefix=/usr/local/mysql --with-openssl --with-charset=ecu_kr
make; make install
(
기타 다른 옵션이 필요하시다면 붙이셔도 상관은 없습니다.)

4)
약간의 환경설정이 필요합니다.
cp support-files/my-huge.cnf /etc/my.cnf
groupadd mysql
adduser -g mysql mysql
vi /etc/passwd
mysql:x:522:523::/home/mysql:/sbin/nologin // nologin
으로 수정
rm -rf /home/mysql
cd /usr/local/mysql/share/mysql
vi mysql.server
134
줄의 부분을 약간 변경합니다.
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --language=korean &

$bindir/safe_mysqld --datadir=$datadir --language=korean --pid-file=$pid_file --language=korean &
--language를 추가합니다.
cp mysql.server /usr/local/mysql/bin
cp mysql.server /etc/rc.d/init.d/mysqld
ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S55mysqld <-
시작번호는 알아서 편한번호로 지정하십시요.

5)
디비 생성
cd /
설치디렉토리 (나의 경우엔 cd /usr/local/mysql)
./bin/mysql_install_db (base
디비를 생성하세요~~)
chown -R mysql.mysql /usr/local/mysql/var

- mysqladmin
암호설정
/etc/rc.d/init.d/mysqld start
/usr/local/mysql/bin/mysqladmin -u root password
암호


2. BerkeleyDB
설치
특별히 쓰지는 않지만 이 않에 들어있는 몇가지 라이브러리가 좀 필요하다고 하네요. 솔직하게 어디서 쓰이는지는 모르겠습니다. 하지만 나중에 qmail들어가서 make 해보시면 아시겠지만 설치와 미설치의 make오류는 참 차이가 나는것 같습니다.(기분상...^^; 또한 여러 프로그램에서 많이 쓰인다고 합니다. 저두 언젠가는 써볼 생각입니다.
1)
설치
http://www.sleepycat.com/docs/ref/build_unix/intro.html ->버클리 DB설치법.
그러나 영문사이트인 관계로...

http://dev.sleepycat.com/downloads/r...istorybdb.html -4.2.52버전을 받습니다.
cd /root/src/db-4.2.52/build_unix
../dist/configure
make
make install

2)
동적 라이브러리링크
vi /etc/ld.so.conf
에서
/usr/local/mysql/lib/mysql
추가
/usr/local/BerkeleyDB.4.2/lib
추가
프롬프트에서
ldconfig
엔터

###################qmail
설치#######################
/root/qmailsrc/src <-
이곳에 qmail관련된 모든 소스를 넣어둡니다.
/root/qmailsrc/patch <-
패치에 관련된 모든 파일을 이곳에 넣어둡니다.
이제 본격적인 작업에 들어갑니다. 이제부터가 본게임의 시작입니다.

선작업
# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

큐메일이 좀 오래된지라 time.h파일이 문제가 됩니다.
그래서 구버전의 time.h로 링크를 걸어서 컴파일 하는 것입니다.
나중에 apache php컴파일시 원상복구해야합니다.

1. qmail Install
1) qmail
및 해당 패치 다운로드
http://cr.yp.to/qmail.html 에서 qmail-1.03 다운로드
(Mirror
사이트중 빠른곳에서 받으시면 됩니다. 참고로 일본 사이트가 제일 빠르네요)
http://qmail.kldp.org/phpbb/viewtopic.php?t=5798 에서
cocktail14+mysql+chkuser+quota.patch_20041116
다운로드 (2004 1116일자 패치)
참고)
캌테일 패치는 qmail에 필요한 여러가지의 패치를 모아놓은 패치 입니다. 패치 이름중에 mysql+chkuser 이것이 마이에스큐엘을 연동하여 사용하고, 유저를 체크할 수 있게 해주는 것 입니다. 하지만 이것이 좀 말이 많기도 합니다. 워낙 많은 패치를 해 놓다보니 쓸데 없는 기능이 들어가기도 하고 자신에게는 필요없는 패치가 되기도 합니다. 하지만 굉장히 좋기도 합니다. 필요한 패치를 모두 해주기 때문이죠. 만약 칵테일 패치를 하지 않는다면
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서 qmail-1.03.errno.patch qmail-1.03.qmail_local.patch 다운받아 패치를 해주어야 합니다. 하지만 우리는 캌테일 패치를 해주신다면 위의 2개의 패치는 하지 않으셔도 됩니다.
(
에러 납니다.!!!!!)

주의!!!!!
혹시 나중에 설치후 SMTP 기능이 제대로 동작이 되지 않는다면 칵테일 패치를 하지 마시고 위의 2가지 패치로 하시기 바랍니다. 간혹 칵테일 패치로 동작이 되지 않는수도 있습니다.

2)
설치
- qmail
을 위한 그룹 및 계정 생성
mkdir /var/qmail
mkdir /var/qmail/alias

- qmail
설치
qmail
의 압축을 풉니다.
vi INSTALL.ids

첫 부분에 보시면 Linux라는 부분에 다음과 같은 부분이 있습니다.

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

그 파일을 참고로 해서 다음과 같이 붙여넣기를 하셔서 파일 하나를 만듭니다.
그리고 실행을 하시면 됩니다.
ex)
vi user.sh

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 user.sh
하면 디렉토리와 사용자 계정이 추가가 됩니다.

3) qmail
패치
cd /root/qmailsrc/src/qmail-1.3.0
patch -p1 < ../../patch/cocktail14+mysql+chkuser+quota.patch_20041116

4)
일부 파일 수정
vi mysql.c
#include <mysql/mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi qmail-getpw.c
#include </mysql/mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정
vi Makefile
MYSQL_INCLUDE=-I/usr/local/include
MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
로 수정
vi conf-cc
cc -O2 -DTLS=20021228 -I/usr/local/ssl/include

gcc -O2 -march=i686 -funroll-loops -DTLS=20021228 -I/usr/local/ssl/include
로 수정

수정필수사항은 mysql include, lib 경로와 openssl의 경로 입니다.

5)
컴파일 및 설치
make
make setup check
- control
파일들 생성
./config

실행후 정상적인 결과의 화면은 다음과 같습니다.
./config
Your hostname is chsd.
Your host's fully qualified name in DNS is chsd.chonnam.ac.kr.
Putting chsd.chonnam.ac.kr into control/me...
Putting chonnam.ac.kr into control/defaultdomain...
Putting ac.kr into control/plusdomain...
Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
168.131.34.167: Adding chsd.chonnam.ac.kr 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를 쳣을때 에러가 나온다면 반듯이 보셔야 할 부분이 있습니다.

/etc/resolv.conf
search chonnam.ac.kr <---
이 부분이 굉장히 중요합니다.
nameserver 168.126.63.1
nameserver 168.126.63.2

특히, search [domain name] 라인이 반드시 있어야 합니다.
/etc/hosts
127.0.0.1 localhost localhost.localdomain
123.234.123.234 chsd.chonnam.ac.kr chsd
123.234.123.231 other.chonnam.ac.kr other

위 파일의 내용을 확인하고, 내용에 맞추어 수정합니다.
/etc/sysconfig/network
..........
..........
HOSTNAME=chsd
DOMAINNAME=ultraqmail.com
..........
..........

위의 라인을 확인하여, 없으면 추가합니다.
위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면,
그때는 이렇게 합니다.

./config-fast ultraqmail.com

config-fast
다음에 서버의 DNS 등록 호스트네임을 다 써주면 됩니다.
그러면, 정상적으로 다음 설치가 가능합니다.

이 단계를 거치고 나면 /var/qmail/control/ defaultdomain, locals, me, plusdomain, rcpthosts 이 생성되는데 차후 메일서버를 운영함에 있어 중요한 파일들이니 뭐하는 파일들인지 꼭 알아두시기 바랍니다.


2. ucspi-tcp
설치 (tcp커넥션을 만들어주는 것이죠)
1) ucspi-tcp
및 해당 패치 다운로드
http://cr.yp.to/ucspi-tcp/install.html 에서
ucspi-tcp-0.88.tar.gz
다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
ucspi-tcp-0.88.errno.patch, ucspi-tcp-0.88.a_record.patch, ucspi-tcp-0.88.nobase.patch
다운로드
(
참고로 사이트가 깜빡깜빡(?)합니다. 만약 접속 않되시면 몇 시간후 접속을 하세요...^^)
http://sylvestre.ledru.info/howto/qm...88-mysql.patch
를 받습니다.

2)
설치
-
원래는 rblsmtpd를 깔아야 합니다. 그러나 ucspi-tcp-0.88버전이상은
이것을 포함하고 있다고 합니다. 또한 굳이 깔때 문제가 생길지도 모른다고 하니 않까시는게
좋을듯 합니다.
- ucspi-tcp
패치
patch -p1 < ../patch/ucspi-tcp-0.88.errno.patch
patch -p1 < ../patch/ucspi-tcp-0.88.nobase.patch
patch -p1 < ../patch/ucspi-tcp-0.88.a_record.patch
patch -p0 < ../patch/ucspi-tcp-0.88-mysql.patch

-
일부 파일 수정
vi conf-cc
gcc -O2 -I/usr/include/mysql

gcc -O2 -march=i686 -funroll-loops -I/usr/local/mysql/include/mysql
로 수정

vi db.c
#include <mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정

vi conf-ld
gcc -s -I/usr/include/mysql -L/usr/local/lib/mysql -lmysqlclient

gcc -s -I/usr/local/mysql/include/mysql -lmysqlclient -L/usr/local/mysql/lib/mysql
로 수정

-
컴파일 및 설치
make
make setup check


3. demontool
설치
1) demontool
및 해당 패치 다운로드
http://cr.yp.to/daemontools/install.html 에서
daemontools-0.76.tar.gz
다운로드
http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ 에서
daemontools-0.76.errno.patch
다운로드

2)
설치
-
설치 디렉토리 생성
mkdir -p /package
chmod 1755 /package
cd /package
cp /root/qmailsrc/src/daemontools-0.76.tar.gz /package
tar -zxvf daemontools-0.76.tar.gz
rm -rf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /root/qmailsrc/patch/daemontools-0.76.errno.patch
package/install


4. chechpasswd
1) chechpasswd
및 해당 패치 다운로드
http://cr.yp.to/checkpwd/install.html 에서 checkpassword-0.90.tar.gz 다운로드
http://download.softagency.net/mysql/Downloads/Contrib/
checkpassword-0.90-mysql-0.6.6.patch.gz
다운로드 후 압축푼다.
http://qmail.kldp.org/src/patches/glibc-2.3.1/
checkpassword-0.90.errno.patch
다운로드
************************************************** **********
checkpassword-0.90-mysql-0.7.4.patch
가 있으나 에러가 난다고 알려져 있습니다.
참고사이트입니다.
http://qmail.kldp.org/phpbb/viewtopi...ql-0.6.6.patch
************************************************** ************

chechpasswd
는 말 그대로 메일 계정의 패스워드를 체크할 수 있게 해주는겁니다.
여기에 마이에스큐엘 패치를 하여 디비에 들어있는 가상계정의 패스워드체크도 가능하게 됩니다.

2)
설치
- checkpassword
패치
patch -p1 < ../../patch/checkpassword-0.90-mysql-0.6.6.patch
patch -p1 < ../../patch/checkpassword-0.90.errno.patch

-
일부 파일 수정
vi mysql.c
#include <mysql.h>
#include </usr/local/mysql/include/mysql/mysql.h>로 수정

vi Makefile
MYSQL_INCLUDE=-I/usr/local/include
MYSQL_INCLUDE=-I/usr/local/mysql/include 로 수정
MYSQL_LIBS=/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl

MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
로 수정

vi conf-cc
gcc -O2
gcc -O2 -march=i686 -funroll-loops 로 수정

vi error.h
#include <errno.h>
추가

-
컴파일 및 설치
make
make setup check

-
소유권 및 퍼미션 변경
참고사이트
http://qmail.kldp.org/phpbb/viewtopi...=checkpassword
chown root.nofiles /bin/checkpassword
chmod 4110 /bin/checkpassword


5. qmail
설정
1) qmail-pop3, qmail-send, qmail-smtp
구동 / 로거 파일 생성
-
디렉토리 생성 및 권한설정
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d

- qmail-send
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc

- qmail-send
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/send

- qmail-smtp
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd `hostname -f` /bin/checkpassword /bin/true 2>&1

- qmail-smtp
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtp

- qmail-pop3
구동(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 5000000 /usr/local/bin/tcpserver -v -R -H -l 0 0 pop3 /var/qmail/bin/qmail-popup ultraqmail.com(
메일서버도메인명) /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

- qmail-pop3
로거(run) 파일 생성
vi /var/qmail/supervise/qmail-pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3

-
각 구동 및 로거파일 권한 설정
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
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

-
디폴트 알리아싱 설정
cd /var/qmail/alias
echo
임의의사용자아이디 > .qmail-mailer-daemon
echo
임의의사용자아이디 > .qmail-postmaster
echo
임의의사용자아이디 > .qmail-root

ex)
cd /var/qmail/alias
echo alias > .qmail-mailer-daemon
echo alias > .qmail-postmaster
echo alias > .qmail-root

- /var/qmail/rc
파일 생성
cp /var/qmail/boot/proc /var/qmail/rc
vi /var/qmail/rc
* 7
라인을 다음과 같이 수정
qmail-start '|preline procmail ./Maildir/' splogger qmail

-
로그 디렉토리 생성및 소유권 변경
(
차후 이쪽에서 로그를 볼 수 있도록 변경함)
mkdir -p /var/log/qmail/send
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
chown -R qmaill /var/log/qmail

- qmail
실행파일 생성

아래의 스크립트를 그대로 복사, 저장하거나 새로 받습니다.
http://kltp.kldp.org/tmp/qmail.txt
이 파일을 /etc/rc.d/init.d/ qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 줍니다.

vi /etc/init.d/qmail
=====================
요기서부터============== ======
#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: qmail 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-smtp"
svc -p /var/qmail/supervise/qmail-smtp
echo "Pausing qmail-pop3"
svc -p /var/qmail/supervise/qmail-pop3
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtp"
svc -c /var/qmail/supervise/qmail-smtp
echo "Continuing qmail-pop3"
svc -c /var/qmail/supervise/qmail-pop3
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtp."
svc -d /var/qmail/supervise/qmail-smtp
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtp"
svc -u /var/qmail/supervise/qmail-smtp
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
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 -- 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
======================
요기까지================ =====


chmod 755 /etc/init.d/qmail

-
릴레이 설정(파일을 생성합니다)
vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
서버아이피:allow,RELAYCLIENT=""
:allow

- tcp.smtp
cdb형식으로 변환
/etc/init.d/qmail cdb
**
보통은 tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
사용하지만 /etc/init.d/qmail에 스크립트를 넣어줬기때문에 요걸루 변환합니다.


- sendmail
죽이기
이제 qmail로 모든 메일을 처리할 것이므로, 구형의 sendmail을 제거합니다.
우선 당신의 sendmail 데몬을 찾아서 그것을 kill합니다. 리눅스에서는

# ps ax | grep sendmail <--- sendmail
데몬이 있는지를 확인합니다.
# killall -TERM sendmail <--- sendmail
데몬을 제거합니다.

# ps ax | grep sendmail <---
다시 sendmail 데몬이 살아있는지를 확인합니다.

위의 명령은 현재 실행중인 sendmail만을 제거할 뿐입니다.
서버가 재시동되면, 다시 sendmail도 재시동되므로, 다음과 같은 명령어로 qmail로 모든 sendmail을 대체합니다.

mv /usr/lib/sendmail /usr/lib/sendmail.snd
mv /usr/sbin/sendmail /usr/sbin/sendmail.snd
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -sf /var/qmail/bin/qmail-qread /usr/bin/mailq

-
디비접속 컨트롤 파일 생성
vi /var/qmail/control/sqlserver
mysql_use yes
server localhost
login phpmail
password phpmail
db phpmail
table mailuser
port 3306
check_host yes
quota yes
ignore_validity yes
swap_check_order yes


-
디비설정
사용자 추가를 할때 grant명령을 써서 하는것이 아니고 밑과 같은 식으로 하시는것을 권합니다.

몇가지 옵션이 틀리게 나오더군요. 물론 사용하는데 큰 지장은 없지만 약간 찝찝한 기분을 지울 수 없더군요.

(
이부분은 mysql를 좀 아셔야 합니다. 완전 고생을 각오하셔야 합니다...)
mysql -u root -p
암호
use mysql;

insert into user values ('localhost', 'phpmail', password('phpmail'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N','N', 'N', 'N', 'N', 'N', 'N', 'N','','','','',0,0,0);

insert into db values ('localhost', 'phpmail', 'phpmail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y','Y', 'Y');

create database phpmail;
flush privileges;
use phpmail;

create table mailuser (
mbox_host varchar(32) binary null,
id varchar(32) binary not null,
passwd varchar(32) binary not null,
crypt varchar(32) binary not null,
uid int(5) unsigned not null default '99',
gid int(5) unsigned not null default '99',
shell varchar(16) not null default '/bin/false',
home varchar(64) binary not null,
quota_size int(10) null,
start_date date not null default '0000-00-00',
expire_date date not null default '0000-00-00',
active enum('Y','N') not null default 'Y'
);

insert into mailuser (mbox_host, id, passwd, crypt, uid, gid, shell, home) values
('
서버도메인', 'phpmail', 'phpmail', encrypt('phpmail'), 99, 99, '/bin/false', '/메일박스가들어갈위치/서버도메인/phpmail');
** /
메일박스가들어갈위치/서버도메인은 /home/phpmail/ultraqmail.com 이런식 입니다.

-
메일디렉토리 설정
mkdir -p /
메일박스가들어갈위치/서버도메인/phpmail
/var/qmail/bin/maildirmake /
메일박스가들어갈위치(/home/phpmail)/서버도메인(ultraqmail.com)/phpmail(id)/Maildir
chown -R 99:99 /
메일박스가들어갈위치

만든 메일 홈으로 들어갑니다.

- .qmail
작성
================================================== ======================
%
|/var/qmail/bin/preline /usr/bin/procmail -p -m /home/phpmail/ultraqmail.com/phpmail/.procmailrc
================================================== ======================
**
쿼타설정인데요.. 패치에 따라 설정이 좀 다르네요...
일반적으론 |/var/qmail/bin/qmail-quota 요렇게 설정하는데요
cocktail14+mysql+chkuser+quota.patch_20041116
패치를 사용했을경우는 쿼타를 디비의 값을 읽어 바로 처리 하네요 해서
%
.qmail안에 써 주시면 쿼타설정 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.

- .procmail
작성
================================================== ======================
PATH=/bin:/usr/bin:/usr/local/bin
DEFAULT=/home/phpmail/ultraqmail.com/phpmail/Maildir/
MAILDIR=/home/phpmail/ultraqmail.com/phpmail/Maildir/
LOGFILE=/var/log/qmail/procmail
VERBOSE=no
SHELL=/bin/sh

# korean code decode
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|formail -c | hcode -dk -m
:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|formail -c | hcode -dk -m
:0

#:0 BfHw
#*^*.filename=.*(\?euc-kr\?)
#|formail -c | hcode -dk -m

# rejection from emailaddress
#* ^From: .*()
#/home/phpmail/ultraqmail.com/phpmail/Trash/rejection

# delete spam filter
#:0
#* ^Subject: .*()
#/dev/null

# move spam filter
#:0
#* ^Subject: .*()
#/home/phpmail/ultramail.com/phpmail/Trash/spam

#:0 Efhw
#* ^From: .*()
#|/script/my_vacation
================================================== ====================
** procmail
에서 필터링을 하시려면 요 파일에 설정해주면 됩니다.
또한 소유자과 그룹을 nobody.nobody로 바꾸어 주어야 합니다.

그런데 우리는 매일 이런것들을 만들어 준다면 굉장히 불편할 겁니다.

그래서 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 합니다.
# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail
# echo ./Maildir/ > .procmail

이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail .procmail파일이 생기게 될 것입니다.

-
시스템을 리부팅하고, qmail의 정상적인 동작을 확인합니다.
리부팅되고나서, /var/log/maillog 파일내용을 살펴보면, 끝부분에서 다음과 같은 라인이 보여야 합니다.

qmail: status: local 0/10 remote 0/20

그렇지 않다면, qmail 설정에 문제가 있는 것이므로, 앞의 과정들을 다시 한번 꼼꼼히 살펴보고,
설정파일들을 자세히 검토해야만 합니다.
ps ax
명령을 내리고나서, 다음과 같은 라인들이 보이는 지를 확인합니다.

#ps ax
562 ? S 0:00 svscan
563 ? S 0:00 supervise qmail-send
564 ? S 0:00 supervise log
565 ? S 0:00 supervise qmail-smtpd
566 ? S 0:00 supervise log
567 ? S 0:00 qmail-send
568 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail
569 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail/smtpd
570 ? S 0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb -u 501 -g 501 0 25 /var/qmail/bin/qmail-smtpd
576 ? S 0:00 splogger qmail
577 ? S 0:00 qmail-lspawn |preline procmail
578 ? S 0:00 qmail-rspawn
579 ? S 0:00 qmail-clean

모양이나 숫자들이 약간씩 틀리더라도, 반드시 13개의 프로세서가 동작하고 있어야 합니다.
위와 동일한 프로세서가 없다면, qmail 설정에 문제가 있는 것이다.
위와 같은 메시지와 프로세서들이 보이지 않는다면, 문서 앞의 과정에서 만든 설정파일들을 잘못 만든것
입니다. 대표적으로 자주 하는 실수는 /var/qmail/supervise/qmail-send/log/run 파일과
/var/qmail/supervise/qmail-smtpd/log/run
파일을 만들 때, qmaill qmail 로 잘못 쓰는 것입니다.
이 문서에 쓰여진 설정파일의 내용은 절대로 오타나 탈자가 없으므로, 잘 보고 틀린 곳을 찾아내기 바랍니다.

-
가상계정 테스트
/var/qmail/bin/qmail-getpw phpmail(id)
서버도메인(ultraqmail.com)
이렇게 했을때
phpmail9999/
메일박스가들어갈위치/서버도메인/phpmail
이렇게 떨어지면 정상입니다.
여기서 phpmail은 메일유저입니다. phpmail은 실 계정이 아닌 가상계정으로 디비에 저장됩니다.
이렇게 설정해 놓으면 차후 새로운 메일들은 phpmail 아랫쪽으로 쌓이게 됩니다.

================================================== =============
여기까지 하면 일단 아웃룩으로 메일 서비스를 이용할 수 있습니다.
물론 스팸메일이나 바이러스 등을 걸러주는 기능은 빠져있습니다.
================================================== ==============


6. imap
설치
1) imap-4.7c
및 해당 패치 다운로드
http://www.au.horde.org/pub/imap/old/ 에서 imap-4.7c2.tar.Z 를 다운로드
http://www.davideous.com/imap-maildir/distrib/imap-4.7/ 에서
imap-4.7-maildirpatched-1.00.tar.gz
를 다운로드
http://www.softagency.co.jp/products/mysql/imap.html 에서
imap-mysql-0.0.2.patch.gz
를 다운로드
** imap
을 사용하기 위해선 mysql패치와 maildir패치가 필요합니다. 두번째 링크에 보면
각 패칭들이 모두 있기는 하지만 일일이 다 패치해주려면 중복되는것두 있구 해서 어렵습니다.
그래서 imap-4.7-maildirpatched-1.00.tar.gz 이 파일을 선택했는데요. 요넘은 imap-4.7 maildir이 패치된 소스입니다. 이 두개가지구 설치합니다.

2) imap
소소 및 패치 구하기
imap-4.7c.tar.gz
imap-mysql-0.0.2.patch
imap-4.5_maildirpatched-1.00.tar.gz
imap-4.5-qmail.patch
imap-4.5-mdirlist.patch
imap-4.5-maildir980721-rename.patch
imap-4.5-maildir980721-delete.patch
imap-4.5-createproto.patch

-
소스의 압축을 풉니다.

tar xvf imap-4.7c.tar
cd imap-4.7c


패치는 patch 디렉토리에 모아놓습니다.

패치를 하기전에 다음과 같은것을 숙지하셔야 합니다.
위의 노가다는 이것을 위한 전초전에 불과합니다. 좀 고생을 더 심하게 하셔야 합니다.
다운받은 Maildir패치는 전부 4.5버전이므로 patch 명령어를 써서 패치를 할 수가 없고 반드시 해당 패치를 열어 내용을 실제 소스 코드에서 찾아서 적용시켜야 합니다.

패치방법은 다음과 같습니다.
예를 들어서...
imap-4.5-qmail.patch
을 패치를 한다면....
vi imap-4.5-qmail.patch
-> vi src/osdep/unix/env_unix.c
를 수정함을 알수 있습니다.

(diff
로 시작하는 문구로 시작해서 패치를 할 경로와 파일명이 나와있습니다.)

{
char tmp[MAILTMPLEN];
if (!sysInbox) { /* initialize if first time */
- sprintf (tmp,"%s/%s",MAILSPOOL,myusername ());
+ sprintf (tmp,"%s/Mailbox",myhomedir ());
sysInbox = cpystr (tmp); /* system inbox is from mail spool */
}
return sysInbox;
}
-> env_unix.c
의 해당 위치를 찾아 - 로 표시된 줄은 없애고 + 로 된줄은 추가
, 이런식으로 하시면 됩니다.

그럼 본격적으로 패치를 들어가도록 하죠.

cp imap-mysql-0.0.2.patch imap-mysql-0.0.2.patch.01
vi imap-mysql-0.0.2.patch.01
이곳에서 몇줄을 좀 지워주셔야 합니다.
36
번째 줄에서부터 148번째 줄까지 삭제를 합니다.

보시면 아시겠지만 그곳이 env_unix.c 부분을 패치하는 곳입니다. 이곳 전부를 삭제합니다.
그리고 난후에

patch -p1 < ../../patch/imap-mysql-0.0.2.patch.01

그리고 아까 지웠던 39-148줄 부분을 위에서 말씀드린 패치법으로 일일이 손으로 적용시켜줘야
합니다. 만약 그냥 넘어가시면 나중에 make시 에러 납니다.

*
참고사항 *
나와있는 Maildir패치가 4.5버전용이구 이미 mysql패치를 적용해 버려서 그냥 patch명령으로 수정이 안됩니다.
imap-4.5_maildirpatched-1.00.tar.gz
파일을 압축을 풉니다.
(MAP 4.5
Maildir patch를 적용해 놓은 패키지 인데... 이놈을 보고 풀면 도움이 됩니다. 나중에 patch시에 일부 파일은 사용합니다.)

4) imap-4.5-qmail.patch
위의 방법으로 패치합니다.

5) imap-4.5-mdirlist.patch
이것두 위의 a)와 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.

6) imap-4.5-maildir980721-rename.patch, imap-4.5-maildir980721-delete.patch
이 패치는 직접 수정하지 않고 아까 풀어놓은 imap-4.5_maildirpatched-1.00/src/osdep/unix/
에서 maildir.c maildir.h 두개를 복사해오면 패치는 적용이 된 상태이므로 특별히 수정해 줄 필요는 없습니다.

cp ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.c ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/maildir.h src/osdep/unix/

7) imap-4.5-createproto.patch
이것두 마찬가지로 열어서 원하는 파일을 직접 수정하면 됩니다.

8) make
전 추가 수정 사항
maildir.c
파일이 들어갔으니 이놈을 makefile에 추가해야합니다.
vi ../../patch/imap-4.5_maildirpatched-1.00/src/osdep/unix/Makefile
vi src/osdep/unix/Makefile

위의 Makefile maildir 이란 글자를 찾아 그것을 참조하여 아래의 Makefile의 해당 위치에 입력하면 된다. ( 4 5군데 정도)

9) src/c-client/mail.h
수정
mail.h
를 보시면 MESSAGECACHE라는 structure(구조체)가 있습니다.

unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;


이렇게 되어있는 부분에 포인터를 하나 추가시켜줍니다.

unsigned int spare : 1; /* first spare bit */
unsigned int spare2 : 1; /* second spare bit */
unsigned int spare3 : 1; /* third spare bit */
void *sparep; /* spare pointer */
void *maildirp; /* for the Maildir driver */ <--
요놈.
unsigned long user_flags; /* user-assignable flags */
} MESSAGECACHE;

- src/osdep/unix/Makefile
수정
SQLSERVERFILE=/var/qmail/control/sqlserver

10)
몇가지 ssl에 관련된 파일 복사
cp /usr/kerberos/include/krb5.h /usr/include/openssl/
cp /usr/kerberos/include/com_err.h /usr/include/openssl/
cp /usr/kerberos/include/profile.h /usr/include/openssl/

11) vi src/osdep/unix/env_unix.c
다음과 같은 부분을(비슷하게 되었습니다.)
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-L/usr/lib/mysql/libmysqlclient.a -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------
이렇게 변경해 주세요.
----------------------------------------------------------------------------------------
+# for MySQL
+MYSQL_INCLUDE=-DUSE_MYSQL -I/usr/local/mysql/include
+MYSQL_LIBS=-lmysqlclient -L/usr/local/mysql/lib/mysql -lm -lz -lcrypt -lnsl -ldl
+MYSQL_OBJS=mysql.o
+SQLSERVERFILE=/var/qmail/control/sqlserver
----------------------------------------------------------------------------------------

12)
수정을 다 했으면 make를 한다.
make slx

--
주의 --
만약 아래의 error가 발생한다면 Linux 7.1이상에서는 ucspi-tcp, imap 설치시에 time.h가 문제가 됩니다.
따라서, 아래와 같이 수정하신다음에 다른 패키지를 컴파일하거나 설치하실때는 원래대로 되돌려 놓으면 됩니다.

-- error message --

make[3]: *** [osdep.o] Error 1
make[3]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[2]: *** [slx] Error 2
make[2]: Leaving directory `/home/test/webmail/imap-4.7b/c-client'
make[1]: *** [OSTYPE] Error 2
make[1]: Leaving directory `/home/test/webmail/imap-4.7b'

make: *** [slx] Error 2

# mv /usr/include/sys/time.h /usr/include/sys/time.h.ori
# ln -s /usr/include/time.h /usr/include/sys/time.h

그러나 우리는 애초부터 변경을 해서 사용했기 때문에 왠만해서는 에러가 안날겁니다.
만약 그래도 에러가 나신다면 패치를 잘못하신겁니다....
그렇다면 완전 생 노가다죠....

13)
추가환경 설정

cd /temp
cp -r imap4.7c /usr/local/imap
ln -s /usr/local/imap/c-client /usr/local/imap/include
ln -s /usr/local/imap/c-client /usr/local/imap/lib
cp /usr/local/imap/imapd/imapd /usr/sbin

이들은 xinetd 슈퍼데몬에 의해서 실행되므로 클라이언트 쪽에서 접속하여 사용할 수 있도록
하려면 환경설정을 수정해 주어야 합니다.

cd /etc/xinetd.d
vi imapd

service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}

서비스가 제대로 등록되었는지 확인한다.
vi /etc/services
imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap
주석으로 막혀 있는경우 제거해줍니다.

슈퍼데몬을 재가동한다.
/etc/init.d/xinetd restart

14)
설정 테스트

telnet
을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2000.70 server ready
user test@
도메인
초 주요사항입니다.
로그인 아이디는 반듯이 id@도메인입니다. 이 부분을 무시하시는 경향이 있는데 굉장히 중요한
사항입니다. 반듯이 id@도메인입니다.
아웃룩을 쓰실때에도 반듯이 id@도메인입니다. 꼭 기억하세요.

+OK User name accepted, password please
pass 1234

+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.

telnet
을 이용하여 로컬호스트 110포트(pop3)로 접속하여 테스트한다.
telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost IMAP4rev1 v12.264 server ready
a00 login test@
도메인 암호

a00 OK LOGIN completed

a01 list mbox *
* LIST (\NoInferiors) NIL INBOX
a01 OK LIST completed

a02 logout
################################################## ##


#######################
후설치################## #####3
컴파일전 작업

rm /usr/include/sys/time.h ->
메세지 확인하세요 반듯이 심볼릭 링크 time.h입니다!!!
mv /usr/include/sys/time.h.ori /usr/inlcude/sys/time.h

1. apache
설치
1)
http://httpd.apache.org/download.cgi<SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 돋움; ms

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux

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

<<<  LINUX 에서 Domain Name Server 설정하기 >>>

--------------------------------------------------------------------------------------------------------------------
※ 네임서버를 설정하기 전에 네임서버에 관련된 파일을 살펴보도록 하자.

 1. Resolver

   1.1. /etc/host.conf
     - 해석(Resolution) 방법 및 순서를 지정하는 파일 [ vi /etc/host.conf 로 확인 ]

   1.2. /etc/resolv.conf
     - 네임서버 위치를 지정하는 파일 [ vi /etc/resolv.conf 로 확인 ]


 2. Name Daemon : 실제 도메인 서버 설정시 편집해야 하는 파일들

   2.1. /etc/named.conf 

     - 네임서버 기본 설정 파일
     - /etc/init.d/named 네임서버 데몬이 참조하는 환경(설정) 파일

   2.2. /var/named

     - /etc/named.conf 파일에 등록된 지역(zone)에 대한 실제 .zone 파일들이 위치하는 곳.
     - 정방향 파일 설정을 위한 파일들의 위치.

   2.3. /var/named/*.zone

     - /etc/named.conf 설정 파일에서 정방향 조회에 대한 도메인(zone)을 추가한 후,
     - /var/named 디렉토리로 이동하여 도메인.zone 파일을 만들고, 적절히 수정해야 한다.
     - 예 : meimay7.co.kr.zone 파일을 생성하면 네임서버 동작시 /etc/named.conf 에서는 지정된
             디렉토리(/var/named)에 있는 meimay7.co.kr.zone 파일 내용을 참조하여 네임서버가
             작동하게 된다.

--------------------------------------------------------------------------------------------------------------------
 /etc/resolv.conf
--------------------------------------------------------------------------------------------------------------------

1. resolv.conf 파일은 자신의 호스트(내 로컬 컴퓨터)가 네임서버가 아니더라도 도메인 해석을
    위하여 어느 네임서버를 사용할 것인가를 설정해 주는 파일이다.


2. 따라서 이 파일이 존재하지 않으면 사용자의 호스트에서는 네임서버를 찾을 수 없으므로 접속
    하고자 하는 호스트 주소를 알 수 없게 되어 도메인 이름으로는 외부 네트워크에 접근할 수 없
    게 된다.


3. resolv.conf 파일 설정 옵션

   3.1. domain
     - 사용자 호스트의 로컬 도메인 이름을 넣는다.
     - 즉, 자신의 호스트 이름이다
     - # uname -a  또는 hostname 으로 자신의 호스트 명 확인

   3.2. search
     - 자동으로 찾을 도메인 주소를 입력.
     - 이 옵션으로 지정한 도메인에 대해서는 호스트명만 입력하면 자동으로 FQDN 으로 인식하여
       해당 사이트를 찾습니다. 예를 들어 search naver.com 으로 지정해 주면 웹 브라우저에서
       www 를 치면 www.naver.com 으로 인식한다.

   3.3. nameserver
     - IP 주소로 네임서버를 사용할 호스트를 입력합니다. 첫번째 네임서버에 장애가 발생되면
       두번째 네임서버, 세번째 네임서버 순으로 작동한다. ( 최대 3개지 지정 가능 )


4. 일단 /etc/resolv.conf 파일의 내부를 보자.

   4.1. 최초의 파일 내용

      # cat /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       nameserver 168.126.63.1
       nameserver 168.126.63.2

  4.2. 도메인이 없는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost                       --         추가부분
       search localhost                       --         추가부분
       nameserver 168.126.63.1             -- 자기 IP
       nameserver 168.126.63.2             -- 자기IP
      
   4.3. 도메인이 있는 경우 /etc/resolv.conf 를 다음과 같이 설정하자.   

      # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain www.meimay7.co.kr                       --         추가부분
       search meimay7.co.kr                                --         추가부분
       nameserver 168.126.63.1
       nameserver 168.126.63.2


   4.4. /etc/hosts 와 /etc/resolv.conf: 와의 차이점 ☆★☆★☆★

     - /etc/hosts 는 로컬 시스템에서 작동하는 간이 네임서버 파일이라 할 수 있습니다.
       로컬 시스템에서는 도메인 검색 질의를 할 경우 이 파일에서 해당 도메인이 있는지
       체크하여 없으면 /etc/resolv.conf 파일에 지정되어 있는 네임서버에게 도메인 검색
       을 질의하여 IP 주소로 변환이 이루어집니다. 그러므로 /etc/hosts는 엄밀히 말하자면,
       네이서버라 할 수 없지만, 로컬 시스템상에서는 도메인이나 IP 주소를 해석해 주는
       기능을 하므로, 간이 네임서버라 할 수 있습니다.

       /etc/hosts 파일에 인터넷 사이트의 도메인 주소를 단축시켜 단축시킨 이름으로 웹
       서핑이나 텔넷, FTP등에서 사용할 수 있는 이점은 있지만, 이용하는 사이트가 많아지면
       많아 질수록 이 파일에서 추가해 주는 것이 한계가 있으므로, 도메인에 대한 맣은 데이터
       베이스를 가지고 있는 네임서버가 필요하게 되는 것입니다.

       따라서 /etc/resolv.conf 파일에 nameserver 옵션으로 네임서버 주소를 지정해 주면
       수많은 도메인에 대해서 쉽게 변환이 이뤄지게 됨으로써 클라이언트 환경에서 인터넷을
       사용하는데 그만큼 편리하게 됩니다.


--------------------------------------------------------------------------------------------------------------------
☆★☆★☆★  Domain Name Server 설치  ☆★☆★☆★
--------------------------------------------------------------------------------------------------------------------

1. /etc/named.conf 파일에 정방향 조회를 위해서 다음 내용을 추가.

   1.1. 이 작업은 윈도우에서 DNS -> 정방향 조회 영역 -> meimay7.co.kr 도메인을 생성하는
          것과 같은 작업니다.

   1.2. /etc/named.conf 파일의 추가된 내용

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 //---------------------- 추가부분 -----------------------//
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

2. zone "meimay7.co.kr" 도메인을 추가하였으므로 /etc/named.conf 내용중 디렉토리가 지정한 곳에서
    .zone 파일을 참조할 수 있도록 "meimay7.co.kr.zone" 파일을 생성한다.

   2.1. # cp localhost.zone meimay7.co.kr.zone


3. meimay7.co.kr.zone 파일을 열어 SOA 부분 설정가 도메인(meimay7.co.kr)이 사용할 호스트를 추가하자

   3.1. 이 작업은 윈도우의 DNS -> 정방향 조회역역 -> meimay7.co.kr 탭에서 SOA 등의 각종 설정과
          www , mail 등의 호스트를 지정하는 부분과 같은 작업니다.

   3.2. vi meimay7.co.kr.zone 으로 파일을 열자

   3.3. meimay7.co.kr.zone 파일을 다음과 같이 되도록 설정하자. ( 문자뒤에는 꼭 . 을 붙인다!!!!!!!!!! )

 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.co.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분


4. 설정이 완료되었으면 네임서버를 재시작 하자.

   4.1. # cd /etc/init.d 명령으로 디렉토리 이동

   4.2. # ./named stop | restart | start      (네임서버 중지 또는 재시작 또는 시작 )

   4.3. # nslookup
          > server 172.15.0.19 ( 도메인 서버 지정 : 로컬 IP )
          > www.meimay7.co.kr;
            => 도메인에 해당하는 IP 가 출력되는 정상 셋팅된 것!


5. 기본 DNS 설정이 완료되었으므로 내 컴퓨터의 IP가 도메인 서비스를 할 수 있도록
    /etc/resolv.conf 파일에 다음과 같이 되도록 추가하자
  
   5.1. 파일 내용 추가

   # vi /etc/resolv.conf
      <<<<<<<< 내용 >>>>>>>>
       domain localhost09
       search localhost09
       nameserver 172.15.0.19                  -- 추가부분 (자신의IP) : 가장 위쪽에 추가하자[ 로컬 도메인이 1순위가 되도록 ]
       nameserver 168.126.63.1
       nameserver 168.126.63.2

   5.2. 이 과정은 윈도우2000 에서 "네트워크설정 -> TCP/IP -> 도메인 등록" 과정중 실제 도메인을 자신의
          컴퓨터에 등록하는 과정과 같다.


6. 5번과정까지 끝나면 도메인 설정이 완료된 것이다. " /usr/local/apache2/bin/httpd -k start "
    명령으로 apache 데몬을 실행시키고 웹 브라우저에서 5번과정까지 설정한 도메인으로
    브라우저 접속이 가능한지 테스트 해보도록 하자.

    http://www.meimay7.co.kr


7. 여러개의 도메인 추가하기

   7.1. 여러개의 도메인 등록도 도메인 하나를 등록하는 방식과 동일힌다.

   7.2. /etc/named.conf 에 zone 영역을 추가한다.

 // generated by named-bootconf.pl

 options {
  //------------- /ver/named 디렉토리의 .zone 파일을 참조한다. -----------------------//
  directory "/var/named";
  //--------------------------------------------------------------------------------------------------//
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 //
 // a caching only nameserver config
 //
 controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
 };
 zone "." IN {
  type hint;
  file "named.ca";
 };

 zone "localhost" IN {
  type master;
  file "localhost.zone";
  allow-update { none; };
 };
 
 zone "meimay7.co.kr" IN {
  type master;
  file "meimay7.co.kr.zone";
  allow-update { none; };
 };

 //---------------------- 추가 도메인 부분 -----------------------//
 zone "meimay7.pe.kr" IN {
  type master;
  file "meimay7.pe.kr.zone";
  allow-update { none; };
 };
 //---------------------- 추가 도메인 부분 끝 -----------------------//

 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };

 include "/etc/rndc.key";

   7.2. /etc/named.conf 에 zone 영역이 추가 되었으면, /var/named 디렉토리에
         "추가도메인명.zone" 파일을 생성하자.

       # cp meimay7.co.kr.zone meimay7.pe.kr.zone

   7.3. /var/named/meimay7.pe.kr.zone 파일을 다음과같이 만들자.


 $TTL 86400                                                        (name 서버이름)     (name서버 관리자)
 @   1D IN SOA ns.meimay7.pe.kr. meimay7.hotmail.com. (
      42  ; serial (d. adams)
      3H  ; refresh
      15M  ; retry
      1W  ; expiry
      1D )  ; minimum

     IN NS ns.meimay7.co.kr.
     IN NS 172.15.0.19.           <====== IP 도 등록하자.
 @    IN A  172.15.0.19 ; 호스트 지정부분
 www    IN A  172.15.0.19 ; 호스트 지정부분

    7.4. 여러개 도메인 추가후 nslookup으로 테스트시 정상적으로 동작이 안될경우,
           " # /etc/init.d/named start " 명령으로 네임서버를 재시작 한 후 테스트 하자.

    7.5 새로 등록된 도메인으로 홈페이지가 뜨는지 웹브라우저에서 확인하자.

2009/07/17 20:33 2009/07/17 20:33
Posted
Filed under Linux

1. /etc/named.conf 셋팅  - 다음과 같이 zone 파일 위치 지정
---------------------------------   
zone "ubicomp.co.kr" IN {
        type master;
        file "ubicomp.co.kr.zone";
        allow-update { none; };
      };
---------------------------------
 
2. /var/named/셋팅도메인.zone 파일을 연다
-----------------------------------------------------------
 $TTL 86400
@       IN      SOA     ns.ifu.co.kr.   admin.ifu.co.kr.        (
                                        20040602        ;Serial
                                        10800           ;Refresh
                                        3600            ;Retry
                                        432000          ;Expire
                                        86400           ;Minimum
                                        )
        IN      NS      ns.ifu.co.kr.
        IN      MX 10   ifu.co.kr.

@       IN      A       211.198.225.184
ns      IN      A       211.198.225.180
;Alias
www             IN      A       211.198.225.184
webmail         IN      A       211.198.225.184
2차도메인명           IN      A       211.198.225.181
 
------------------------------------------------------------
 
3. service named restart  을 해 준다.
 
4. 지정된 서버에 가서 Httpd.conf 파일을 수정해 준다.
 <VirtualHost 211.198.225.182>
    ServerAdmin webmaster@mpro.ifu.co.kr
    DocumentRoot /home/mpro/public_html/
    ServerName mpro.ifu.co.kr
    ErrorLog logs/mpro.ifu.co.kr-error_log
    CustomLog logs/mpro.ifu.co.kr-access_log common
</VirtualHost>
 
 
5. /usr/local/apache/bin/apachectl restart
 
6. nslookup 도메인명    하여 확인

2009/07/17 20:32 2009/07/17 20:32