Sendmail 컴파일하여 설치하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,720 조회
- 0 추천
- 목록
본문
Sendmail 컴파일하여 설치하기
Sendmail의 설치는 다음과 같은 과정으로 이루어진다.
즉 아래 정리된 sendmail의 설치 절차는 절대적인 기준은 아니며, 필자의 경험에 의한 것이므로 아래의 절차와 설치예를 참조하여 운용하는 서버의 상황에 맞게 설치하면 된다.
①
현재
사용중인 sendmail 데몬확인 및 데몬 버전확인
②
현재
실행중인 sendmail 실행중지
③
현재버전 sendmail 데몬파일 백업하기
④
현재버전 sendmail.cf파일 백업하기
⑤
sendmail 최신버전
다운로드하기
⑥
압축풀기
⑦
디렉토리로
이동하기
⑧
컴파일하기
⑨
make install하기
⑩
에러발생으로
조치후 다시 make install하기
⑪
새로
생성한 sendmail데몬파일 복사하기
⑫
sendmail데몬
파일 소유자(그룹)권한 및 퍼미션 설정하기
⑬
새로
생성한 sendmail.cf파일 복사
⑭
새로
설치한 sendmail 시작하기
⑮ 새로 설치한 sendmail버전 데몬확인하기
Sendmail을 새로 설치하거나 업그레이드한다라는 의미는 아주 간단하다.
즉 sendmail데몬파일과 sendmail.cf파일을 새로 만들어서 설치하면 끝난다.
따라서 여기서 설명하고있는 설치의 전 과정은 /usr/sbin/sendmail 데몬파일과 /etc/mail/sendmail.cf설정파일을 새로 생성하는 아주 단순한 작업이다.
자, 그럼 시작해보도록 하겠다.
1. 현재 사용중인 sendmail 데몬확인 및 데몬버전 확인
먼저 새로 설치하기 이전에 현재 사용중인 sendmail데몬을 확인한 것이다.
[root@sulinux ~]#ps -ef | grep sendmail root 7599 1 0 01:10 ? 00:00:00 sendmail: accepting connections smmsp 7607 1 0 01:10 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 7618 7550 0 01:10 pts/2 00:00:00 grep --colour=auto sendmail [root@sulinux ~]# |
그리고 현재 운용중인 sendmail의 버전을 확인하기 위하여 다음과 같이 telnet을 이용하여 sendmail에 접속하였다.
아래 예에서 우리는 현재 이 서버에서 사용하고 있는 sendmail의 버전등을 확인할 수 있다.
참고로 Sendmail에 접속하는 여러가지 사용방법들은 뒤에서 자세히 다루게된다.
[root@sulinux ~]#telnet localhost 25
Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 sulinux.net ESMTP Sendmail 8.13.8/8.13.8; Thu, 7 May 2009 01:11:47 +0900
500 5.5.1 Command unrecognized: ""
500 5.5.1 Command unrecognized: "" quit
221 2.0.0 sulinux.net closing connection Connection closed by foreign host. [root@sulinux ~]# |
2. 현재 실행중인 sendmail 실행중지
이제 sendmail을
새로 설치하기 위하여 현재 사용중이던 sendmail의 실행을 종료한다.
종료하는 방법은 여러가지가 있지만 가장 일반적으로 사용하는 방법은 /etc/rc.d/init.d/sendmail스크립트를 이용하여 stop하는 것이다.
아래 예에서 볼 수 있다.
[root@sulinux ~]#/etc/rc.d/init.d/sendmail stop sm-client을 종료 중: [ OK ] sendmail를 종료 중: [ OK ] [root@sulinux ~]# [root@sulinux ~]#ps -ef | grep sendmail root 7634 7550 0 01:12 pts/2 00:00:00 grep --colour=auto sendmail [root@sulinux ~]# |
위와 같은 방법외에도 “service sendmail stop”이라고 하면 위와 동일하게 sendmail을 종료할 수 있다.
3. 현재버전 sendmail 데몬파일 백업하기
이제 현재 사용중이던
sendmail데몬을 백업해두도록 하겠다.
sendmail데몬파일의 위치는 /usr/sbin/sendmail이다.
다음과 같이 기존에 사용중이던 /usr/sbin/sendmail파일을 /usr/bin/sendmail.orig파일로 백업해 두었다.
[root@sulinux ~]#mv /usr/sbin/sendmail /usr/sbin/sendmail.orig [root@sulinux ~]# |
4. 현재버전 sendmail.cf파일 백업하기
다음은 기존에 사용중이던
sendmail.cf파일을 백업해두어야 한다.
이 파일의 원래 위치는 /etc/mail/sendmail.cf이며 /etc/mail/sendmail.cf.orig파일로 백업해두었다.
[root@sulinux ~]#mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.orig
[root@sulinux ~]# [root@sulinux ~]#ls -l /etc/mail/sendmail.cf.orig -rw-r--r-- 1 root root 58194 2월 9 17:57 /etc/mail/sendmail.cf.orig [root@sulinux ~]# |
5. sendmail 최신버전 다운로드하기
이제 새로운 버전의
sendmail을 다운로드한다.
말한 바와같이 sendmail의 공식 홈페이지는 www.sendmail.org이다.
sendmail소스파일을 제공하는 사이트는 공식홈페이지와 mirror사이트외에도 굉장히 많다.
하지만 가능하다면 www.sendmail.org사이트에서 다운로드하는 것이 가장 안전하다고 할 수 있다.
따라서 필자는 다음 그림과 같이 www.sendmail.org사이트에서 최신버전의 sendmail을 확인하고 다운로드 하겠다.
먼저 다운로드 위치로 이동하기 위하여 /usr/local/디렉토리로 이동하였다.
APACHE와 MYSQL등을 설치하였을 때와 마찬가지로 리눅스에서의 공식적인 어플리케이션 설치위치는 /usr/local/이다.
물론 다운로드위치는 어떤 곳이든 상관없지만 가능하다면 일관성을 유지하기 위하여 /usr/local/에서 다운로드 하겠다.
[root@sulinux ~]# cd /usr/local/ [root@sulinux local]# |
다음 보는 바와같이 wget을 이용하여 좀전에 복사해둔 URL을 입력하면 sendmail을 다운로드 할 수 있다.
다운로드 한 후에는 아래와 같이 반드시 ls명령어로 다운로드한 소스압축파일을 확인해보아야 한다.
[root@sulinux local]#wget ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.14.2.tar.gz --01:17:34-- ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.14.2.tar.gz => `sendmail.8.14.2.tar.gz' Resolving ftp.sendmail.org... 209.246.26.22 Connecting to ftp.sendmail.org|209.246.26.22|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /pub/sendmail ... done. ==> SIZE sendmail.8.14.2.tar.gz ... 2064346 ==> PASV ... done. ==> RETR sendmail.8.14.2.tar.gz ... done. Length: 2064346 (2.0M)
100%[==========================================================================>] 2,064,346 275K/s in 7.6s
01:17:42 (265 KB/s) - `sendmail.8.14.2.tar.gz' saved [2064346]
[root@sulinux local]# [root@sulinux local]#ls -l sendmail.8.14.2.tar.gz -rw-r--r-- 1 root root 2064346 5월 7 01:17 sendmail.8.14.2.tar.gz [root@sulinux local]# |
6. 압축풀기
이제 다운로드한 sendmail압축파일을 tar로 압축해제 한다.
압축해제를 하면 “sendmail-버전”이름의 디렉토리가 생성되고 그 디렉토리내에는 sendmail에 관한 파일들이 압축해제되어 저장된다.
[root@sulinux local]#tar xvfz sendmail.8.14.2.tar.gz sendmail-8.14.2/ sendmail-8.14.2/Makefile sendmail-8.14.2/Build sendmail-8.14.2/CACerts sendmail-8.14.2/FAQ sendmail-8.14.2/INSTALL sendmail-8.14.2/KNOWNBUGS sendmail-8.14.2/LICENSE sendmail-8.14.2/PGPKEYS sendmail-8.14.2/README sendmail-8.14.2/RELEASE_NOTES sendmail-8.14.2/devtools/ sendmail-8.14.2/devtools/README sendmail-8.14.2/devtools/bin/ sendmail-8.14.2/devtools/bin/Build sendmail-8.14.2/devtools/bin/configure.sh sendmail-8.14.2/devtools/bin/find_m4.sh sendmail-8.14.2/devtools/bin/find_in_path.sh sendmail-8.14.2/devtools/bin/install.sh … 이하생략 |
7. 디렉토리로 이동하기
이제 컴파일하기 위하여 “sendmail-버전”디렉토리로 이동한다.
[root@sulinux local]#cd sendmail-8.14.2/ [root@sulinux sendmail-8.14.2]# |
이동한 후에 “ls -l Build”라고 해보면 컴파일을 위한 Build라는 파일이 존재하고있다는 것을 확인할 수 있다.
8. 컴파일하기
이제 컴파일한다.
일반적인 컴파일은 "make"라는 컴파일러를 이용하지만 Sendmail의 배포버전에서는 "Build"라는 컴파일프로그램을 제공하고있다.
다음의 예를 보는 바와같이 그냥 "sh Build"라고 하면 컴파일된다.
컴파일이 끝나고나면 필요한 바이너리 파일이 생성이 되는데 sendmail 이라는 바이너리파일의 생성을 꼭 확인하기 바란다.
[root@sulinux sendmail-8.14.2]#sh Build Making all in: /usr/local/sendmail-8.14.2/libsm Configuration: pfx=, os=Linux, rel=2.6.18-92.SUL2.fd, rbase=2, rroot=2.6.18-92.SUL2, arch=i686, sfx=, variant=optimized Using M4=/usr/bin/m4 Creating /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/libsm using /usr/local/sendmail-8.14.2/devtools/OS/Linux … 중략 ln -f -s ../../include/sm/os/sm_os_linux.h sm_os.h cc -M -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL vacation.c >> Makefile make[1]: Leaving directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/vacation' Making in /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/vacation make[1]: Entering directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/vacation' cc -O2 -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL -c -o vacation.o vacation.c cc -o vacation vacation.o /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/libsmdb/libsmdb.a /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/libsmutil/libsmutil.a /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/libsm/libsm.a -ldb -lresolv -lcrypt -lnsl -ldl groff -Tascii -man vacation.1 > vacation.0 || cp vacation.0.dist vacation.0 make[1]: Leaving directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/vacation' [root@sulinux sendmail-8.14.2]# |
여기서 실행한 Build의 결과로 인하여 sendmail데몬파일인 sendmail이 생성되었다.
9. make install하기
이제 make install작업을
할 차례이다.
먼저 makemap이라는 디렉토리로 이동한다.
즉 “/usr/local/sendmail-버전/makemap”디렉토리에서 make install을 실행한다.
[root@sulinux sendmail-8.14.2]#cd makemap/ [root@sulinux makemap]# [root@sulinux makemap]#pwd /usr/local/sendmail-8.14.2/makemap [root@sulinux makemap]# [root@sulinux makemap]#make install /bin/sh ./Build install Configuration: pfx=, os=Linux, rel=2.6.18-92.SUL2.fd, rbase=2, rroot=2.6.18-92.SUL2, arch=i686, sfx=, variant=optimized Making in /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap make[1]: Entering directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap' install -c -o bin -g bin -m 555 makemap /usr/sbin install -c -o bin -g bin -m 444 makemap.0 /usr/man/man8/makemap.8 install: cannot create regular file `/usr/man/man8/makemap.8': 그런 파일이나 디렉토리가 없음 make[1]: *** [install-docs] 오류 1 make[1]: Leaving directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap' make: *** [install] 오류 2 [root@sulinux makemap]# |
보는 바와같이 Error가 발생하였다.
에러 발생이유는 sendmail의 man페이지파일을 저장하는 디렉토리가 생성되어 있지않았기 때문이다.
10. 에러발생으로 조치후 다시 make install하기
이제 이 에러를 조치하기 위하여 다음과 같이 /usr/man/man8디렉토리를 생성해주었다.
[root@sulinux makemap]#mkdir /usr/man/ [root@sulinux makemap]# [root@sulinux makemap]#mkdir /usr/man/man8/ [root@sulinux makemap]# |
그리고 다시 make install을 실행하였다.
정상적으로 실행되었으며 이번에 실행한 작업의 결과로 /usr/sbin/makemap파일이 생성되었고 /usr/man/man8/makemap.8파일이 생성되었다.
[root@sulinux makemap]#make install /bin/sh ./Build install Configuration: pfx=, os=Linux, rel=2.6.18-92.SUL2.fd, rbase=2, rroot=2.6.18-92.SUL2, arch=i686, sfx=, variant=optimized Making in /usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap make[1]: Entering directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap' install -c -o bin -g bin -m 555 makemap /usr/sbin install -c -o bin -g bin -m 444 makemap.0 /usr/man/man8/makemap.8 make[1]: Leaving directory `/usr/local/sendmail-8.14.2/obj.Linux.2.6.18-92.SUL2.fd.i686/makemap' [root@sulinux makemap]# |
11. 새로 생성한 sendmail데몬파일 복사하기
이제 앞에서 실행한 Build의
결과물인 sendmail데몬파일을 /usr/sbin/sendmail로
복사할 것이다.
즉 “/usr/local/sendmail-8.14.2/ obj.Linux.2.6.18-92.SUL2.fd.i686/sendmail/”에 새로 생성된 sendmail데몬파일을 /usr/sbin/sendmail로 복사한 것이다.
그리고 복사된 sendmail데몬파일을 ls로 확인하였다.
[root@sulinux makemap]#cd obj.Linux.2.6.18-92.SUL2.fd.i686/sendmail/ [root@sulinux sendmail]# [root@sulinux sendmail]#ls -l sendmail -rwxr-xr-x 1 root root 655242 5월 7 01:19 sendmail [root@sulinux sendmail]# [root@sulinux sendmail]#cp sendmail /usr/sbin/sendmail [root@sulinux sendmail]# [root@sulinux sendmail]#ls -l /usr/sbin/sendmail -rwxr-xr-x 1 root root 655242 5월 7 01:23 /usr/sbin/sendmail [root@sulinux sendmail]# |
12. sendmail데몬 파일 소유자(그룹)권한 및 퍼미션 설정하기
이제 복사된 sendmail데몬파일의 소유자, 소유그룹 그리고 퍼미션을 설정해야한다.
/usr/sbin/sendmail의 소유자는 root이며, 소유그룹은 smmsp이다.
소유그룹이 smmsp인 이유는 smmsp의 홈디렉토리가 /var/spool/mqueue디렉토리이기 때문이며 메일큐디렉토리인 /var/spool/mqueue디렉토리내의 메일을 처리해야하기 때문이다.
[root@sulinux sendmail]#chown root:smmsp /usr/sbin/sendmail [root@sulinux sendmail]# [root@sulinux sendmail]#chmod 2755 /usr/sbin/sendmail [root@sulinux sendmail]# [root@sulinux sendmail]#ls -l /usr/sbin/sendmail -rwxr-sr-x 1 root smmsp 655242 5월 7 01:23 /usr/sbin/sendmail [root@sulinux sendmail]# |
13. 새로 생성한 sendmail.cf파일 복사
이제 다음은
sendmail.cf파일을 새로 만들어야 한다.
“/usr/local/sendmail-버전/cf/cf”디렉토리에 보면 운영체제별로 별도로 준비되어있는 여러가지 cf파일들이 있다.
그 중에서 generic-linux.cf파일을 /etc/mail/sendmail.cf파일로 복사하면 된다.
즉 generic-linux.cf파일은 리눅스에서 사용하는 sendmail설정파일이므로 이 이름을 바꾸어서 /etc/mail/sendmail.cf파일로 복사한 것이다.
[root@sulinux sendmail]#cd /usr/local/sendmail-8.14.2/cf/cf/ [root@sulinux cf]# [root@sulinux cf]#ls -l generic-linux.cf -r--r--r-- 1 1037 root 41630 11월 1 2007 generic-linux.cf [root@sulinux cf]# [root@sulinux cf]#cp generic-linux.cf /etc/mail/sendmail.cf [root@sulinux cf]# [root@sulinux cf]#ls -l /etc/mail/sendmail.cf -r--r--r-- 1 root root 41630 5월 7 01:26 /etc/mail/sendmail.cf [root@sulinux cf]# |
14. 새로 설치한 sendmail 시작하기
이제 sendmail데몬파일과 sendmail.cf파일의 설치작업이 끝났다.
확인해보도록 하겠다.
먼저 새로 설치한 sendmail데몬을 시작해 보겠다.
시작하는 방법은 /etc/rc.d/init.d/sendmail스크립트를 이용하여 start하면 된다.
그리고 실행된 sendmail데몬을 확인한 것이다.
아래 작업예를 보기 바란다.
[root@sulinux cf]#/etc/rc.d/init.d/sendmail start sendmail (을)를 시작 중: [ OK ] sm-client를 시작 중: [ OK ] [root@sulinux cf]# [root@sulinux cf]#ps -ef | grep sendmail root 10188 1 0 01:27 ? 00:00:00 sendmail: accepting connections smmsp 10196 1 0 01:27 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 10200 7550 0 01:27 pts/2 00:00:00 grep --colour=auto sendmail [root@sulinux cf]# |
다음은 참고만 하기 바란다.
위의 방법외에도 다음과 같이 sendmail데몬을 직접 실행해주는 방법이 있다.
즉 “/usr/sbin/sendmail -bd -q30m”을 실행하면 되는데 여기서 -bd라는 것은 sendmail을 백그라운드로 실행하겠다라는 의미이며 -q30m은 메일큐에 보관할 시간을 30분으로 하겠다라는 의미이다.
[root@sulinux cf]#/usr/sbin/sendmail -bd -q30m [root@sulinux cf]# [root@sulinux cf]#ps -ef | grep sendmail root 10205 1 0 01:27 ? 00:00:00 sendmail: accepting connections root 10208 7550 0 01:28 pts/2 00:00:00 grep --colour=auto sendmail [root@sulinux cf]# |
이렇게해서 새로 설치한 sendmail데몬이 정상적으로 실행되었음을 확인하였다.
15. 새로 설치한 sendmail 버전 확인하기
이제 새로 설치한
sendmail의 버전을 확인해보도록 하겠다.
새로 설치하기 전에 했던 방법과 동일한 방법으로 “telnet localhost 25”를 실행하였다.
[root@sulinux cf]#telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 sulinux.net ESMTP Sendmail 8.14.2/8.14.2; Thu, 7 May 2009 01:28:21 +0900
500 5.5.1 Command unrecognized: ""
500 5.5.1 Command unrecognized: "" quit
221 2.0.0 sulinux.net closing connection Connection closed by foreign host. [root@sulinux cf]# |
위의 결과를 보면 sendmail의 버전이 새버전으로 바뀌어져 서비스하고 있다는 것을 확인할 수 있다.
관련자료
-
이전
-
다음