본문 바로가기
서버구축 (WEB,DB)

Sendmail 소스 및 RPM 설치

by 날으는물고기 2009. 4. 15.

Sendmail 소스 및 RPM 설치

sendmail은 리눅스 배포판에 가장 많이 포함되어 있는 MTA 입니다. ㅡ.ㅡ;;; 다 아는 얘기군여...
이번 강좌는 이글을 쓰는 시점에서 현재 최신 버전인 Sendmail.8.12.5버전의 소스설치와 RPM 설치 및
메일링 리스트로 많이 사용되고 있는 Majordomo 설치를 알아보도록 하겠습니다.

+ System Enviroment :

- OS : TurboLinux7 Server(2.4.9), TurboLinux6.1k(2.2.x) ,RedHat7.3(2.4.18-5)
- Install : Sendmail.8.12.5.tar.gz, Sendmail-8.12.5-2.i386.rpm, db4-4.0.14-9.i386.rpm, db4-devel-4.0.14-
9.i386.rpm

+ Install Ready....
ftp://ftp.sendmail.org
http://www.rpmfind.org
위의 사이트에서 최신버전을 다운로드 한다.
참고로 sendmail.8.11.x 버전은 커널2.2.x 대에서 sendmail8.12.x버전은 커널 2.4.x에서 설치하시는 것이 좋습니다.


+ RPM 설치하기 :

Sendmail RPM 설치는 쉽다. 주의할 점은 현재 최신 배포판에 포함되어 있는 db3대신에
Berkeley DB database library (version 4) db4를 설치 해야 한다는 것이다.
db4가 설치되어 있지 않다면 libdb4 .... 에 대한 의존성 오류가 발생할 것이다.

- 설치시작.
다운로드 받은 파일을 /tmp, 이나 /usr/local/src 등의 임시디렉토리로 옮긴 후 아래와 같이 한다.

- 다운로드 파일 :

sendmail-8.12.5-2, sendmail-cf-8.12.5-2, db4-4.0.14-9.i386.rpm, db4-devel-4.0.14-9.i386.rpm

sueni@bbung ...]# rpm -Uvh db4-*

sueni@bbung ...]# rpm -Uvh sendmail-*

sueni@bbung ...]# service sendmail start   
                  (/etc/rc.d/init.d/sendmail start|stop|restart)   <--- sendmail 데몬을 시작한다.


다음과 같이 sendmail이 정상 작동하는지 확인한다.

sueni@bbung ...]# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.sueni.osy ESMTP Sendmail 8.12.5/8.12.5; Wed, 17 Jul 2002 00:48:22 +0900
ehlo localhost
<--- 입력하는 부분.
250-mail.sueni.osy Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
sueni@bbung ...]# ps -ef | grep sendmail

root 25615 1 0 00:43 ? 00:00:00 sendmail: accepting connections <-- 접속을 허용하는지 확인
한다.


+ TarBall 설치하기 :

다운로드한 sendmail.8.12.5.tar.gz 파일을 임시디렉토리로 옮긴다.
실행중인 센드메일 데몬을 kill 한 후, 센드메일 RPM 버전을 삭제한다.
그리고 db4가 설치되어 있는 지 확인 후 없다면 반드시 설치를 해야한다.
db4가 설치되어 있지 않다면 -DNEWDB 옵션을 주라는 에러 메시지를 출력하게 되며,
센드메일 소스의 db 라이브러리를 컴파일하지 못 하게 된다.
최신배포판의 경우 db3가 설치 되어 있으므로 반드시 db4를 다운로드 받아 설치하기 바란
다.
rpm의 경우라면 db4 어쩌구 하고 메시지가 나오 겠지만... 소스컴파일 설치의 경우 컴파일 할때 옵션 주라는 식으
로 나온다.
(ㅡ.ㅡ;;; 본인의 경우 이것 때문에 5일 동안 잠을 이루지 못하였다... 의외로 쉬운 곳에 답이 있었다... 쩝... 나
바보...)

sueni@bbung ...]# rpm -qa | grep sendmail

sendmail-8.11.6
sendmail-cf-8.11.6

sueni@bbung ...]# rpm -e --nodeps sendmail-8.11.6
sueni@bbung ...]# rpm -e sendmail-cf-8.11.6

주의 할 것은 삭제하기 전에 /etc/mail/access, aliases, virtusertable 나 /var/spool/mail/ 등의 내용 들을
필요에 따라 BackUp 받아 두는 것이 좋다.

sueni@bbung ...]# cd /usr/local/src/

sueni@bbung ...]# tar xvfz sendmail.8.12.5.tar.gz

sueni@bbung ...]# cd sendmail-8.12.5/

-rwxr-xr-x 1 1037 1700 327 Sep 24 1999 Build*
-rw-r--r-- 1 1037 1700 321 Feb 7 1999 FAQ
-rw-r--r-- 1 1037 1700 1952 May 29 03:09 INSTALL
-rw-r--r-- 1 1037 1700 10125 Mar 5 09:45 KNOWNBUGS
-rw-r--r-- 1 1037 1700 4117 Apr 25 07:26 LICENSE
-rw-r--r-- 1 1037 1700 966 Aug 24 2001 Makefile
-rw-r--r-- 1 1037 1700 54971 Dec 20 2001 PGPKEYS
-rw-r--r-- 1 1037 1700 17628 May 25 11:55 README
-rw-r--r-- 1 1037 1700 442658 Jun 26 07:53 RELEASE_NOTES
drwxr-xr-x 11 1037 1700 4096 Jun 26 08:16 cf/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 contrib/
drwxr-xr-x 6 1037 1700 4096 Jun 26 08:15 devtools/
drwxr-xr-x 3 1037 1700 4096 Jun 26 08:15 doc/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 editmap/
drwxr-xr-x 6 1037 1700 4096 Jun 26 08:16 include/
drwxr-xr-x 3 1037 1700 4096 Jun 26 08:16 libmilter/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 libsm/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 libsmdb/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 libsmutil/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 mail.local/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 mailstats/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 makemap/
drwxr-xr-x 14 root root 4096 Jul 17 00:34 obj.Linux.2.4.9-3.i686/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 praliases/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 rmail/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 sendmail/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 smrsh/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:15 test/
drwxr-xr-x 2 1037 1700 4096 Jun 26 08:16 vacation/

소스가 풀린 디렉토리에 가보면 상당히 많은 디렉토리와 파일이 존재 한다.
설치는 Build 라는 스크립트 파일로 설치를 진행하며(INSTALL 문서를 보면 간단하게 설치를 할수 있도록 설명되어
있음)
처음 컴파일을 하게 되면 obj.(System info)/ 디렉토리가 생겨나고, 이곳에서 .mc파일을 수정해
sendmail.cf파일을 생성하게 되며, obj.xxx 안의 서브 디렉토리들은 센드메일 관련 바이너리 파일을 생성하기 위한
Make파일 등이 위치한다.

이곳에서 필요한 바이너리만 별도로 설치할 수 있다.

센드메일의 경우 rpm 설치시에는 간단하지만, 소스설치의 경우에는 .mc 파일(sendmail.cf 생성을 위한 매크로파일)
을 수동으로 설정 하여야 한다.
또한, sendmail/SECURITY 파일을 꼭 읽어 보기 바란다. 보안에 대한 몇가지 새로 추가된 점들에 대한 설명등이 기록
되어 있다.
상당히 많은 옵션들이 있기 때문에 난해한 부분임에 틀림없다.
일단 특별한 옵션없이 기본설치를 진행 한후 나중에 간단히 알아 보도록 하자.

sueni@bbung ...]# sh Build
(소스디렉토리에 obj.Linux.xxxx 디렉토리가 생성되어 진다.)

sueni@bbung ...]# cd cf/cf ( .mc 매크로 파일이 생성되어진 디렉토리)

sueni@bbung ...]# cp generic-linux.mc sendmail.mc
(sendmail.mc 매크로 파일을 생성 한다.)

sueni@bbung ...]# sh Build sendmail.cf
(m4라는 전처리기를 이용해 .mc 파일로 sendmail.cf 파일을 생성한다.)

만일 기본설정으로 설치를 한다면 generic-linux.cf 파일을 sendmail.cf 파일로 이름을 바꾸어 그대로 이용해도
된다.

sueni@bbung ...]# mkdir /etc/mail/ (현재 메일관련 디렉토리 가 없으므로 생성해 준다.)

sueni@bbung ...]# sh Build install-cf
(sendmail.cf파일과 submit.cf 파일을 /etc/mail/디렉토리로 복사해 준다.)

여기서 sendmail.mc 파일은 복사가 되지 않으므로 복사해 주도록 하며, 나중에 sendmail.cf 파일이 삭제 되었을 경
우 m4(preprocessor)를 이용하여 sendmail.cf 파일을 생성하도록 한다. submit.mc 파일의 경우도 마찬가지이며,
submi.cf파일은 수정할 것이 없으므로 그대로 사용한다.
변경 사항이 있다면 아래와 같이 해주면 된다.

sueni@bbung ...]# sh Build submit.cf

sueni@bbung ...]# cd ../../

sueni@bbung ...]# sh Build install

이로써 설치가 완료 되었다.

8.12의 경우 보안을 위해 smmsp라는 계정아이디(Set-Gid)를 사용하며, 이는 /var/spool/clientmqueue 큐잉 디렉토리
에 대한 smmsp와 같은 특정 그룹에게 쓰기 기능을 제한하기 위한 것이다.
기본적으로 smmsp라는 계정(Set-Gid)으로 지정 되어 있으며, 이는 다음에서 수정할 수 있다.

sueni@bbung ...]# vi /(TarBall)/(source)/sendmail-8.12.5/obj.Linux.2.4.9-
3.i686/sendmail/Makefile


# Setuid binary ownership/permissions
SBINOWN=root
SBINGRP=bin
SBINMODE=4555

# Setgid binary ownership/permissions
GBINOWN=root
GBINGRP=smmsp
GBINMODE=2555

# owner of MSP queue
MSPQOWN=smmsp
센드메일 8.12의 경우 다른 이전 버전과 다른 점이 있다면, sendmail.cf, submit.cf 두개의 파일을 갖는 다는 것이
다.
sendmail.cf파일은 데몬을 위한 파일이며, submit.cf 파일은 submission program을 위한 파일이다.
다음은 설치후 자동으로 부여되는 퍼미션관련 예제이며, 이와 달라도 상관은 없다.

-r-xr-sr-x root smmsp ... /PATH/TO/sendmail
drwxrwx--- smmsp smmsp ... /var/spool/clientmqueue
drwx------ root mail ... /var/spool/mqueue
-r--r--r-- root bin ... /etc/mail/sendmail.cf
-r--r--r-- root bin ... /etc/mail/submit.cf

우선 기본적을 백업해 놓은 access, aliases 등의 파일을 /etc/mail 디렉토리로 옮겨 놓은 후 버클리디비를 이용한
파일을 DB화 하여준다.

sueni@bbung ...]# makemap hash /etc/mail/access < /etc/mail/access

sueni@bbung ...]# makemap btree /etc/mail/aliases < /etc/mail/aliases

sueni@bbung ...]# makemap btree /etc/mail/virtusertable < /etc/mail/virtusertable

mail, mqueue 디렉토리가 없다면 만들어 준다.

sueni@bbung ...]# mkdir /var/spool/mail/

sueni@bbung ...]# mkdir /var/spool/mqueue/

sueni@bbung ...]# chown root:mail /var/spoo/mail/

- sendmail 설정 파일 정보(/etc/mail/...)

1. sendmail.cf(mc) 데몬을 위한 주설정 파일
2. submit.cf(mc) submission program을 위한 파일
3. access(.db) RELAY(메일중계)관련파일.(SMTP이용제약)
4. aliases(.db) 메일엘리어스파일(간이메일링리스트)
5. mailertable(.db) 특정도메인 메일러 라우팅 설정 파일
6. domaintable(.db) 도메인 맵핑설정파일
7. virtusertable(.db) 가상메일 설정

다음은 makemap 이용시 map 관련 옵션에 대한 간단한 설명이다.

● dbm
Database는 ndbm(3) 라이브러리를 이용하여 Lookup. Sendmail는 정의된 NDBM과 함께 컴파일되어야 한다.
● btree
Database는 Berkeley db(3) 라이브러리와의 btree인터페이스를 이용하여 lookup한다.
Sendmail은 정의된 NEWDB와 함께 컴파일되어야 한다.
● hash
Database는 Berkeley db(3) 라이브러리와의 hash인터페이스를 이용하여 lookup한다.
Sendmail은 정의된 NEWDB와 함께 컴파일되어야 한다.
● nis
NIS lookup한다. Sendmail은 정의된 NIS와 함께 컴파일되어야 한다.
● nisplus
NIS+lookups. Sendmail은 정의된 NISPLUS와 함께 컴파일되어야 한다. Lookup을 위해
서 테이블이름을 사용하는 것에 관한 논의와 -k와 -v 플래그를 Key와 값 column을 신
뢰성 있도록 set하기 위해서 사용되어 진다.
sueni@bbung ...]# sendmail -v -bi	 (또는 newaliases 명령으로 aliases파일을 update한다.)

sueni@bbung ...]# sendmail -L sm-mta -bd -q1h (센드메일 데몬을 띄운다.)

sueni@bbung ...]# pstree | grep sendmail (데몬이 떠있는지 확인해 본다.)

RPM 설치에서 확인해본 방법으로 확인해 보도록 한다.

소스설치의 경우 데몬시작,정지,재시작등의 스크립트 파일이 생성되지 않기 때문에 RPM 버전에서 사용하던
/etc/rc.d/init.d/sendmail 스크립트 파일을 오류가 나지 않는 다면 사용하거나 다음과 같이 간단하게 만들어서
사용해도 무방하다.

sueni@bbung ...]# vi sendmail


#!/bin/sh

if [ $# != 1 ]
then
echo "입력형식 : $0 [start] [stop] [restart]"
exit 1
fi


case "$1" in
start)
sendmail -L sm-mta -bd -q1h
echo "Sendmail OK..."
;;
stop)
killall sendmail
;;
restart)
killall -HUP sendmail
;;
*)
echo "start/stop/restart 입력하세요"
exit 1;;
esac

sueni@bbung ...]# chmod u+x sendmail
sueni@bbung ...]# /etc/rc.d/init.d/sendmail [start|stop|restart]


이상으로 샌드메일과 RPM과 소스설치를 해보았습니다.
sendmail.mc 파일 수정하는 부분은 sendmail/SECURITY, README, TRACEFLAGS, TUNING 파일
을 참조하거나
http://www.sendmail.org 를 이용하여 자신의 환경에 맞도록 설정해 주어야 합니다.
매크로 설정에 옵션은 상당히 많고 복잡하므로 다음에 따로 정리하여 올리도록 하겠습니다.

+GNU GPL. www.manpage.biz 오수영:)
728x90

댓글