강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
sendmail 설치(8.11.1) 및 업그래이드
조회 : 8,169  




 

 

Sendmail의 설치는 다음과 같은 과정으로 이루어집니다.

 

설치대상 메일서버에서 의 현재사용중인 Sendmail의 버전은 8.9.3이며 현재(2000년 11월) Sendmail의 최신버전은 8.11.1입니다.

따라서 사용중인 8.9.3의 Sendmail을 내리고 새로운 버전인 8.11.1버전으로 설치를 해보도록 하겠습니다.

 

이 절차는 절대적인 기준은 아니며, 필자의 경험에 의한 것이므로 아래의 절차와 설치예를 참조하여 운용하시는 서버의 상황에 맞게 설치를 하시면 됩니다.

 

1. Sendmail 최선버전 받아오기

2. 현재 사용중인 Sendmail 버전확인후 데몬내리기

3. 압축풀기

4. 컴파일하기(Build실행)

5. make install하기

6. sendmail을 /usr/sbin/에 복사하기

7. 소유권 및 퍼미션 설정하기

8. sendmail.cf 파일 생성하기

9. sendmail.cf 파일 복사하기

10. sendmail 실행에러시 수정하기 #1 (에러미발생시 생략가능)

11. sendmail 실행에러시 수정하기 #2 (에러미발생시 생략가능)

12. sendmail 실행에러수정후 정상적인 실행

13. 설치한 sendmail의 동작상태 테스트 및 버전확인하기

 

 

이후의 과정들은 모두 root 계정으로 작업한 것입니다 .

시스템을 업그레이드하거나 시스템툴또는 새로운 프로그램을 설치하려면 반드시 root 계정을 사용하셔야합니다.

 

 

설명의 명확성을 위하여 필자의 설명은 밤색으로 하였으며 직접 입력한 명령어는 초록색으로 하였고, 명령의 결과메시지중 꼭 확인해야할 중요한 내용은 빨간색으로 했습니다.



 

Sendmail의 공식사이트는 www.sendmail.org입니다.  

현재(2000년 11월 23일)Sendmail의 최신버전은 8.11.1로서 이 사이트에 Sendmail을 다운받으시려면 http://www.sendmail.org/8.11.html에 접속하시면 됩니다.

아래의 접속예는 직접다운받기위해 필자가 이 사이트에 직접 접속한 것입니다.

 

 

 

위의 접속상태에서 보듯이 Sendmail의 다운은 3가지로 할 수 있습니다.

이중 가장일반적인 것은 첫 번째인 sendmail.8.11.1.tar.gz입니다.

이파일을 클릭하면 다운받으실수 있습니다.

 

다운받으신 후에는 메일서버로 구축(또는 운용중인 메일서버)하려는 서버로 전송하시면 됩니다.

 

물론, 운용중인 서버에서 직접 다운을 받으셔도 무방합니다.

단지 필자는 운용중인 리눅스를 서버로 사용할 때에는 X Windows프로그램을 설치하지 않았기 때문에 리눅스용 메일서버에서 웹브라우즈가 설치되어 있지 않기에 PC에서 다운받아서 서버로 전송한 것입니다.





 

 

새로운 Sendmail의 설치(또는 업그레이드)를 위해서는 현재 사용중인 Sendmail의 데몬을 내리거나 지워야합니다.

설치의 명확한 예를위하여 현재 사용중인 Sendmail의 버전(8.9.3)을 확인한 다음 Sendmail데몬을 내린예를 아래에 보인 것입니다.

 

[root@hlxsvr sendmail]# telnet localhost 25

Trying 127.0.0.1...

 

Connected to localhost.

 

Escape character is '^]'.

 

220 hlxsvr.medi2000.co.kr ESMTP Sendmail 8.9.3/8.9.3; Thu, 23 Nov 2000 00:35:42 +0900

quit

221 hlxsvr.medi2000.co.kr closing connection

Connection closed by foreign host.

 

[root@hlxsvr sendmail]# /etc/rc.d/init.d/sendmail stop

Shutting down sendmail:                                OK

 

 




압축풀기 _1

 

이제, 다운받은 Sendmail소스의 압축을 풀어야합니다.

Sendmail의 소스위치는 크게 중요하지 않습니다.

다만, Solaris나 Linux등의 서버에서는 새로 설치되는 프로그램의 위치의 설치에 이용되는 디렉토리는 /usr/local/ 이므로 여기서 압축을 풀어도 됩니다.

뒤에서 자세히 배울 것이지만 어디에서 압축을 푸는가보다는 컴파일후에 생성되는 Sendmail의 몇가지 중요한 파일들을 정확한 위치에 복사하고 배치하는 것이 더욱 중요합니다.

 

gzip이나 tar로 압축을 해제하는 방법에 대해서는 굳이 설명드리지 않아도 이미 알고계실 것으로 판단되지만, 모르시는 분은 "유닉스 압축파일"편을 보시면 자세히 나와있습니다. 이를 참조하시기 바랍니다.  

 

 

[root@hlxsvr notes1]# gunzip sendmail.8.11.1.tar .gz

[root@hlxsvr notes1]#

[root@hlxsvr notes1]#

[root@hlxsvr notes1]# tar xvfp sendmail.8.11.1.tar

sendmail-8.11.1/

sendmail-8.11.1/Makefile

sendmail-8.11.1/Build

sendmail-8.11.1/FAQ

sendmail-8.11.1/INSTALL

sendmail-8.11.1/KNOWNBUGS

.................



컴파일하기_1

 

압축을 풀고나면 새로운 디렉토리가 생성됩니다.

이 디렉토리의 이름은 "sendmail-8.11.1"입니다.

Sendmail을 컴파일하기 위하여 이 디렉토리로 이동합니다.

그리고난후 Sendmail을 컴파일합니다.

일반적인 컴파일은 "make"라는 컴파일러를 이용하지만 Sendmail의 배포버전에서는 "Build"라는 컴파일프로그램을 제공하고 있습니다.

다음의 예를 보시는 바와 같이 그냥 "sh Build"라고 하면 컴파일이 됩니다.

컴파일이 끝나고 나면  필요한 바이너리 파일이 생성이 되는데 sendmail 이라는 바이너리파일의 생성을 꼭 확인하시기 바랍니다.

(후에 이 파일을 Sendmail의 실행위치(대부분 /usr/lib/sendmail 또는 /usr/sbin/sendmail)로 복사를 할 것입니다. )

 

[root@hlxsvr notes1]# cd sendmail-8.11.1/

[root@hlxsvr sendmail-8.11.1]#

[root@hlxsvr sendmail-8.11.1]#

[root@hlxsvr sendmail-8.11.1]#

[root@hlxsvr sendmail-8.11.1]#

[root@hlxsvr sendmail-8.11.1]#

[root@hlxsvr sendmail-8.11.1]# sh Build

Making all in:

/home/notes1/sendmail-8.11.1/libsmutil

Configuration: pfx=, os=Linux, rel=2.2.14, rbase=2, rroot=2.2, arch=i686, sfx=, variant=optimized

Using M4=/usr/bin/m4



........



 

에러없이 Sendmail의 컴파일이 끝났다면 이제 "make install"을 하셔야합니다.

이를 수행하기 위해 "obj.Linux.2.2.14.i686" 디렉토리로 이동한후 다시 "makemap"이라는 디렉토리로 한번더 이동합니다.

아래의 실해예 처럼 이 디렉토리에서 "make install"을 하시면 됩니다.

 

 

[root@hlxsvr sendmail-8.11.1]# cd obj.Linux.2.2.14.i686/

[root@hlxsvr sendmail]# cd ..

[root@hlxsvr obj.Linux.2.2.14.i686]# cd makemap

[root@hlxsvr makemap]# make install

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

[root@hlxsvr makemap]# cd ..


 

새롭게 생성된 sendmail실행파일의 위치로 이동하기 위해 "cd sendmail"로 이동하였습니다.

 

이제 생성된 sendmail을 /usr/sbin에 복사를 하시면 됩니다.

생성된 Sendmail의 버전은 8.11.1로서 Sendmail이라는 실행파일과 필요한 몇가지 설정파일들 적당한 위치에 복사한후에 필요한 수정을 해주시면 설치가 끝나는 것입니다. (뒤에 자세히 설명)

 

알고 있는 것이겠지만 운용하시는 메일서버에서 sendmail의 위치를 확인하기 위해 "which sendmail"을 하였습니다.

그 결과 "/usr/sbin/sendmail"이라는 위치를 보실수 있습니다.

(일부 시스템에서는 sendmail의 위치가 "/usr/lib/sendmail"이 될 수도 있습니다. )

 

그런다음 mv라는 명령어도 원래의 sendmail을 백업해 두었습니다.

 

그리고 cp라는 명령어를 이용하여 새로운 버전의 sendmail을 /usr/sbin/sendmail로 복사를 하였습니다.

(만약 which sendmail의 결과 /usr/lib/sendmail이라고 나왔다면 여기서 sendmail의 복사를 "/usr/lib/sendmail"로 하셔야합니다. )

 

아래의 예를 보시는 바와같이 /usr/sbin/sendmail에서 /usr/lib/sendmail로 심블릭링크가 되어있는 것을 보실수 있습니다.

이는 sendmail의 실제위치는 /usr/sbin/sendmail이지만 /usr/lib/sendmail에서도 정상실행이 되도록 연결(link)만 시켜둔 것입니다.

이는 사용자들과 프로그래머들의 편의를 위하여 어떤위치에서도 sendmail이 정상적으로 작동되도록 하기위한 것입니다.

 

[root@hlxsvr obj.Linux.2.2.14.i686]# cd sendmail

[root@hlxsvr sendmail]# ls -l sendmail

-rwxr-xr-x    1 root     root       384948 Nov 23 00:31 sendmail

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]# which sendmail

/usr/sbin/sendmail

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]# mv /usr/sbin/sendmail /usr/sbin/sendmail.20001123.orig

[root@hlxsvr sendmail]# cp sendmail /usr/sbin/sendmail

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]# ls -l /usr/lib/sendmail

lrwxrwxrwx    1 root     root           16 Jul 19 01:51 /usr/lib/sendmail  -> ../sbin/sendmail

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]#

[root@hlxsvr sendmail]# ls -l /usr/sbin/sendmail

-rwxr-xr-x    1 root     root       384948 Nov 23 00:36  /usr/sbin/sendmail




 

sendmail의 소유권과 실행퍼미션을 설정한 것입니다.

 

sendmail은 root소유로 되어있어야하며, 그룹은 bin 소속으로 되어있습니다.

 

그리고 sendmail은 SetUID로 실행되도록 해야합니다.

따라서 실행퍼미션은 반드시 "4555"로 해주시면 됩니다.

 

(SetUID와 실행파일퍼미션에 대해서는 해당 파트의 내용에 자세히 설명되어 있습니다. )

 

 

[root@hlxsvr sendmail]# chown root:bin /usr/sbin/sendmail

[root@hlxsvr sendmail]# chmod 4555 /usr/sbin/sendmail




 

새로운 버전의 sendmail 복사를 정확히 하셨다면 다음으로 sendmail.cf를 생성해야합니다.

예와 같이 cf라는 디렉토리를 두 번 이동하면 sendmail.cf가 다양한 운영체제 버전으로 여러개 존재합니다.

 

현재 시스템이 리눅스이므로 "generic-linux.mc"를 이용하여 m4라는 명령어로 sendmail.cf를 생성할 수 있습니다.

(만약 Solaris등의 다른 시스템에서 sendmail을 설치하고 계시다면 "generic-solaris.mc등 그에 맞는 파일버전을 이용하시면 됩니다. )

 

아래의 예에서 보시는 바와 같이 m4라는 명령어를 이용하시면 sendmail.cf를 생성하실 수 있습니다.

 

그런다음 ls로 sendmail.cf가 정상적으로 생성이 되었나를 확인한 것입니다.

 

 

[root@hlxsvr sendmail]# cd ..

[root@hlxsvr obj.Linux.2.2.14.i686]# cd ..

[root@hlxsvr sendmail-8.11.1]# cd cf

[root@hlxsvr cf]# cd cf

[root@hlxsvr cf]#

[root@hlxsvr cf]# m4 ../cf.m4 generic-linux.mc > sendmail.cf

[root@hlxsvr cf]# ls -l sendmail.cf

-rw-r--r--    1 root     root        35222 Nov 23 00:40  sendmail.cf



자, 새로 생성된 sendmail의 설정파일인 sendmail.cf를 /etc/sendmail.cf로 복사를 해야합니다.

 원래의 sendmail.cf를 mv라는 명령어도 백업을 한후에 cp라는 명령어 sendmail.cf를 복사한 것입니다.

[root@hlxsvr cf]# mv  /etc/sendmail.cf  /etc/sendmail.cf.20001123.orig

[root@hlxsvr cf]# cp  sendmail.cf  /etc/sendmail.cf



이로서 sendmail의 설치가 끝난 것입니다.

하지만 이대로 sendmail을 실행시키면 몇가지 에러를 만나실수 있습니다.

 

먼저 sendmail을 실행시켜 봅니다.

sendmail을 실행시키는 방법은 두가지 방법이 있습니다.

 

첫 번째 방법은 시스템의 스크립트를 이용하는 방법입니다.

시스템 부팅시에 실행되는 각종데몬들의 스크립트가 위치하는 절대경로인 "/etc/rc.d/init.d"입니다.

이 디렉토리에 보시면 각종 데몬들을 실행(start)시키고 종료(stop)시키고 재시작(restart)시키는 여러 가지 스크립트들을 보실수 있습니다 .

sendmail또한 이 디렉토리에서 "sendmail start"라는 것으로 간단히 실행을 시킬 수가 있습니다.

 

두 번째 방법은 sendmail이 실제로 존재하는 경로(디렉토리위치)에서 직접실행을 시키는 방법입니다.

여기서는 sendmail의 위치가 /usr/sbin/sendmail이므로 "/usr/sbin/sendmail -bd -q30m"등과 같이 실행시킬 수 있습니다.

 

여기서는 첫 번째 방법으로 실행을 시켜보았습니다.

 

 

[root@hlxsvr cf]# /etc/rc.d/init.d/sendmail start

 

Starting sendmail: makemap: /etc/mail/sendmail.cf: No such file or directorymakemap: /etc/mail/sendmail.cf: No such file or directorymakemap: /etc/mail/sendmail.cf: No such file or directorymakemap: /etc/mail/sendmail.cf: No such file or directory

451 4.0.0 /etc/mail/sendmail.cf: line 0: cannot open: No such file or directory

FAILED

 

 

위의 실행결과를 보시는 바와 같이 에러가 발생을 하였습니다.

에러메시지를 자세히 읽어보시면 /etc/mail 이라는 디렉토리에 sendmail.cf가 존재하지 않기 때문에 발생하는 에러라는 것을 알 수 있습니다.

레드햇리눅스에서는 sendmail관련 설정파일들이 대부분 /etc/mail 이라는 디렉토리에 존재합니다.

만약 앞단계에서 sendmail.cf를 이 디렉토리로 복사를 했다면 아마도 이런 에러가 발생하지 않았을 수도 있습니다.

 

따라서 이런 에러는 다음과 같이 심블릭링크로 간단한 방법으로 해결할 수 있습니다.

[root@hlxsvr mail]# cd /etc

[root@hlxsvr /etc]# ls -l sendmail.cf

-rw-r--r--    1 root     root        35222 Nov 23 00:42 sendmail.cf

[root@hlxsvr mail]# ln -s /etc/sendmail.cf sendmail.cf




 

 

위의 에러를 수정후에 다시 sendmail을 실행시켰더니 다음과 같이 또다른 에러가 발생을 합니다.

이는 복사한 sendmail의 설정파일인 sendmail.cf의 63번째 라인에 있는 곳에서 뭔가 문제가 발생했기 때문이라는 에러메시지를 확인하실수 있을 것입니다.

 

이 에러는 sendmail.cw라는 파일(메일수신가능한 도메인들이 들어가는 파일)의 위치를 알지 못해서 발생하는 에러입니다.

 

해결 방법은 sendmail.cf파일의 63번째 행에 있는 Fw라는 설정지시자를 아래와 같이 sendmail.cw로 해주시면 됩니다.

 

원래 있던 "Fw/etc/mail/local-host-names"는 주석처리를 하신후에 "Fw/etc/sendmail.cw"를 새롭게 생성해 줍으로서 간단히 해결하였습니다.

 

 

[root@hlxsvr mail]# /etc/rc.d/init.d/sendmail start

Starting sendmail:

451 4.0.0 /etc/mail/sendmail.cf: line 63: fileclass: cannot open /etc/mail/local-host-names: No such file or directory

FAILED

 

[root@hlxsvr mail]# vi /etc/sendmail.cf

 

....

#Fw/etc/mail/local-host-names
Fw/etc/sendmail.cw

....

 



 

 

이제 다시한번 sendmail을 실행시켰습니다.

그랬더니 "Starting sendmail:                          OK"라는 메시지를 보여주면서 정상적으로 실행이 되었다는 것을 보실수 있습니다.

그런다음 ps라는 명령어를 이용하여 sendmail 프로세스가 정상적으로 뜨있는가를 확인한 것입니다.

 

[root@hlxsvr mail]# /etc/rc.d/init.d/sendmail start

Starting sendmail:                                                   OK

[root@hlxsvr mail]#

[root@hlxsvr mail]#

[root@hlxsvr mail]# ps -ef | grep sendmail

root     16357     1  0 00:46 ?        00:00:00 sendmail: accepting connections

[root@hlxsvr mail]#




 

좀더 완벽한 설치를 위하여 sendmail 접속테스트를 해보았습니다.

sendmail의 접속테스트 방법은 앞절에서 충분히 배우셨기 때문에 다들 충분히 알고 계시리라 생각됩니다.

 


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=291


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박성수
파파
헐렁고수