강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Sendmail 컴파일하여 설치하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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을 확인하고 다운로드 하겠다.

 

 

 

 

 

ed0a995643cb253a41ca08b56cb7e711_1688977447_1757.jpg
 

 

먼저 다운로드 위치로 이동하기 위하여 /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의 버전이 새버전으로 바뀌어져 서비스하고 있다는 것을 확인할 수 있다.

 

 

 


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,811 개
  • 현재 접속자 :  98 명