Computer/LINUX

qmail vpopmail mysql 설치

알찬돌삐 2012. 8. 10. 16:17

 

qmail + vpopmail 설치편


qmail을 설치해봅시다. 여기서는 qmail+vpopmail+mysql+courier-imap 기반으로 설치를 합니다.

설치할 소스

apache_1.3.31 (http://httpd.apache.org/download.cgi)
php_4.3.7 (http://www.php.net/downloads.php)
mysql_4.0.20 (http://dev.mysql.com/downloads/)
gd_2.0.26 (http://www.boutell.com/gd/http/)
freetype_2.1.9 (http://prdownloads.sourceforge.net/freetype)
ZendOptimizer_2.5.2 (http://zend.com/store/products/zend-optimizer.php)
imap_4.7c2 (ftp://ftp.cac.washington.edu/imap/)
courier-imap_3.0.7 (http://prdownloads.sourceforge.net/courier/)
libiconv_1.9.1 (http://ftp.gnu.org/pub/gnu/libiconv/)
qmail_1.03 (http://qmail.org)
vpopmail_5.4.5 (http://www.inter7.com/vpopmail.html)
daemontools_0.76 (http://qmail.org/moni.csi.hu/pub/qmail/qmail-run/)
ucspi-tcp_0.88 (http://qmail.org/moni.csi.hu/pub/qmail/qmail-run/)
autorespond_2.0.2 (http://www.inter7.com/devel/)
ezmlm_0.53 (http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/)
qmailadmin_1.2.1 (http://www.inter7.com/qmailadmin/)
maildrop_1.5.2 (http://prdownloads.sourceforge.net/courier/)
ntop_3.0 (http://sourceforge.net/projects/ntop)
libpcab (ftp://ftp.ee.lbl.gov)

패치파일

gd 패치 : patch_gd2.0.26_gif_040622 (http://downloads.rhyme.com.au/gd/)
daemontools 패치 : daemontools-0.76.errno.patch (http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/)
qmail 패치 : cocktail.patch (http://people.kldp.org/~eunjea/qmail/patch/)
ucspi-tcp 패치 : ucspi-tcp-0.88.errno.patch, ucspi-tcp-0.88.a_record.patch, ucspi-tcp-0.88.nobase.patch(http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/)
ezmlm 패치 : idx.patch (http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/)

▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧

1. 설치준비

먼저 설치할 소스를 다운받아 특정폴더에 넣어놓자

여기서는 /usr/local/source 디렉토리를 만들어서 여기에 모두 카피하였다.


2. RPM으로 설치된 패키지 제거

리눅스 설치를 everything으로 하였다면 rpm으로 APM이 설치되어있을 것이다.

해당 패키지들은 모두 제거해줘야한다.

먼저 관련 프로세스가 떠있는지 확인하고 떠있다면 죽여주자

apache 데몬이 있는지 확인

[root@localhost root]# ps -ef | grep httpd

root      4458  3462  0 20:02 pts/0    00:00:00 grep httpd

위와 같이 나오면 데몬이 없는 것이다.

실행중인 데몬이 있으면 데몬을 종료 (killall httpd)


mysql 데몬이 있는지 확인

[root@localhost root]# ps -ef | grep mysqld

이것 역시 떠있는 데몬이 있으면 종료해준다.


RPM 패키지 확인


설치된 apache 패키지 검색

[root@localhost root]# rpm -qa | grep httpd

httpd-manual-2.0.40-21

redhat-config-httpd-1.0.1-18

httpd-devel-2.0.40-21

httpd-2.0.40-21


apache 제거

[root@localhost root]# rpm -e --nodeps httpd-2.0.40-21

위와같은 방법으로 검색된 패키지들은 모두 삭제하자. --nodeps 옵션을 붙혀준 것은 의존성 때문이다.

이 옵션을 붙히지 않으면 다른 패키지가 이 패키지를 dependant 하고 있으므로 삭제할 수 없다는 메시지가 나온다.


설치된 mysql 패키지 검색

[root@localhost root]# rpm -qa | grep mysql

mysql-devel-3.23.54a-11

php-mysql-4.2.2-17

libdbi-dbd-mysql-0.6.5-5

mysql-server-3.23.54a-11

mysql-3.23.54a-11

mod_auth_mysql-1.11-12


mysql 제거

[root@localhost root]# rpm -e --nodeps mysql-3.23.54a-11

검색된 다른 패키지들도 동일한 방법으로 지워줌

설치된 php 패키지 검색

[root@localhost root]# rpm -qa | grep php

php-ldap-4.2.2-17

php-4.2.2-17

asp2php-gtk-0.76.2-5

php-manual-4.2.2-17

asp2php-0.76.2-5

php-devel-4.2.2-17

php-pgsql-4.2.2-17

php-odbc-4.2.2-17

php-snmp-4.2.2-17

php-imap-4.2.2-17


php 제거

[root@localhost root]# rpm -e --nodeps php-4.2.2-17

검색된 다른 패키지들도 동일한 방법으로 지워줌


gd 제거

[root@localhost root]# rpm -e --nodeps gd


freetype 제거

[root@localhost root]# rpm -e --nodeps freetype

3. libiconv 설치
웹메일에서 사용하게 될 iconv를 설치하자

[root@localhost root]# cd /usr/local/source/
[root@localhost source]# tar xvfz ./libiconv-1.9.1.tar.gz
[root@localhost source]# cd libiconv*
[root@localhost libiconv-1.9.1]# ./configure --prefix=/usr/local
[root@localhost libiconv-1.9.1]# make
[root@localhost libiconv-1.9.1]# make install


4. mysql 설치

mysql 그룹과 유저가 등록이 되어있는지 확인한다. 리눅스를 everything 으로 설치했다면 당연히 존재할것이다.

/etc/passwd 파일과 /etc/group 파일을 열면 존재여부를 확인할수 있다.


# vi /etc/passwd

:

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

:

# vi /etc/group

:

mysql:x:27:

:


보는바와 같이 이미 mysql 그룹과 유저가 생성되어 있다는 것을 알수 있다. Rpm으로 설치된 mysql때문이다.

만약 만약 생성되어있지 않다면 다음과같이 그룹과 유저를 추가시켜준다.


# groupadd mysql

# useradd -g mysql mysql


등록이 끝났으면 mysql을 다운받은 소스 디렉토리로 이동하여 설치할 준비를 하자

# cd /usr/local/source

[root@localhost source]# tar xvfz mysql*

[root@localhost source]# cd mysql*

[root@localhost mysql-4.0.20]# ./configure \

--prefix=/usr/local/mysql \

--with-charset=euc_kr \

--localstatedir=/usr/local/mysql/data


[root@localhost mysql-4.0.20]# make

[root@localhost mysql-4.0.20]# make install


인스톨까지 끝났다면 mysql에 사용될 기초적인 DB를 생성해준다.

[root@localhost mysql-4.0.20]# scripts/mysql_install_db


DB 생성후엔 데이터가 저장되는 폴더안의 내용물들의 소유권을 mysql 유저에게 주어야 한다.

[root@localhost mysql-4.0.20]# chown -R mysql.mysql /usr/local/mysql/data


환경설정 파일을/etc/my.cnf 에 복사한다.

[root@localhost mysql-4.0.20]# cp support-files/my-medium.cnf /etc/my.cnf


mysql 데몬스크립트 mysql.server 파일에 mysql_safe가 실행되는 라인에 language 옵션을 추가한다.

현재 설치하고 있는 mysql 버전은 4.0.20 임을 잊지말자.

[root@localhost mysql-4.0.20]# vi /usr/local/mysql/share/mysql/mysql.server

mysql.server 내용

$bindir/mysqld_safe --datadir=$datadir --language=korean --pid-file=$pid_file >/dev/null 2>&1 &


mysql 경로 설정

[root@dentistrytest mysql-4.0.20]# vi /root/.bash_profile

/usr/local/mysql/bin 추가

.bash_profile 내용

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin


부팅시 자동실행될 수 있도록 링크를 걸고 데몬을 띄워보자

[여기서 잠깐!]

mysql rpm 패키지를 제거할 때 관련패키지를 제거하지 않았다면 기존의 mysql이 부팅시 자동실행되도록 등록되어있을것이다. 여기서는 위와같이 링크를 걸어줬으므로 이 링크파일은 제거해줘야한다. 아까전에 생성한 링크원본 파일이 리눅스 배포판의 mysql데몬 이름과 같다면 새롭게 링크를 걸 필요가 없지만 지우고 새로이 만드는게 좋다.


root@localhost mysql-4.0.20]# cd /etc/rc.d/init.d/rc3.d

root@localhost rc3.d]# ls al *mysql*

lrwxrwxrwx    1 root     root           16 Oct 11 15:21 K20mysqld -> ../init.d/mysqld


위와같이 mysql 관련 링크가 있으면 삭제해주자

root@localhost rc3.d]# rm rf K20mysqld


rc5.d 디렉토리 내용도 똑같이 삭제해준다.

root@localhost mysql-4.0.20]# cd /etc/rc.d/init.d/rc5.d

root@localhost rc5.d]# ls al *mysql*

lrwxrwxrwx    1 root     root           16 Oct 11 15:21 K20mysqld -> ../init.d/mysqld

root@localhost rc5.d]# rm rf K20mysqld


이제 링크를 걸어주면 되겠다.

root@localhost mysql-4.0.20]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

이 과정에서 혹 같은 이름의 파일이 존재한다는 경고창이 나오면 y를 누르고 그냥 무시하자

root@localhost mysql-4.0.20]#ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld

root@localhost mysql-4.0.20]#ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

root@localhost mysql-4.0.20]# /etc/rc.d/init.d/mysqld start

위와같이 링크를 걸지 않고 편하게 하고 싶다면 /etc/rc.d/rc.local 파일을 vi 에디터로 열어서 제일 마지막 라인에

데몬파일의 경로를 써주면 되겠다.


mysql 데몬 확인

# ps -ef | grep mysql

mysql     3537  3501  0 15:02 ?        00:00:00 [mysqld]

500       4055  3421  0 15:04 pts/0    00:00:00 grep mysqld


이제 다 끝났으면 mysql에 접속을 해보자

[root@localhost mysql-4.0.20]# /usr/local/mysql/bin/mysql mysql

mysql>


위와같이 프롬프트가 떴다면 정상적으로 설치된것이다.

기타 mysql 계정 추가하는 법은 여기서 설명하지 않겠다. DB 계정추가 및 자세한 사항은 MYSQL TIP 메뉴를 이용 바란다.


5. Freetype 설치

# cd /usr/local/source

[root@localhost source]# tar xvfz freetype-2.1.9*

[root@localhost source]# cd freetype-2.1.9

[root@dentistrytest freetype-2.1.9]# ./configure

[root@dentistrytest freetype-2.1.9]# make

[root@dentistrytest freetype-2.1.9]# make install



6. GD 설치

# cd /usr/local/source

[root@localhost source]# tar xvfz gd*

[root@localhost source]# cd gd*


gif 지원을 위해 패치를 해준다. 현재 GD버전은 gd-2.0.26이다.

본인의 경우는 패치파일들은 모두 /usr/local/source/patches에 모아놨다. 패치파일이 다른 디렉토리에 있다면 경로를 적절하게 써주면 되겠다.

[root@localhost gd-2.0.26]# patch -l < ../patches/patch_gd2.0.26_gif_040622

[root@localhost gd-2.0.26]# ./configure --prefix=/usr/local/gd --with-freetype=/usr/local/include/freetype2

[root@localhost gd-2.0.26]# make

[root@localhost gd-2.0.26]# make install



7. Apache 설치(1)

php 컴파일을 위해 apache 를 설정해준다.

# cd ..

[root@localhost source]# tar xvfz apache*

[root@localhost source]# cd apache*

[root@localhost apache_1.3.31]# ./configure -prefix=/usr/local/apache


8. IMAP 설치 (웹메일도 설치할 경우만)

이쯤에서 php 컴팔할때 사용할 IMAP을 설치해주자 IMAP2001 시리즈나 2002시리즈는 비추한다. IMAP4.7C2 강추!

최신 버전의 레드햇 계열에서 그냥 컴파일을 한다면 우리는 time.h 오류를 접할수 있을것이다.
IMAP configure 소스파일의 경로가 /usr/include/sys/time.h 로 되어있는데 한스텝 올려줘야 에러가 안난다.
현재 설치버전을 반드시 기억하기 바란다. 곧 이러한 삽질을 줄여줄수 있는 버전이 나올것이다.

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

설정이 끝났으면 IMAP을 설치하자

# cd /usr/local/source/
[root@localhost source]# tar xvfz imap*
[root@localhost source]# cp ?R imap* /usr/local/
[root@localhost source]# mv /usr/local/imap* /usr/local/imap
[root@localhost source]# cd /usr/local/imap
[root@localhost imap]# make slx
[root@localhost imap]# ln -s c-client include
[root@localhost imap]# ln -s c-client lib
[root@localhost imap]# cd c-client
[root@localhost c-client]# ln -s c-client.a libc-client.a
[root@localhost c-client]# cd ..
[root@localhost imap]# cp imapd/imapd /usr/sbin/in.imapd

xinetd.d/imap 파일을 vi 에디터로 열어서 아래와같이 수정한다. 만약 존재하지 않는다면 만들어준다.
[root@localhost imap]# vi /etc/xinetd.d/imap
service imap
{
        disable = no
        flags = REUSE
        socket_type = stream
        protocol = tcp
        wait = no
        user = root
        server = /usr/sbin/in.imapd
        log_on_failure += USERID
}

xinetd 데몬을 다시 띄우고 time.h를 원상복구 시켜준다.

[root@localhost imap]# /etc/init.d/xinetd restart
[root@localhost imap]# rm /usr/include/sys/time.h
[root@localhost imap]# mv /usr/include/sys/time.h.ori /usr/include/sys/time.h


9. php 설치

이제 php 설치를 한다. 여기서 좀 특별한 것은 는 imap function과 iconv function을 사용하기 위해 옵션을 추가한점이다.

# cd /usr/local/source

[root@localhost source]# tar xvfz php*

[root@localhost source]# cd php*


[root@localhost php-4.3.7]# ./configure --with-config-file-path=/etc \
 --with-exec-prefix=/usr/bin \
 --with-mysql=/usr/local/mysql \
 --with-apache=../apache_1.3.31 \
 --with-imap=/usr/local/source/imap-4.7c \
 --with-gd=/usr/local/gd \
 --with-freetype-dir=/usr/local/include/freetype2 \
 --with-jpeg-dir=/usr/lib/ \
 --with-png-dir=/usr/lib/ \
 --with-zlib-dir=/usr/lib/ \
 --with-language=korean \
 --with-charset=euc-kr \
 --disable-debug \
 --enable-track-vars \
 --enable-safe-mode \
 --enable-gd-native-ttf \
--with-kerberos \
 --enable-mbstring \
 --with-mime-magic \
 --with-iconv=/usr/local/lib/


[root@localhost php-4.3.7]# make

[root@localhost php-4.3.7]# make install


php 환경설정 파일 복사

[root@localhost php-4.3.7]# cp ./php.ini-dist /etc/php.ini


10. apache 설치(2)

[root@localhost php-4.3.7]# cd ../apache*

[root@localhost apache_1.3.31]# ./configure --prefix=/usr/local/apache \

--activate-module=src/modules/php4/libphp4.a \

--enable-module=so \

--enable-shared=max \

--sysconfdir=/usr/local/apache/conf \

--htdocsdir=/usr/local/apache/htdocs \

--logfiledir=/var/log/httpd


[root@localhost apache_1.3.31]# make

[root@localhost apache_1.3.31]# make install


인스톨이 끝났으면 httpd.conf 파일을 수정해줘야한다.

[root@localhost apache_1.3.31]# vi /usr/local/apache/conf/httpd.conf

- ServerName 부분을 주석 해제하고 본인의 아이피나 도메인으로 설정한다.

ServerName 127.0.0.1

- 아래 부분에 index.php 추가

<IfModule mod_dir.c>

    DirectoryIndex index.html index.php

</IfModule>


- AddType 추가

AddType application/x-httpd-php .php .php3 .inc .ph .htm .html

AddType application/x-httpd-php-source .phps

디렉토리 보안을위해 Options 부분 Indexes 를 삭제해준다.

Options Indexes FollowSymLinks MultiViews


시스템 부팅시에 자동 실행되도록 링크를 걸어준다.

[root@localhost apache_1.3.31]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

[root@localhost apache_1.3.31]# ln s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S99httpd

[root@localhost apache_1.3.31]# ln s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S99httpd

[root@localhost apache_1.3.31]# /etc/rc.d/init.d/httpd start



11. Zend 설치

마지막으로 php 엔진 역할을 하는 zend를 설치하자

# cd ..

[root@localhost source]# tar xvfz Zend*

[root@localhost source]# cd ZendOptimizer-2.5.2-Linux_glibc21-i386

[root@localhost apache_1.3.31]# cd ../ZendOptimizer-2.5.2-Linux_glibc21-i386

[root@localhost ZendOptimizer-2.5.2-Linux_glibc21-i386]# ./install.sh


[root@dentistrytest ZendOptimizer-2.5.2-Linux_glibc21-i386]# vi /usr/local/Zend/etc/php.ini

register_globals = On 으로 설정


여기까지 웹메일을 위한 APM을 설치하였다. 잘 연동이 되었는지 간단하게 테스트를 해보자.

다음과같이 파일을 작성을 하여 브라우저에서 실행해보자 php 정보가 죽죽 뜬다면 잘 설치가 된 것이다.

<?

mysql_connetc('','','');

phpinfo();

?>

12. qmail 설치(1)

APM 연동이 잘 되었다면 이제 qmail을 설치해보자 본인은qmail 관련 패키지들을 /usr/local/source/webmail이라는 디렉토리에

모아놨고 관련 패치들은 /usr/local/source/patches에 모아놨다.

먼저 압축을 푼 다음 /var/qmail이라는 디렉토리를 만들자

[root@localhost root]# cd /usr/local/source/webmail

[root@localhost webmail]# tar xvfz qmail-1.03.tar.gz

[root@localhost webmail]# cd qmail-1.03

[root@localhost qmail-1.03]# mkdir /var/qmail

INSTALL.ids 파일을 열어서 해당하는 시스템 부분만 남기고 나머지는 지운다. 리눅스의 경우 다음과 같다.

[root@localhost qmail-1.03]# vi INSTALL.ids

groupadd nofiles

useradd -g nofiles -d /var/qmail/alias alias

useradd -g nofiles -d /var/qmail qmaild

useradd -g nofiles -d /var/qmail qmaill

useradd -g nofiles -d /var/qmail qmailp

groupadd qmail

useradd -g qmail -d /var/qmail qmailq

useradd -g qmail -d /var/qmail qmailr

useradd -g qmail -d /var/qmail qmails

[root@localhost qmail-1.03]# sh INSTALL.ids

위와같이 계정을 생성하고 관련패치를 해준다.

[root@localhost qmail-1.03]# cd ../patches

[root@localhost patches]# tar xvfz qmail-ej-cocktail-12.tar.gz

[root@localhost patches]# cd qmail-ej*

[root@localhost qmail-ej-cocktail-12]# cp cocktail.patch /usr/local/source/webmail/qmail*/

[root@localhost qmail-ej-cocktail-12]# cd /usr/local/source/webmail/qmail*

[root@localhost qmail-1.03]# patch -l < cocktail.patch

임은재님께서 만든 칵테일 패치는 여러가지 패치들을 한데 모아둔 것이기 때문에 이것만 해주면 다른건 안해줘도 된다. 걍 make 하면 에러가 반길것이다. 삽질하지말자 ;-)

먼저 conf-spawn에 숫자를 고쳐준다.

[root@localhost qmail-1.03]# vi conf-spawn

1000이라는 숫자가 있을것이다. 509로 바꾸자

왜 바꿔야 하는지 알고 싶다면 아래의 에러메세지를 해석하면 될 것이다. (사실은 제가 영어가 매우 짧습니다. ;- )

숫자를 고쳐주지 않고 컴파일을 하면 다음과 같은 메시지를 만날것이다.

: Oops, Your system's FD-SET() has a hidden limit of 1024 descriptors. : This means that the qmail daenoms could crash if you set the run- : time concurrency higher than 509. So I'm going to insist that the : concurrency limit in conf-spawn be at most 509. Right now it's 1000.

/usr/kerberos/include 가 include path에 올바르게 잡히게 하기 위해서 conf-cc 파일에 다음을 추가해준다.

[root@localhost qmail-1.03]# vi conf-cc

cc -O2 -DTLS=20021228 -I/usr/local/ssl/include -I/usr/kerberos/include

[root@localhost qmail-1.03]# make

[root@localhost qmail-1.03]# make setup check

[root@localhost qmail-1.03]# config

이것이 정상적으로 실행 되었다면 /var/qmail/control/ 안에는 qmail이 정상적으로 작동하기 위한 설정 파일들이 생겨야 한다. 만약 그렇지 않다면 서버의 DNS 설정(MX 레코드)에 문제가 있는 것이다.

config 과정에서 에러가 나면 다음과같이 해보자

[root@localhost qmail-1.03]# config-fast 도메인

13. ucspi-tcp 설치

tcpserver 와 tcpclient는 TCP 클라이언트-서버 응용 프로그램을 만들기 위한 명령행 도구들의 모음이다.

tcpserver는 접속을 기다리다가 연결시에 선택된 프로그램을 실행 시키고, 프로그램은 로컬과 원격 호스트 이름, IP 주소, 포트 번호등을 환경 변수로 제공 받는다.

tcpserver는 동시 접속수 제한을 제공하여 시스템의 프로세스와 메모리를 보호 할 수 있다. 동시에 40개 (기본값)의 동시 접속이 이루어지면, tcpserver는 부드럽게 새로운 연결을 지연 시킨다.

또한 tcpserver는 tcp-wrappers/tcpd의 hosts.allow와 비슷하지만 더 빠른 TCP 접근 제한 기능을 가지고 있다. 이 접근 제한 정책은 cdb의 해시(hash) 형태로 컴파일되어 수천개 호스트들의 관리도 쉽고 빠르게 할 수 있다.


이 패키지는 서버의 모든 입력과 출력을 감시할 수 있는 도구인 recordio를 포함 하고 있다.

tcpclient는 선택한 프로그램을 TCP 연결에 사용할 수 있으며, 제공되는 환경 변수들은 tcpserver의 그것과 같다.

이 패키지는 tcpclient를 사용한 여러가지 예제 클라이언트를 포함한다: who@, date@, finger@, http@, tcpcat, mconnect.


tcpserver 와 tcpclient는 TCP 프로토콜을 사용하는 UCSPI (UNIX Client-Server Program Interface)를 따른다.


tcpserver를 선호하는 이유는 다음과같다.


- 서비스로의 동시접속수를 제한,

- 특정 호스트에게 접근거부 가능,

- "로컬"호스트를 인식하고 신호를 부여해서 qmail-smtpd가 다르게 취급하도록 설정 가능.


[root@localhost qmail-1.03]# cd /usr/local/source/webmail

[root@localhost webmail]# tar xvfz ucspi-tcp-0.88.tar.gz

[root@localhost webmail]# cd /usr/local/source/webmail/ucspi-tcp-0.88

[root@localhost ucspi-tcp-0.88]# patch -l < ../../patches/ucspi-tcp-0.88.a_record.patch

[root@localhost ucspi-tcp-0.88]# patch -l < ../../patches/ucspi-tcp-0.88.errno.patch

[root@localhost ucspi-tcp-0.88]# patch -l < ../../patches/ucspi-tcp-0.88.nobase.patch

[root@localhost ucspi-tcp-0.88]# make

[root@localhost ucspi-tcp-0.88]# make setup check



14. daemontools 설치

daemontools은 UNIX 서비스를 관리하는 도구들이다.

supervise는 서비스를 감시하며, 서비스를 시작하고 만약 죽으면 재시작 시킨다. 새로운 서비스를 설정하는 것은 간단하다: 모든 supervise는 디렉토리와 서비스를 실행시키는 run 스크립트가 필요하다.

multilog 는 오류 메세지를 하나 또는 그 이상의 로그에 저장한다. 선택적으로 각 로그에 특정 패턴에 따라 타임스탬프를 남길 수 있다. 또한 제한된 크기의 자동 순환 로그를 사용하며, 디스크가 다 차더라도 데이터를 잃지 않는다.

다음과 같은 유틸리티들을 포함하고 있다.

Supervise, svc, multilog, accustamp, setuidgid


[root@localhost ucspi-tcp-0.88]# cd ..

[root@localhost webmail]#  mkdir -p /package

[root@localhost webmail]#  chmod 1755 /package

[root@localhost webmail]# cp daemontools* ./package

[root@localhost webmail]#cd package

[root@localhost package]# tar xvfz ./*

[root@localhost package]# cd admin/daemontools-0.76/src

[root@localhost src]# patch -l < /usr/local/source/patches/daemontools-0.76.errno.patch

[root@localhost src]# cd ..

[root@localhost daemontools-0.76]# package/install


이 것은tai64nlocal.c 의 두번째 줄``#include <sys/time.h>'' 를 ``#include <time.h>'' 로 수정하면 정상적으로 컴파일 할 수 있다 (life with qmail에서).



15. Autorespond 설치

[root@localhost daemontools-0.76]# cd /usr/local/source/webmail

[root@localhost webmail]# tar xvfz auto*

[root@localhost webmail]# cd auto*

[root@localhost autorespond-2.0.2]# make

[root@localhost autorespond-2.0.2]# cp autorespond /usr/local/bin



16. qmail 설치(2)

/var/qmail/rc 파일을 만들고 실행권한을 준다.

[root@localhost autorespond-2.0.2]# vi /var/qmail/rc

#!/bin/sh

exec env -PATH="/var/qmail/bin:$PATH" \

qmail-start ./Maildir/


[root@localhost autorespond-2.0.2]# chmod 755 /var/qmail/rc


이쯤에서 메시지 전달모드를 선택해야 하는데 여기서는 vpopmail의 계정을 이용할것이므로 생락한다.

참고해두면 좋을것이다.

Mailbox format

Name 

Location 

defaultdelivery 

Comments 

mbox

Mailbox

$HOME

./Mailbox

가장많이쓰이고, 대부분의 MUA가 지원함

maildir

Maildir

$HOME

./Maildir/

신뢰도가 높지만, 지원하는 MUA가 적음

mbox

username

/var/spool/mail

See INSTALL.vsm

전통유닉스메일복스



큐메일 데몬을 위한 디렉토리와 파일들을 생성한다.

[root@localhost autorespond-2.0.2]# mkdir -p /var/qmail/supervise/qmail-send/log

[root@localhost autorespond-2.0.2]# mkdir -p /var/qmail/supervise/qmail-smtpd/log

[root@localhost autorespond-2.0.2]# chmod +t /var/qmail/supervise/qmail-send

[root@localhost autorespond-2.0.2]# chmod +t /var/qmail/supervise/qmail-smtpd


이제qmail-send, qmail-smtp 구동파일을 만들어준다.

[root@localhost autorespond-2.0.2]# cd /var/qmail/supervise/qmail-send

[root@localhost qmail-send]# vi run

run 의 내용

#!/bin/sh

exec /var/qmail/rc


[root@localhost qmail-send]# cd log

[root@localhost log]# vi run

/var/qmail/supervise/qmail-send/log/run 의 내용

#!/bin/sh

PATH=/usr/local/bin:$PATH

exec setuidgid qmaill multilog t s2500000 n5 /var/log/qmail


[root@localhost qmail-send]# cd ../qmail-smtpd

[root@localhost qmail-smtpd]# vi run

/var/qmail/supervise/qmail-smtpd/run 의 내용

#!/bin/sh

Q_UID=`id -u qmaild`

Q_GID=`id -g qmaild`

exec /usr/local/bin/softlimit -m 8000000 \

     /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 qmail-smtpd]# cd log

[root@localhost log]# vi run

/var/qmail/supervise/qmail-smtpd/log/run 의 내용

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \

     /usr/local/bin/multilog t /var/log/qmail/smtp

위와같이 실행파일을 작성한후 다음과같이 그에 상응하는 퍼미션을 준다.

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

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

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

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


다음은 qmail-smtpd 를 위한 로그 디렉토리 만들기

[root@localhost qmail-smtpd]# mkdir -p /var/log/qmail/smtpd

[root@localhost qmail-smtpd]# chown qmaill /var/log/qmail /var/log/qmail/smtpd


다음 파일에는 qmail-smtpd가 릴레이를 허용 할 주소를 적어주는 것이다

해당 대역의 아이피만 메일서버에 접근이 가능하다.


vi /etc/tcp.smtp

tcp.smtp 내용 ex)

127.0.0.1:allow,RELAYCLIENT=""

147.46.169.:allow,RELAYCLIENT=""


이 파일은 실제로 tcpserver가 읽을 수 있는 cdb 형식으로 바꿔야 하므로 다음과 같이 해준다.

[root@localhost qmail-smtpd]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


qmail은 root 계정으로 메일을 배달하지 않으므로, 알리아스를 만들어 준다.

그리고 postmaster, mailer-daemon 도 역시 일반 계정으로 알리아스를 만드는 것이 좋다.


예를 들어 이 주소들로 도착하는 메일은 dentistry 란 계정으로 받아보려면

[root@localhost qmail-smtpd]# echo dentistry > /var/qmail/alias/.qmail-root

[root@localhost qmail-smtpd]# echo dentistry > /var/qmail/alias/.qmail-postmaster

[root@localhost qmail-smtpd]# echo dentistry > /var/qmail/alias/.qmail-mailer-daemon

[root@localhost qmail-smtpd]# cd /var/qmail/alias/

[root@localhost alias]# chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon


이제 큐메일 구동 스크립트 작성하여 자동으로 실행될 수 있도록 하자 구동스크립트는 하단에 있다.
이 스크립트를 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장 한 후 실행 퍼미션을 준다.

그럼다음 ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다. 리부팅 할때 qmail 데몬이 실행되도록 체크해준다

[root@localhost alias]# vi/ etc/rc.d/init.d/qmail

하단의 qmail 구동 스크립트 기입


[root@localhost alias]# chmod 755 /etc/rc.d/init.d/qmail


ntsysv 명령을 해줘서 qmail을 체크해준다.

ntsysv 항목에 qmail이 없으면 다음과 같이 해준다

[root@localhost alias]#chkconfig add qmail

[root@localhost alias]# ntsysv

qmail 체크


확인하고 싶으면 재부팅을 해보자 qmail 데몬이 떠있을것이다.

다 되었는가? 이제 Qmail 설치가 끝났으면 바로 vpopmail로 들어가자



17. vpopmail 설치

vpopmail은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 데몬등의 기능을 한다.

vpopmail이 제대로 작동하려면 vpopmail이 사용할 유저와 그룹을 만들어야 한다.


[root@localhost alias]# cd /usr/local/source/webmail

[root@localhost webmail]# tar xvfz vpopmail*


그룹과 유저를 다음과같이 생성해준다. 여기서는 유저 홈 디렉토리를 /var/vpopmail로 하였다.

[root@localhost webmail]# groupadd vchkpw

[root@localhost webmail]# useradd -g vchkpw -d /var/vpopmail vpopmail

[root@localhost webmail]# cd vpopmail*


ld.so.conf 파일에libmysqlso 라이브러리 경로를 써준다.

/usr/local/mysql에 설치를 했다면 라이브러리 경로는 /usr/local/mysql/lib/mysql 이 될것이다.

# vi /etc/ld.so.conf

/lib

/usr/lib

/usr/local/lib

/usr/kerberos/lib

/usr/X11R6/lib

/usr/lib/sane

/usr/lib/qt-3.1/lib

/usr/local/mysql/lib/mysql


ldconfig 를 한번 때려주자

[root@localhost vpopmail-5.4.5]# ldconfig

그리고bash 쉘을 사용하고 있다면 아래와 같은 명령을 실행해야 된다.

[root@localhost vpopmail-5.4.5]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql


mysql 관련 설정부분을 보고싶으면 README.mysql을 보자 친절하게도 mysql 설치법까지 나와있다.


[root@localhost vpopmail-5.4.5]#  ./configure --disable-roaming-users \

          --enable-logging=p \

          --disable-ip-alias-domains \

          --disable-passwd \

          --enable-clear-passwd \

          --disable-domain-quotas \

          --enable-auth-module=mysql \

          --disable-many-domains \

          --enable-auth-logging \

          --enable-mysql-logging \

          --enable-valias \

          --disable-mysql-limits


유용한 팁]
-disable-many-domains 옵션을 주면 도메인별로 테이블이 관리된다.
여기서는 이 옵션을 제외한다.

로밍 서비스를 사용할 것이라면 --enable-roaming-users=y 옵션을 추가한다.
vpopmail pop 서버의 로그 조절 옵션
아 무런 옵션을 주지 않고 컴파일 했다면 vpopmail pop서버는 팝 유저들이 어떤 이유로든 로그인을 실패 했을 경우에만 로그를 남긴다.(/var/log/maillog 또는 /var/log/messages)에) 다음과 같은 옵션으로 로그 조절이 가능하다.


--enable-logging=y : 모든 pop 로그인 기록과 오류 메시지를 남긴다.
--enable-logging=n : 아무런 로그도 남기지 않는다.
--enable-logging=e : 오류/ 치명적인 오류 메세지를 기록한다.
--enable-logging=p : 오류 로그에 암호를 포함한다.
--enable-logging=v : --enable-logging=y 와 같으며 사용자 암호를 로그에 포함한다.

참고: 매우 많은 수의 도메인과 메일 계정을 가진 대형 서버에서 vpopmail 유저들에게 SMTP 릴레이를 허용하도록 하려면
vpopmail을 MySQL를 사용하도록 컴파일 하고 tcpserver에 Matt Simerson이 만든 mysql 패치를 사용할 것을 권장한다.
http://matt.simerson.net/computing/mail/toaster

vpopmail 5.4.x 이상 버전은--enable-default-domain 컴파일 옵션이 없어지고 ~vpopmail/etc/defaultdomain 파일을 사용하도록 되었다. 이 파일에 직접 default domain 이름을 넣어주면 된다.


[root@localhost vpopmail-5.4.5]# make
[root@localhost vpopmail-5.4.5]# make install-strip
설치가 되었다면 ~vpopmail 안에는 bin doc domains etc include lib users 등의 디렉토리과 필요한 바이너리들이 생겼을 것이다.

다음과 같이 mysql 계정을 등록하자. 여기서 주의할점은 특수문자가 들어가면 에러가 난다는 점이다.
자신의 mysql 계정의 아이디나 패스워드에 특수문자가 들어가 있다면 다음과같이 싱글쿼테이션을 붙혀준다.
# echo "localhost|0|dentistry|'d#nt!stry'|vpopmail" > ~vpopmail/etc/vpopmail.mysql
# chown vpopmail.vchkpw ~vpopmail/etc/vpopmail.mysql # chmod 640 ~vpopmail/etc/vpopmail.mysql

쿼테이션을 붙혀서 생성했다면 생성 후 다음과 같이 원래대로 수정해준다.
# vi ~vpopmail/etc/vpopmail.mysql
localhost|0|dentistry|루트DB접속패스워드|vpopmail

이제 기본 릴레이 파일을 만들었다면 다음은 libmysql 라이브러리를 수동으로 카피해줘야한다.
Mysql을 소스로 컴파일하여 인스톨함으로써 경로를 찾지 못하는 것 같다.
다음과같이 smtp 릴레이 설정을 해준다.
Ex) echo "yourdomain.com" > vpopmail계정경로/etc/defaultdomain
[root@localhost vpopmail-5.4.5]# echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp
[root@localhost vpopmail-5.4.5]# echo "10.1.1.:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp
[root@localhost vpopmail-5.4.5]# echo "147.46.169.:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp

이제 기본 릴레이 파일을 만들었다면 다음은 libmysql 라이브러리를 수동 카피해줘야한다. Mysql을 소스로 컴파일하여 인스톨함으로써 경로를 찾지 못하는 것 같다. 삽질하지말자 ;-)

[root@localhost vpopmail-5.4.5]# cp p /usr/local/mysql/lib/mysql/libmysqlclient.so.12 /usr/lib

모든 설정이 끝났으면 clearopensmtp를 실행하여 vpopmail 작동될 수 있도록 하자.
[root@localhost vpopmail-5.4.5]# ~vpopmail/bin/clearopensmtp

마지막으로 crontab을 하나 설정해야 하는데, 이것은 cron에 의해 주기적으로 실행되어 릴레이가 허용된 IP 주소중 pop 인증 시간이
한시간 이상된 것이 있으면 지워준다.
vpopmail 컴파일시 별다른 옵션을 주지 않았다면 기본적으로 릴레이 허용 시간은 한시간이며 이것은 --enable-relay-clear-minutes=
옵션으로 바꿔줄수 있다.

[root@localhost vpopmail-5.4.5]# crontab -e
10,25,40,55 * * * * /var/vpopmail/bin/clearopensmtp > /dev/null 2>&1

qmail-smtpd 시동 스크립트는 vpopmail이 조절하는 cdb 파일을 참고하도록, 다음과 같이 바꾼다.
pop 서버 구동을 위한 디렉토리/파일 만들기
[root@localhost vpopmail-5.4.5]# mkdir /var/qmail/supervise/qmail-pop3d/log
[root@localhost vpopmail-5.4.5]# chmod +t /var/qmail/supervise/qmail-pop3d
[root@localhost vpopmail-5.4.5]# mkdir /var/log/qmail/pop3d
[root@localhost vpopmail-5.4.5]# chown qmaill /var/log/qmail/pop3d
[root@localhost vpopmail-5.4.5]# cd /var/qmail/supervise/qmail-pop3d/
[root@localhost qmail-pop3d]# vi 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 localhost \
/var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1


[root@localhost qmail-pop3d]# cd log
[root@localhost log]# vi run


#!/bin/sh
PATH=/usr/local/bin:/var/qmail/bin:$PATH
exec setuidgid qmaill multilog t s2500000 n5 /var/log/qmail/pop3d


만든 파일에 실행 권한을 주고 daemontool에 의해 실행될수 있도록 링크를 걸어준다.
[root@localhost log]# chmod 755 /var/qmail/supervise/qmail-pop3d/run
[root@localhost log]# chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
[root@localhost log]# ln -s /var/qmail/supervise/qmail-pop3d /service/qmail-pop3d


SMTP, POP 데몬 시작하기
이미 설치되어 있거나 실행되고 있는 메일 서버나 POP 데몬이 있다면 중지 시키고, 시스템에서 삭제한다.
/etc/xinetd.d 디렉토리에 imap 과 ipop3 를 vi 로 수정을 해준다.


imap 파일을 다음과같이 수정한다. 없으면 만들어준다
[root@localhost log]# vi /etc/xinetd.d/imap
service imap
{
        disable = yes
        flags = REUSE
        socket_type = stream
        protocol = tcp
        wait = no
        user = root
        server = /usr/sbin/in.imapd
        log_on_failure += USERID
}


ipop3 파일을 다음과같이 수정한다. 없으면 만들어준다.
[root@localhost log]# vi /etc/xinetd.d/ipop3
service pop3
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/ipop3d
        log_on_success  += HOST DURATION
        log_on_failure  += HOST
        disable                 = yes
}


이제 과감하게 sendmail 데몬을 죽일때가 되었다.
/etc/rc.d/init.d/sendmail 이 실행중이면 smtp 가 안된다. sendmail 을 죽이자


[root@localhost log]# cd /etc/rc.d/init.d
[root@localhost init.d]# ./sendmail stop


sendmail 바이너리를 사용하는 다른 어플리케이션들을 위해 대신 qmail의 그것을 링크 해준다.
[root@localhost init.d]# mv /usr/lib/sendmail /usr/lib/sendmail.old
[root@localhost init.d]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
[root@localhost init.d]# ln -s /var/qmail/bin/sendmail /usr/lib
[root@localhost init.d]# ln -s /var/qmail/bin/sendmail /usr/sbin

이제 vpopmail 구동 스크립트를 만들고 링크를 걸어주자 구동스크립트는 하단에 있다.
[root@localhost init.d]# vi /etc/rc.d/init.d/vpopmail
하단내용기입

[root@localhost init.d]# chmod 755 vpopmail
[root@localhost init.d]# ln s /etc/rc.d/init.d/vpopmail /etc/rc.d/rc3.d/S85vpopmail
[root@localhost init.d]# ln s /etc/rc.d/init.d/vpopmail /etc/rc.d/rc5.d/S85vpopmail
[root@localhost init.d]#/etc/rc.d/init.d/vpopmail start



18. courier-imap 설치
imap 서버이다. Qmail+vpopmail 기반은 반드시courier-imap 을 설치해줘야한다. 먼저 설치한 imap4.7c2 는 apm설치시 연동하기 위함이었다. 이 데몬은 위에서 disable 시켜주었다. 현재 가동될 imap 서버는 courier-imap 이다.
courier-imap은 컴파일까지는 일반유저계정으로 하고 인스톨은 루트로 해야한다.
먼저 일반계정이 컴파일 할수 있는 디렉토리로 소스를 옮기고 로긴계정을 변경한다.

[root@localhost init.d]# cd /usr/local/source/webmail
[root@localhost webmail]# cp courier-imap* /tmp
[root@localhost webmail]# cd /tmp
[root@localhost tmp]# chown dentistry.dentistry courier-imap*
[root@localhost tmp]# su dentistry
[dentistry@localhost tmp]# tar xvf courier-imap*
[dentistry@localhost tmp]# cd courier-imap*

일반계정으로 컴팔 하기 때문에 vpopmail의 mysql 연동부분에 접근할수 있는 권한을 줘야된다.

chmod 777 /var/vpopmail/lib

먼저 mysql 라이브러리 경로를 설정해주자.
[dentistry@localhost tmp]# env LIBS="-L/usr/local/mysql/lib/mysql -lmysqlclient -lz";
[dentistry@localhost tmp]# ./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 \
--without-authdaemon \
--without-authmysql \
--without-authldap \
--without-authdaemon \
--without-authpgsql


옵션에 대한 자세한 설명은README 파일을 보기 바란다.


[dentistry@localhost tmp]# make
[dentistry@localhost tmp]# make check

루트계정으로 변경
[dentistry@localhost tmp]# su
[root@webmail root]# cd /tmp/cour*
[root@webmail courier-imap-3.0.7]# make install
[root@webmail courier-imap-3.0.7]# make install-configure

부팅시 자동실행되도록 링크를 걸어준다.
[root@webmail courier-imap-3.0.7]# cp -p /usr/libexec/courier-imap/imapd.rc /etc/rc.d/init.d/courier-imap
[root@webmail courier-imap-3.0.7]# chmod 755 /etc/rc.d/init.d/courier-imap
[root@webmail courier-imap-3.0.7]# ln s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc3.d/S80courier-imap
[root@webmail courier-imap-3.0.7]# ln s /etc/rc.d/init.d/courier-imap /etc/rc.d/rc5.d/S80courier-imap

시스템을 재부팅하고 지금까지 설치한것들을 테스트해보자
/var/vpopmail/bin 디렉토리에는 도메인 및 계정을 관리할수 있는 명령들이 있다.
현재 여기서는 vpopmail과 mysql을 연동해서 시스템 계정과는 independent 하게 계정을 관리한다.
먼저 데몬들이 정상적으로 떠있는지 확인해보자
# ps aux | grep qmail
# ps aux | grep vpopmail
# ps aux | grep imap


데몬들이 떠있는가? 데몬이 정상적으로 떠 있다면 /var/vpopmail/bin으로 이동해서 도메인을 추가해보자
[root@webmail bin]# ./vadddomain webmail1.cymap.net
Please enter password for postmaster: 패스워드입력
enter password again: 패스워드 재입력
[root@webmail bin]# ./vadduser song@webmail1.cymap.net
Please enter password for song@webmail1.cymap.net: 패스워드입력
enter password again: 패스워드 재입력


/var/vpopmail/domains 에는 생성한 도메인 리스트가 보일것이다.
Mysql 에 vpopmail 이라는 DB로 접속해보자

[root@webmail bin]# mysql -u root -p vpopmail

mysql> show tables;

+--------------------+

| Tables_in_vpopmail |

+--------------------+

| dir_control        |

| lastauth           |

| valias             |

| vpopmail           |

+--------------------+

4 rows in set (0.02 sec)


vpopmail 테이블에 계정의 정보가 존재한다.
아웃룩에서도 잘 되는지 테스트를 해보자
시스템 계정과는 별개로 vpopmail과 mysql을 이용하여 연동하므로 이부분이 잘 되어야 한다.
아웃룩에서 인증이 안되면 qmail + vpopmail + mysql 연동에 문제가 있는것이다.
아웃룩에서 계정을 추가할때는 사용자 이름을 song@webmail1.cymap.net 같은 형식으로 풀네임으로 써주고
smtp 서버와 imap 서버를 셋팅해주자

19. ezmlm 설치
ezmlm 은 qmail 과 같이 사용할수 있는 강력한 메일링 리스트이다.
[root@webmail bin]# cd /usr/local/source/webmail
[root@webmail webmail]# tar xzf ezmlm-0.53.tar.gz
[root@webmail webmail]# tar xzf ezmlm-idx-0.40.tar.gz
[root@webmail webmail]# mv -f ezmlm-idx-0.40/* ezmlm-0.53/
[root@webmail webmail]# cd ezmlm-0.53
[root@webmail ezmlm-0.53]# patch < idx.patch


컴파일시 errno.h 파일을 찾을 수가 없다는 메시지를 보지 않기 위해서 다음과같이 내용을 추가해준다.
[root@webmail ezmlm-0.53]# vi error.h
맨 윗줄에 아래내용 추가
#include <errno.h>

[root@webmail ezmlm-0.53]# make std
[root@webmail ezmlm-0.53]# make
[root@webmail ezmlm-0.53]# make man
[root@webmail ezmlm-0.53]# make setup



20. qmailadmin 설치
qmailadmin 은 vpopmail의 웹 인터페이스이다. 도메인의 추가,삭제를 제외한 모든 기능을 웹상에서 할수 있으며, ezmlm 을 이용한 메일링 리스트 추가, 삭제, 관리까지 할수 있다.
[root@webmail ezmlm-0.53]# cd /usr/local/source/webmail
[root@webmail webmail]# tar xvfz qmailadmin*
[root@webmail webmail]# cd qmailadmin*
[root@webmail qmailadmin-1.2.1]# ./configure --enable-cgibindir=/usr/local/apache/cgi-bin \
--enable-htmllibdir=/usr/local/share/qmailadmin \
--enable-htmldir=/usr/local/apache/htdocs \
--enable-imagedir=/usr/local/apache/htdocs/images/qmailadmin

[root@webmail qmailadmin-1.2.1]# make
[root@webmail qmailadmin-1.2.1]# make install-strip


21. maildrop 설치
그리고 maildrop은 qmail-scanner가 이메일을 검사하기 위한 이메일 포맷을스캔가능한 형태로 변환하기 위해 maildrop의 reformime이란 기능을 이용한다.그러니 반드시 maildrop을 설치하여야 한다.
[root@webmail qmailadmin-1.2.1]# cd /usr/local/source/webmail
[root@webmail webmail]# bzip2 d maildrop*
[root@webmail webmail]# tar xvf maildrop*
[root@webmail webmail]# cd maildrop*
[root@webmail maildrop-1.5.2]# ./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/share/man \
--enable-sendmail=/var/qmail/bin/sendmail \
--enable-maildrop-uid=root \
--enable-maildrop-gid=vchkpw \
--enable-maildirquota \
--enable-restrict-trusted=1 \
--enable-trusted-users='root qmaild vpopmail'

[root@webmail maildrop-1.5.2]# make
[root@webmail maildrop-1.5.2]# make install-strip
[root@webmail maildrop-1.5.2]# make install-man


22. libpcap 설치
ntop을 설치하기 위해 필요한 라이브러리이다.
[root@webmail qmailadmin-1.2.1]# cd /usr/local/source
[root@webmail source]# tar xvfz libpcab
[root@webmail source]# cd libpcab*
[root@webmail libpcap-0.4]#./configure
[root@webmail libpcap-0.4]#make
[root@webmail libpcap-0.4]#make install



23. ntop 설치
네트워크 및 시스템 모니터링 툴이다. 필수는 아니지만 서버 관리를 위해서 설치해두자(건너 뛰어도 됨)
[참고] freebsd 에서는 gmake 를 설치후 make 할때 gmake 를 사용해야 함

[root@webmail libpcap-0.4]#cd /usr/local/source
[root@webmail source]# cp ntop-3.0.tgz /usr/local/
[root@webmail source]# cd /usr/local
[root@webmail local]# tar xvfz ntop*
[root@webmail local]# cd ntop*

[root@webmail ntop-3.0]# ./configure
[root@webmail ntop-3.0]# make[root@webmail ntop-3.0]# make install
[root@webmail ntop-3.0]# mkdir usr/local/ntop/conf
[root@webmail ntop-3.0]# /usr/local/ntop/ntop w 3000 -W 30000 -P /usr/local/ntop/conf -r 180 -i eth0 -m 147.46.169.131

웹브라우저에서 다음과같이 접속해서 화인해보자
http://아이피:3000

부팅시 자동 실행되도록 설정해준다.
[root@webmail ntop-3.0]# vi /etc/rc.d/rc.local
제일마지막줄에 다음추가
/usr/local/ntop/ntop -w 3001 -W 30001 -P /usr/local/ntop/conf -r 180 -i eth0 -m 147.46.169.131 -d


[참고]
-w: http 프로토콜의 포트번호
-W: ssl 로 띄울 포트번호
-P: ntop 이 시작될때 생성되는 db 화일이 존재할 디렉토리
-r: refresh 시간 default 3초
-m: 모니터링할 네트웍 대역
-d : 는 데몬




24. 구동스크립트


Qmail 구동 스크립트


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

 
    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 <<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 -- 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






vpopmail 구동 스크립트


#!/bin/sh
# Comments to support chkconfig on RedHat Linux

# description: sendmail; 쨈챘횉쨈?쨘체 쩐횊짚??째챠/쩔짭횉 MTA
 
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network


# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0


PATH=/var/vpopmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH


VPOPMAIL=`id vpopmail > /dev/null 2>&1 && echo ~vpopmail`


case "$1" in
  start)
        svok /var/qmail/supervise/qmail-pop3d
        if [ $? = 0 ]; then
                echo "vpopmail : already running"
                exit 0
        fi
        echo -n "Starting vpopmail: svscan"
        cd /service
        ln -s /var/qmail/supervise/qmail-pop3d .
        echo " vpopmail"
    ;;


  stop)
        svok /var/qmail/supervise/qmail-pop3d
        if [ $? != 0 ]; then
                echo "vpopmail : not running"
                exit 0
        fi
        echo -n "Stopping vpopmail: svscan"
        rm -f /service/qmail-pop3d
        echo -n " vpopmail"
        svc -dx /var/qmail/supervise/qmail-pop3d
        echo -n " logging"
        svc -dx /var/qmail/supervise/qmail-pop3d/log
        echo "."
    ;;
 
  stat)
    cd /var/qmail/supervise
    svstat qmail-pop3d qmail-pop3d/log
    ;;
  alrm)
    echo "Sending ALRM signal to vpopmail."
    svc -a /var/qmail/supervise/qmail-pop3d
    ;;
  reload|hup)
    echo "Sending HUP signal to vpopmail"
    svc -h /var/qmail/supervise/qmail-pop3d
    ;;
  pause)
    echo "Pausing vpopmail"
    svc -p /var/qmail/supervise/qmail-pop3d
    ;;
  cont)
    echo "Continuing vpopmail"
    svc -c /var/qmail/supervise/qmail-pop3d
    ;;
  restart)
    echo "Restarting vpopmail:"
    echo "* Stopping vpopmail."
    svc -d /var/qmail/supervise/qmail-pop3d
    echo "* Sending vpopmail SIGTERM and restarting."
    svc -t /var/qmail/supervise/qmail-pop3d
    echo "* Restarting vpopmail."
    svc -u /var/qmail/supervise/qmail-pop3d
    ;;
  cdb)
    tcprules $VPOPMAIL/etc/tcp.smtp.cdb $VPOPMAIL/etc/tcp.smtp.tmp < $VPOPMAIL/etc/tcp.smtp
    chmod 644 $VPOPMAIL/etc/tcp.smtp*
    echo "Reloaded tcp.smtp."
    ;;
  help)
    cat <<HELP
   stop -- stops mail service (pop connections refused, nothing goes out)
  start -- starts mail service (pop 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





########################################
# 작성자 : 송윤경 (Nick : Leopit)
# Contact : webmaster@leopit.com
# Last Updated : 2004. 10. 15
########################################

이 글은 스프링노트에서 작성되었습니다.

.

'Computer > LINUX' 카테고리의 다른 글

http 1.0 막기  (0) 2012.08.10
.htaccess  (0) 2012.08.10
Qmail Antispam 구축  (0) 2012.08.10
mrtg2  (0) 2012.08.10
mrtg  (0) 2012.08.10