Server Admin

본문 바로가기
사이트 내 전체검색


RedHat Linux >> Server Administration for Redhat Linux
[목차]
제4장 웹메일 서버 구축하기

    1. IMP를 이용한 웹메일 구축하기


이번 회에서 소개하는 웹메일 서버를 구축하기 위해서는 기본적으로 센드메일(Sendmail) 또는 큐메일(Qmail)을 이용한 메일 서버가 구축되어 있어야 한다(지난 회에서 소개). 또한 웹서비스(http 실행)가 가능해야 하고, 필요에 따라서는 데이터베이스와 php 같은 것들이 사용 가능해야만 한다.

이번 회에서는 메일 서버 구축의 연장으로 웹메일을 소개하는 것이므로, 웹메일 서버 구축을 위하여 선행할 것 중 하나인 웹서버 및 데이터베이스 구축에 대한 것은 다루지 않는다. 이것은 추후 별도의 서버 구축에서 자세히 다룰 것이다.

1. 웹메일이란 ?

앞서 간단하게 언급했지만 웹메일이란 별도의 프로그램 없이 인터넷이 가능하고 웹브라우저만 있다면 어디서나 메일을 주고받을 수 있는 서비스이다.

리눅스에서 웹메일을 구축하기 위한 상용 프로그램들이 있지만, 이러한 상용보다는 GPL를 따르는 공개 웹메일 프로그램을 이용해서 구축하는 법에 대해 소개한다 GPL로 공개된 프로그램의 장점이라고 한다면 소스가 공개되어 있어 누구라도 소스를 수정해서 원하는 대로 고칠 수 잇다는 것이다. 상용에 비해서 금전적인 부담도 없다. GPL이라고 해서 모두가 공짜는 아니다. 공개와 공짜는 별개의 문제이다. 특히 이번 회에서는 IMP라는 PHP로 작성된 웹메일 프로그램을 소개하고, 이를 이용하여 웹메일 서버를 구축하는 법을 소개한다.

2. IMP이란 ?

IMP(Internet Messaging Program)는 www.horde.org/imp에서 구할 수 있다. PHP로 작성되었으며, IMAP과 POP3 계정을 사용하는 웹메일 프로그램이다. 라이센스는 GPL(GNU General Public License)을 따른다. 따라서 누구나 사용할 수 있으며, 자유롭게 소스를 수정할 수 있다. 수정한 것을 재배포하거나 돈을 받고 파는 것에 대해서는 제약이 없지만, 수정된 소스에 대해서는 반드시 공개해야만 하며, 마찬가지로 GPL을 따라야한다.

이장에서 소개하는 것은 IMP 2.2.5이다. IMP 2.2.5에서는 한글 로케일이 포함되어 별도의 수정 없이 IMP에서 한글을 사용할 수 있으며, 메뉴 및 설명이 모두 한글로 제공된다. IMP를 설치하기 위해선 horde-1.2.5.tar.gz과 imp-2.2.5.tar.gz가 필요하다. 이것들은 www.horde.org/imp에서 다운로드받을 수 있다. Horde는 IMP 설치 및 설정을 위한 것들과 IMP를 위한 라이브러리가 포함되어 있다.

또한 IMP를 위해서 기본적으로 갖춰져야 될 것은 다음과 같다

·Php를 지원하는 php 3.0.16 또는 상위 버전(php4를 권장)

·Php를 지원하는 웹서버(아파치)

·imap 서버

·Horde와 phplib(horde에 포함)가 설치되어야 함.

이외에 옵션으로 갖추면 좋은 것들로는,

·SSL 웹서버(아파치+mod_ssl+OpenSSL)

·데이터베이스

·LDAP(서치엔진을 위해) 등이 있다.

여기서 소개하는 웹메일 구축 방법은 IMP의 설치 및 설정만을 다루며, 그 외의 웹서버 및 데이터베이스 등과 같은 것은 다루지 않는다. IMAP에 대한 것은 이전 장에서 다뤘으며, 웹서버와 PHP 및 데이터베이스에 대한 것은 다음 장에서 자세히 다루므로 이번 장에선 다루지 않는다.

3. Horde(phplib 포함) 설치

phplib는 horde에 포함되어 있다. 레드햇의 경우 /home/httpd/html에 웹 페이지가 위치하게 된다. 특별한 언급이 없다면, /home/httpd/html/을 포함한 디렉토리를 말한다. 예를 들어 $cd horde라고 한다면, 이는 cd /home/httpd/html/horde를 뜻한다. horde-1.2.5.tar.gz의 압축을 푼다.

# tar xvzf horde-1.2.5.tar.gz

horde-1.2.3이라는 디렉토리가 생기는데, 이 디렉토리 이름을 horde이라고 바꾸자.

# mv horde01.2.5 horde

# mv horde /var/www/html/

홈페이지 홈디렉토리가 /var/www/html일 경우에 위와 같이 horde디렉토리를 이동해 준다.

horde 디렉토리에 보면 phplib가 있다. phplib를 이용하기 위해서 php3.ini를 일부 수정해야 한다. php4를 사용한다면 php.ini이다. 레드햇의 경우 /etc/httpd/php3.ini가 있으며, php4의 경우는 /usr/lib/php/php.ini에 있다. 아래와 같이 수정해 준다.

php.ini환경설정파일의 위치는 설치시 지정할 수 있습니다. 현재 설치된 위치를 알고자 할 경우는 phpinfo()함수를 이용해야 한다. 레드햇 7.0에서는 /etc/ 에 위치한다.

# vi /etc/php.ini

; Note - track_vars is ALWAYS enabled as of PHP 4.0.3

magic_quotes_gpc        =       Off             ; magic quotes for incoming GET/POST/Cookie data

auto_prepend_file = /var/www/html/horde/phplib/prepend.php3

include_path            = ".:/usr/share/php:/var/www/html/horde/phplib"

 

수정된 부분을 적용하기 위해선 아파치 데몬을 재 실행해주어야 한다.

# /etc/rc.d/init.d/httpd.restart

다음으로 horde/phplib/local.inc를 수정해 주면 된다. MySQL을 사용하기 위해선 다음의 두 클래스의 주석을 없애주면 된다

# cd /var/www/html/horde/phplib/
# vi local.inc

...생략

/* To use an SQL database, uncomment and edit the following: */

class HordeDB extends DB_Sql {

  var $Host = 'localhost';

  var $Database = 'horde';

  var $User = 'hordemgr';

  var $Password = 'hordemgr';

  var $Port = '';

 

  function halt($msg) {

    // Printing here causes race condition trouble, so don't.

    //printf("<b>Database error (HordeDB):</b> %s<br>\n", $msg);

  }

}

#

class HordeCT extends CT_Sql {

  var $database_class = 'HordeDB';         // Which database class to use...

  var $database_table = 'active_sessions'; // and find our data in this table.

}

...생략

#

만약 데이터베이스를 사용하지 않고, shared memory를 사용한다면 그에 해당하는 부분의 클래스 주석을 없애주면 된다. Local.inc를 보면 각각의 클래스에 대한 설명이 있으니 그것을 보고 해당하는 부분의 주석을 없애주면 된다. 경우에 따라서는 prepend.php3을 수정해 주어야 한다. 여기에선 MySQL은 기본으로 설정되어 있으므로 수정할 필요가 없다.

이제 MySQL에 IMP를 위한 데이터베이스 및 테이블을 만들어야 한다. 이를 위해서 horde/scripts/database에 각각의 데이터베이스별로 정의해 놓은 스크립트가 있다. MySQL은 mysql_create.sql을 이용하면 된다.

# cd ../scripts/database

# mysql -u root -p < mysql_create.sql

Enter Password :

MySQL의 루트 패스워드를 입력하면, IMP를 위한 데이터베이스 및 테이블이 자동으로 만들어진다. 기본적인 환경에 대한 설정은 끝났다.

지금까지 한 것이 제대로 되었는지 확인하기 위해 horde/test.php3이라는 것이 제공된다. 웹 브라우저의 URL에 http://localhost/horde/test.php3이라고 입력해 보자. 그럼, 아래와 같은 화면을 볼수 있을 것이다.

 

다섯 개의 섹션으로 구분되어 있는데, Horde Versions, PHP Module Capabilities, PHPLIB Configuration, Miscellaneous PHP Settings이다. 정상적으로 동작한다면 녹색으로 YES라고 표시가 되고, 동작하지 않거나 잘못 설정된 부분이 있다면 빨간색으로 No라고 표시되며, 그에 대한 간단한 경고 메시지가 뜬다.

PHP Module Capabilities에서 IMAP Support:Yes가 아닌 No라고 한다면, IMP를 사용할 수 없다. 이것은 반드시 Yes라고 표시가 되어야 한다. php 3.0.16을 사용했을 때 실패하면, php4를 사용해야 한다.

PHP Configuration에서 Click here to test PHPLIB for Horde를 클릭하면 아래의 화면를 볼 수 있다. Php와 MySQL이 정상적으로 설정되었고 동작한다면, Per Session Data : 1이라는 것이 브라우저에서 Reload할 때마다 숫자 1이 1씩 증가할 것이다. 만약 숫자가 1씩 증가하지 않는다면, MySQL의 설정이 잘못되었거나 정상적으로 동작하지 않는 것이다.

 


4. IMP 설치

horde(phplib)를 설치했고, localhost/horde/test.php3에서 모든 것이 정상적으로 동작한다면 이제 IMP를 설치하면 된다. imp-2.2.5.tar.gz를 horde/아래에서 압축을 푼다.

# tar xvzf imp-2.2.5.tar.gz

tar를 실행하면 imp-2.2.5/이라는 디렉토리가 생성되며, 압축이 풀릴 것이다. 이 imp-2.2.3/이라는 디렉토리 명을 IMP로 바꾼다.

# mv imp-2.2.5 imp

# mv imp /var/www/html/horde

설정하는 것은 스크립트를 이용하는 법과 손으로 직접 수정해 주는 두 방식이 있다. 손으로 직접 수정하는 것보단 손쉬운 스크립트를 이용해서 설정하는 것을 소개한다. 스크립트를 이용하여 설정하는 것은 horde/에서 install.sh를 실행한다.

 

[root@w3 root]# cd /var/www/html/horde/

 

[root@w3 horde]# sh ./install.sh

 

Your blank configuration files have been created, please go to

the configuration utitlity at:

 

http://example.com/horde/setup.php3

 

[root@w3 horde]#

horde-1.2.5.tar.gz의 한글 로케일 파일 오류가 정상적으로 실행되지 않을 수도 있는데, 그 경우 horde/locale/kr/setup.lang에서 아래와 같이 편집하면 된다.

 

[root@w3 horde]# cd locale/kr

[root@w3 kr]# vi setup.lang

...생략

$lang->dutch = '네덜란드어(Dutch');

$lang->french = '불어(French');

$lang->graphics_url = '그림 기반 url(Graphics Base URL');

$lang->from_addres_desc     = '사용자@서버이름에 맡는 address(The address that completes the username@thisvalue combination.)';

의 사용이 잘못되어 있으므로, 위 부분을 찾아 아래와 같이 고쳐주면 된다.

 

$lang->dutch = '네덜란드어(Dutch)';

$lang->french = '불어(French)';

$lang->graphics_url = '그림 기반 url(Graphics Base URL)';

$lang->from_address_desc     = '사용자@서버이름에 맡는 address(The address that completes the username@thisvalue combination.)';

 

넷스케이프와 같은 웹 브라우저를 이용해서 http://localhost/horde/setup.php3에 접속하면 아래와 같은 IMP 설정 화면을 볼 수 있다.

기본 Language Type을 korea - [kr]로 바꾼다.

서버이름을 mail.leelab.co.kr로 바꾼다.

 

계속 다음을 클릭하면서, 넘어간다.

지시하는 대로 설정을 마무리하면 위와 같은 화면을 볼 수 있다. 마지막으로 secure.sh를 실행하여 지금까지 이용했던 test.php3와 setup.php3등의 설정을 위한 것들의 퍼미션을 변경해 주도록 한다. 이러한 것들은 secure.sh에 의해 자동으로 수행된다.

# cd /var/www/html/horde

# sh ./secure.sh

설치와 설정이 모두 끝났다. 웹 브라우저를 통해 localhost/horde/imp에 접속하면 아래와 같은 웹메일 로그인 화면이 나타난다. 만약 잘못된 부분이 있다면 위 과정을 반복하면 된다. 이제 여러분은 메일 계정을 입력하고 로그인을 하면 브라우저만으로 메일을 주고받을 준비가 된 것이다.

 

IMP를 모두 소개했다기보다 한번 동작하는 것을 보여주기 위한 식의 웹메일 구축이라 미흡한 점이 많다. 로그인의 경우 계정 정보가 인터넷상에 그대로 노출되는 위험성이 있는데, 이를 보완하기 위하여 OpenSSL을 이용하는 방법과 주소록 검색과 같은 기능을 이용하기 위한 LDAP등도 다루지 않았다. 그 외에도 다루지 않은 내용은 많으나, IMP에 과한 것은 이것으로 줄이겠다. 좀더 자세한 이야기는 IMP 홈페이지를 참고하길 바란다.

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.