준비운동하기 (Sendmail-8.xx.x, Berkeley DB 2.7.5, M4 1.4)

우선 sendmail을 구해야 한다. FTP나 인터넷에서 쉽게 다운받을 수 있기 때문에 크게 걱정할 필요는 없을 것이다. 될 수 있으면 최신버전을 받는 것을 권장한다. 참고로 나는 sendmail-8.11.1 버전을 받았다. 하지만 여기서 끝난 것이 아니다. 내가 Senamail 핵심가이드라고 해서 Senamail 만 필요하다고 생각한다면 큰 오산이다. GNU에서 만든 m4 1.4 버전을 가져온다. 그리고 공개 DB 라이브러리로 유명한 Berkeley DB 2.7.5 버전을 가져온다. 여기서 내가 말한 버전보다 업그레이드된 버전이 있다면 그것을 다운받는다. 모두 Sendmail을 설치하는데 꼭 필요한 것들이므로 꼭 준비하도록 한다.

설치하기

참고로 말하면 Sendmail은 내가 그동안 설치했던 애플리케이션과는 비교도 안 될 정도로 어려웠다. 그러나 Senamail 핵심가이드와 함께한다면 마음 든든할 것이다. 이제 본격적으로 설치를 해보자. 설치의 순서는 다음과 같이 한다.
우선 각각 압축을 풀어준다.

# tar xzvf db-2.7.5.tar.gz 
# cd db-2.7.5/dist
# ./configure
# make
# make install

여기까지 마쳤다면 Berkeley DB는 무사히 설치된 것이다.

# tar xzvf m4-1.4.tar.gz  
# cd m4-1.4/
# ./configure
# make
# make install

앞의 Berkeley DB와 같이 한다.

tar xzvf sendmail.8.9.3.tar.gz 

압축을 다 풀었다면 본격적으로 설치해보자.
sendmail은 컴파일에 앞서 몇가지 환경을 수작업으로 맞춰주어야 한다. 먼저 다음과 같은 방법으로 현재 사용중인 시스템 사양을 확인한다.

# uname -a
Linux myfeel.hoseo.ac.kr 2.2.14-12kr #1 Wed May 17 23:49:15 KST 2000 i686 unknown

기종을 파악했다면 sendmail-8.10.0/devtools/OS 디렉토리 아래에서 자신의 운영체제에 맞는 config 파일을 찾는다. 그리고 다음과 같은 명령을 내린다.

# cd sendmail-8.10.0/devtools/OS
# chmod u+w '자신에 맞는 운영체제'

여기까지 잘 따라왔다면 부가적인 설정을 위한 정보가 들어있는 site.config.m4 파일을
작성해보자. site.config.m4는 반드시 'sendmail-8.10.0/devtools/Site' 에 위치해야 한다. 만일 이 파일이 없다면 vi 편집가를 이용해여 만들어야 한다. 이 파일에 들어가야 할 내용은
다음과 같다.

------------ site.config.m4 ---------------------------------
# site.config.m4 written by Park, JaeHo(jhpark@kies.co.kr)
# Copyright (C) 1999 by Park, JaeHo
APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB/lib')
------------ site.config.m4 ---------------------------------
 
# cd sendmail-8.10.0/
# sh ./Build

위의 방법으로 sendmail을 컴파일하자. 컴파일이 완료 되었다면 sendmail-8.10.x/cf/cf 의 경우 디렉토리 내부를 살펴보면 generic- 접두어로 시작하는 확장자가 mc로 끝나는 config
파일 (예: generic-hpux10.mc)들이 보일 것이다. 찾았다면,

# chmod u+w generic-hpux10.mc

하고 파일의 가장 마지막 줄에 다음을 추가한다.

-------------- 가장 마지막 줄에 추가 -------------------
FEATURE(access_db, `hash -o /etc/mail/access')dnl
-------------- 가장 마지막 줄에 추가 -------------------

마지막으로 sendmail.cf를 만드는 일만 남았다. 다음과 같이 GNU m4
패키지를 사용하여 sendmail.cf를 생성시키자.

# cd sendmail-8.10.0/cf/cf
# /usr/local/bin/m4 ../m4/cf.m4 generic-hpux10.mc > sendmail.cf

일단 위의 과정을 거쳤다면 sendmail.cf 이 생성된 것이다. 하지만 아직 많은 과정들이 남아 있으므로 안심하지는 말자.

sendmail 설치
# mv /usr/lib/sendmail /usr/lib/sendmail.org
# cd sendmail-8.10.0/obj.HP-UX.10.01.8xx/sendmail    
# make install
 
makemap 복사
# cd sendmail-8.10.0/obj.HP-UX.10.01.8xx/makemap 
# make install
 
sendmail.cf 복사
# cp sendmail-8.9.3/cf/cf/sendmail.cf /etc/mail/
# ln -s /etc/mail/sendmail.cf /etc/sendmail.cf
 
sendmail.cw 생성
# cd /etc/mail
# touch local-host-names
# cd ..
# ln -s mail/local-host-names .

alias 기능이 제대로 동작하는지 검사하기 위해(aliases가 제대로 설정되어있지 않으면 sendmail이 전혀 동작하지 않는다는 점을 기억하라.) 간단한 aliases 파일을 생성시키고
aliases.db를 만들어보자. 먼저 기존에 존재하는 aliases 파일을 백업받아둔 후 편집기로 aliases를 /etc/mail 디렉토리에 새롭게 생성시킨다. aliases의 예는 다음과 같다.

----------------- aliases ----------------------------------
# aliases written by Park, JaeHo(jhpark@kies.co.kr)
# Copyright (C) 1999 by Park, JaeHo
administrator: root
----------------- aliases ----------------------------------

sendmail이 alias 검색을 위해 사용하는 aliases.db를 생성시키도록 하자.

# cd /etc/mail/
# touch aliases.db
# chmod 644 aliases.db
# sendmail -bi

sendmail -bi 명령이 제대로 동작했다면 다음과 같은 메시지가 나올 것이다. 숫자는 약간씩 틀릴 수 있지만 형식은 동일하게 나와야 한다.

/etc/mail/aliases: 1 aliases, longest 4 bytes, 17 bytes total

relay-domains 파일은 가장 단순하게(quick & dirty) relay를 제어하고 싶을 경우 사용하는 파일이다. 만일 당신이 access.db를 사용하여 본격적인 relay 컨트롤을 수행할 계획이라면
relay-domains는 설정할 필요가 전혀 없다.

sendmail 8.9.x/8.10.x에서 3rd party relay control module을 탑재하였음에도 불구하고 accesses 파일에 제대로 relay 허용 IP 범위를 정해주지 않으면, 직전 버전 sendmail에서
잘가던 전자편지가 숫제 배달이 안될 수도 있으므로 accesses 파일을 잘 구성해두어야 한다. 간단한 accesses 파일을 생성시키고 access.db 파일을 만들어보자. 먼저 기존에 존재할지도 모르는 accesses 파일을 백업받아둔 후 편집기로 accesses를 /etc/mail 디렉토리에 새롭게 생성시킨다. accesses의 예는 다음과 같다.

----------------- accesses ----------------------------------
# accesses written by Park, JaeHo(jhpark@kies.co.kr)
# Copyright (C) 1999 by Park, JaeHo
www.xxx.yyy        RELAY
devilhacker@devilhacker.com REJECT
----------------- accesses ----------------------------------

www.xxx.yyy는 Relay를 허용할 IP 주소 범위이다. 당신이 관리하는 도메인이 두개로 쪼개어져 있지 않는한 www.xxx.yyy.zzz의 IP 형식에서 앞 세부분만 그대로 따서 쓰면 끝이다. 만일 도메인이 분리되어 있어 www.xxx.ttt도 허용하고 싶으면 다음과 같이 한줄만 더 추가하면 된다.

----------------- accesses ----------------------------------
# accesses written by Park, JaeHo(jhpark@kies.co.kr)
# Copyright (C) 1999 by Park, JaeHo
www.xxx.yyy        RELAY
www.xxx.ttt        RELAY
devilhacker@devilhacker.com REJECT
----------------- accesses ----------------------------------

이제 access.db를 생성시키고 makemap으로 규칙을 등록하자.

# cd /etc/mail/
# touch access.db
# chmod 644 access.db
# ./makemap hash /etc/mail/access < /etc/mail/accesses

디렉토리 접근허가 변경

# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chmod -R go-w /etc/mail
# sendmail -v -bi

명령을 내려보자. 경고문구가 나오면 해당 디렉토리의
접근허가와 소유주를 변경하여 보안을 강화하도록 조치를 취해야 한다.

Sendmail 시동

드디어 sendmail을 작동시킬 때가 왔다. 이 순간을 얼마나 기다려 왔는가?
하지만 아직 기뻐하기에는 이르다. 막판에 지금까지의 수고를 날릴 수도 있기 때문이다.

# ps -ef | grep sendmail
root  1503     1  0  7월 26  ?         0:16 sendmail: accepting connections on port 25
# /usr/lib/sendmail -bd -q30m
# ps -ef | grep sendmail
root  1809     1  0  7월 29  ?         0:16 sendmail: accepting connections on port 25

화면에 특별한 메시지가 나타나지 않는다면 daemon이 성공리에 동작한 것이다. ps 명령으로 다시 한번 sendmail daemon이 동작하고 있는지 확인해보기 바란다.

Sendmail 테스트 방법

# telnet localhost smtp
Trying 127.0.0.1
Connected to localhost
Escape character is '^]'.
220 localhost ESMTP Sendmail 8.9.3/8.9.3; Tue, 27 Jul 1999 17:05:09 +1000 (KDT)

위와 같이 나온다면 제대로 데몬이 실행하는 것이다 .기뻐하라~~
이번엔 메일을 보내보자!

# /usr/lib/sendmail -v yourid
test
.
yourid... Connecting to local...
yourid... Sent

보냈으니 수신확인을 해보자..

# su 사용자 ID 
# mail

메일이 왔다고 출력된다면 제대로 보내진 것이다. 또 외부로부터 송수신을 확인해보자.
이 모든 것이 정상적으로 작동된다면 당신은 메일서버를 구축한 것이다. 끝까지 부족한 나의 문서를 읽어준 분들에게 감사를 표한다.

※ 주의 사항

누구나 알고 있듯이 '/etc/rc.d/rc.local' 파일의 맨 아랫줄에 경로를 추가시켜주면 된다는 것을 알고 있다. 필자는 find를 명령을 쳐보지 않은 실수를 저지르고 말았다. 다음과 같이 추가 시켜준다.

#시작할 때 자동으로 센드메일의 데몬을 띠워라!!
/usr/sbin/sendmail -bd

☆ 그 후에 필자가 sendmail.8.11.3.tar.gz, qpopper4.0.tar.gz, db-3.2.9.tar.gz을 설치 했다. 솔직히 내가 위에서 쓴 내용가 별 다른 것은 없었다. 하지만 굳이 달라진 점을 말하자면

  1. /etc/mail에서 만들어 주었던 일부 파일들이 자동으로 생성되어 있다는 점
  2. 위에서 /etc/ 로 sendmail.cf를 심볼릭링크를 해주는 부분이 있는데, 자동으로 이미 생성되어 있었다.

특히 1번 같은 경우는 accesses 파일이 access 파일로 이름이 바뀌어 있었다.(파일내용을 보라!)

  • computer/networking/센드메일_설치하기.txt
  • Last modified: 3 years ago
  • by likewind