2. Compile 및 설치
2.1 가져오기
http://www.sendmail.org에서 배포하는 sendmail의 배포판은 1998년 10월 31일 현재 8.9.1a이 최신입니다. (이는 sendmail 8.9.1과 8.9.1a로의 Patch로 이루어져 있습니다.) 우선 File을 Download 받아서 풀어둡니다.
temp $ gzip -dc sendmail.8.9.1.tar.gz | tar xvf -
temp $ cd sendmail-8.9.1/src
src $ patch < ../../sendmail.8.9.1a.patch
** Solaris등에 기본적으로 들어있는 patch를 사용하면 잘 되지 않습니다. GNU patch를 설치하셔서 사용하시기 바랍니다.
2.2 Compile
주의**) http://www.sendmail.org/compiling.html에서는 src Directory에서 직접 make를 이용해서 Compile 하지 말도록 하고 있습니다. 이 대신 Build Shell Script를 사용하도록 권하고 있습니다.
가장 쉬운 방법은 Build Script를 사용하는 것입니다. 단순히 sh Build 라고 치면 Compile 작업을 수행합니다. (기존에 sendmail을 설치했던 사람들 중에는 makesendmail Script를 사용한 사람들이 많은데 이는 Build Script와 동일한 Program을 가리키고 있으므로 Build를 사용해도 무방합니다. 따라서 makesendmail대신에 Build를 사용하기를 권합니다.)
sendmail 8.9.1 $ cd src
src $ sh Build
Configuration: os=SunOS, rel=5.6, rbase=5, rroot=5.6, arch=sun4, sfx=
Using M4=/usr/ccs/bin/m4
Creating obj.SunOS.5.6.sun4 using ../BuildTools/OS/SunOS.5.6
Making dependencies in obj.SunOS.5.6.sun4
gcc -M -I. -DNDBM -DNIS -DNISPLUS -DMAP_REGEX -DSOLARIS=20600 *.c >> Makefile
Making in obj.SunOS.5.6.sun4
gcc -O -I. -DNDBM -DNIS -DNISPLUS -DMAP_REGEX -DSOLARIS=20600 -c alias.c -o alias.o
위의 Message를 잠시 살펴보면 현재 System이 사용하고 있는 운영체제(os)는 SunOS이며 release는 5.6임을 알 수 있습니다. 또한 System의 Architecture는 sun4입니다. 나중에 sendmail.cf File을 만들 때 사용하는 m4는 /usr/ccs/bin/m4를 사용하고 현재 Directory 아래에 obj.SunOS.5.6.sun4 Directory에 Binary File들을 생성하며 Compile 때 사용하는 File은 ../BuildTools/OS/SunOS.5.6 임을 알 수 있습니다.
우선 Makefile에 Source File의 의존관계를 추가하고 본격적인 Compile을 시작합니다. (의존관계의 생성에 관한 내용은 Makefile에 관련된 자료를 참고하기 바랍니다.)
sendmail은 다양한 설정을 가지는데 주로 Macro를 사용하여 설정합니다. 위에서 사용된 -DNBDM -DNIS -DNISPLUS -DMAP_REGEX등이 그것입니다. 이것 이외에도 많은 Macro가 있으며 여기에서는 그 중에서 중요한 것만 설명하겠습니다.
-DNEWDB : Berkeley DB Package를 사용할 때 사용합니다. sendmail에서는 alias와 일반적인 map을 위해서 DB Package를 이용하는데 이 DB Package 중 Berkeley DB Package를 사용함을 의미하는 Macro입니다. 만일 설치하고자 하는 System에 Berkeley DB Package가 설치되어 있지 않다면 http://www.sleepycat.com에서 최신 버전의 Package를 가져다 설치하시기 바랍니다. sendmail에서는 DB Package로 Berkeley DB를 사용하기를 권하고 있습니다. 물론 다른 Package를 사용할 수 있으나 Berkeley DB Package를 구해서 설치하는게 여러모로 좋습니다. 필자도 처음에 gdbm을 사용하다가 Berkeley DB로 바꾸었습니다.
-DNDBM: DB Package로 옛날에 사용되었던 NDBM Package를 사용할 때 사용합니다. (NDBM Macro를 정의했을 때 gdbm Library를 Link 합니다.) 이 NDBM Package는 더 이상 사용되지 않으며 따라서 설치자는 NDBM대신에 NEWDB를 사용하는게 좋습니다.
-DNIS, -DNISPLUS: 각각 NIS와 NIS+를 지원하기 위해 사용합니다. 만일 System에서 NIS와 NIS+를 지원한다면 이 Macro를 정의해서 쓰시는게 좋습니다.
-DMAP_REGEX: Spam Mail등을 Filtering 할 때 정규식(Regular Expression)을 사용할 수 있도록 합니다. 이 Macro를 사용하려면 POSIX의 regex() Routine이 있거나, FSF에서 만든 regexp Library가 설치되어 있어야 합니다.
이 Macro들은 여러 개를 한꺼번에 정의해서 사용할 수 있습니다. (심지어는 -DNEWDB와 -DNDBM도 한꺼번에 정의해서 사용할 수 있습니다. 물론 이 경우에는 처음에 NDBM으로 만들어진 alias File을 읽어 Berkeley DB형태로 바꾸고 Berkeley DB형태로 계속 사용합니다.) 하지만 -DNDBM은 쓰지 말기를 필자는 추천합니다. 그리고 만일 -DNEWDB가 Build Script에 의해서 자동적으로 추가되지 않았다면 직접 Makefile을 수정해서 추가하도록 합니다.
이렇게 Makefile을 수정한 경우 새로 Compile 하는 것이 좋습니다. 만일 Program에 익숙하다면 필자가 직접 언급하지 않아도 잘 알겠지만, 그렇지 않은 경우 -DNEWDB와 같이 Macro를 수정했다면 모든 이진File인 *.o와 sendmail Binary를 삭제한 후 다시 Build를 실행하고, -ldb등으로 Library를 추가했다면 sendmail Binary만 삭제한 후 다시 Build를 실행하면 됩니다.
만일 Solaris 2.6을 사용한다면 -DNEWDB -DNIS -DNISPLUS -DMAP_REGEX를 MAPDEF에 정의하고, LIBS는 -lresolv -lsocket -lnsl -lkstat -ldb을 사용하는 것을 추천합니다. 필자는 Solaris 2.6에서 위와 같이 설정한 후 잘 쓰고 있습니다. 물론 이 설정을 사용해서 Compile 하려면 Berkeley DB가 이미 설치되어 있어야 합니다. 아직 Berkeley DB Package를 설치하지 않았다면 우선 그것부터 설치하시기 바랍니다.
2.3 설치 및 sendmail.cf생성
Program의 생성이 끝나면 obj.$os.$rel.$arch Directory(예를 들어 필자의 경우 SunOS.5.6.sun4)에 들어가서 Super User의 권한으로 make install을 실행하면 Manual등의 File이 Install 됩니다. 기본적으로 sendmail Binary는 /usr/lib/ Directory에 설치됩니다. 설치된 sendmail Binary의 Mode와 소유자 등은 아래와 같아야 합니다.
/ $ ls -l /usr/lib/sendmail
-r-sr-x--x 1 root bin 412896 6월 5일 18:04 /usr/lib/sendmail
만일 위와 다르다면 아래와 같이 입력하여 정확하게 만드시기 바랍니다.
/ $ chown root /usr/lib/sendmail
/ $ chgrp bin /usr/lib/sendmail
/ $ chmod 4555 /usr/lib/sendmail
** GNU groff가 없는 System에서는 Manual을 만들 때 Error가 납니다. GNU groff를 설치하면 깔끔하게(?) 해결이 되지만, 여의치 않을 때는 Manual을 설치하지 않고 sendmail Binary를 수작업으로 설치하여도 상관이 없습니다.
이제 sendmail Binary File은 설치를 했으므로 sendmail.cf File을 만들어야 합니다. sendmail.cf File은 직접 수정할 수 있으나 m4를 이용해서 생성하는게 쉽습니다. cf/cf Directory에는 다양한 mc File이 있으므로 자신의 System에 가장 적당한 mc File을 선택합니다. 예를 들어 필자의 경우는 Solaris 2.6이므로 genric-solaris2.mc File을 사용했습니다. 이 mc File을 이용해서 sendmail.cf File을 생성하는 방법은 아래와 같습니다.
sendmail $ cd cf/cf
cf $ m4 ../m4/cf.m4 generic-solaris2.mc > sendmail.c
이 sendmail.cf를 /etc/mail 에 복사한 후 /etc/sendmail.cf를 /etc/mail/sendmail.cf로 Symbolic Link를 생성합니다. (ln -s /etc/mail/sendmail.cf /etc/sendmail.cf)
** Linux의 경우에는 mc File이 없습니다. 이때는 다른 mc File에서 OSTYPE만 linux로 변경한 후 생성하면 됩니다. Linux에서 local mailer로 procmail을 사용하는 System에서 일반적인 mc File은 아래와 같습니다.
VERSIONID(`linux for smtp-only setup with procmail for korean mail`)dnl
OSTYPE(linux)dnl
FEATURE(nouucp)dnl
FEATURE(local_procmail)dnl
FEATURE(access_db)dnl
MAILER(local)dnl
MAILER(smtp)dnl
'Operating System > Linux' 카테고리의 다른 글
| Sendmail (난 Spam이 싫어요) (0) | 2007/06/20 |
|---|---|
| Sendmail (Third Party Relay) (0) | 2007/06/20 |
| Sendmail (sendmail.cf에 관한 얘기) (0) | 2007/06/20 |
| Sendmail (한글지원) (0) | 2007/06/19 |
| Sendmail (추가적인 작업들) (0) | 2007/06/19 |
| Sendmail (Compile & Installation) (0) | 2007/06/19 |
| Sendmail (Sendmail이란?) (0) | 2007/06/19 |
| Linux Security How-To (FAQ/결론) (0) | 2007/06/18 |
| Linux Security How-To (색인) (0) | 2007/06/18 |
| Linux Security How-To (보안 관련 자료) (0) | 2007/06/18 |
| Linux Security How-To (침입 도중이나 후에 할 일들) (0) | 2007/06/18 |