준비운동하기 (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 핵심가이드와 함께한다면 마음 든든할 것이다. 이제 본격적으로 설치를 해보자. 설치의 순서는 다음과 같이 한다.
우선 각각 압축을 풀어준다.
Berkeley DB
# tar xzvf db-2.7.5.tar.gz # cd db-2.7.5/dist # ./configure # make # make install
여기까지 마쳤다면 Berkeley DB는 무사히 설치된 것이다.
m4
# tar xzvf m4-1.4.tar.gz # cd m4-1.4/ # ./configure # make # make install
앞의 Berkeley DB와 같이 한다.
sendmail
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 .
aliases 및 aliases.db 생성
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 설정
relay-domains 파일은 가장 단순하게(quick & dirty) relay를 제어하고 싶을 경우 사용하는 파일이다. 만일 당신이 access.db를 사용하여 본격적인 relay 컨트롤을 수행할 계획이라면
relay-domains는 설정할 필요가 전혀 없다.
accesses 및 access.db 생성
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 테스트 방법
sendmail daemon 확인
# 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을 설치 했다. 솔직히 내가 위에서 쓴 내용가 별 다른 것은 없었다. 하지만 굳이 달라진 점을 말하자면
- /etc/mail에서 만들어 주었던 일부 파일들이 자동으로 생성되어 있다는 점
- 위에서 /etc/ 로 sendmail.cf를 심볼릭링크를 해주는 부분이 있는데, 자동으로 이미 생성되어 있었다.
특히 1번 같은 경우는 accesses 파일이 access 파일로 이름이 바뀌어 있었다.(파일내용을 보라!)