출처 :www.djhanvit.co.kr/linux.html?menugo=10
MAIL 설정
이 문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.
최종 수정일 : 2001년 8월 14일
글쓴이 : 윤 일(admin@rootman.org)
참고 서적 : Linux 네트워크 서버(출판사 : 삼각형 프레스)
HOW-TO Configuration sendmail.cf
SMTP(Simple Mail Transport Protocol)는 TCP/IP 메일 전송 프로토콜입니다. Linux 에서는 기본적으로 sendmail프로그램을
통해 SMTP를 완벽하게 지원합니다. 간혹 sendmail데몬과 pop3데몬의 역할에 대해 잘못 알고 계시는 분이 계신데 sendmail
은 메일의 발신, 수신, 중계의 역할을 합니다. 즉 sendmail데몬은 메일을 보내고 받고 하는 역할을 합니다.
pop3데몬은 sendmail이 수신한 사용자의 메일을 사용자의 메일 클라이언트에서 받아 볼 수 있는 역할을 합니다.
0. 들어가기 전에
sendmail.cf파일을 다루는 능력이 안된다고 해서 sendmail을 사용할 수 없는건 아닙니다. sendmail을 설치하면 기본적으로
설정되어 있는 sendmail.cf파일만으로도 충분히 아니 만족스러울 정도로 sendmail을 가동할 수 있습니다.
이번 강좌에서 다루는 sendmail.cf 설정들의 설명은 쉽고 자주 이용되는 설정에 대해서만 다룰려고 합니다. 하지만 이번 강좌에서 다루는 내용만으로도 sendmail을 사용하는데 아무런 지장이 없을 것입니다. 센드메일 관련 질문들을 봐도 이 범위에 벗어난 질문은 없는 것 같군요. 사실 더 이상 자세히 다룰 실력도 안되고, 워낙 sendmail의 기능이 많아서...
(800페이지 분량의 sendmail만을 다룬 책도 있습니다)
사실 sendmail.cf 파일에 대해서 공부하는것이 무척 부담스러울 것이다. 부담 되시는 분이나 처음부터 이해가 되지 않아 이 페이지를 닫으실 분들은 "1.3 Options 섹션" 부분만이라도 한번 읽어 보길 바란다.
1. sendmail.cf(sendmail 환경설정)
1.1-1 sendmail.cf의 규칙
-->>sendmail.cf의 각 행들은 다음과 같은 규칙이 적용됩니다.
1) 빈행은 무시한다.
2) #로 시작하는 행은 주석행이다.
3) C, D, F, H, K, M, O, P, R, S, V로 시작하는 행은 설정행이다.
4) 하나이상의 빈 공간으로 시작하는 행은 앞 행의 연장이다.
sendmail.cf 파일은 7개의 색션으로 나누어져 있는 아주 복잡한 파일이다.
아마 초보 분들은 sendmail.cf파일을 열고 그 내용의 방대함에 놀라 그냥 파일을 닫는 분도 있을 겁니다. 저도 첨에sendmail.cf 파일을 열어봤을 땐 짜증이 확 밀려 왔으니까.....
우선 간략하게 7개의 섹션들에 대해서 잠깐 살펴보고 넘어 갑니다.. 아주 간략하게.. 지금부터 바짝 긴장 하시길.. ^^;
Local Info
--->> 0이 섹션은 해당 로컬 호스트의 구성 정보를 정의합니다.
Options
--->> sendmail 환경을 정의하는 옵션을 정의 한다.
Message Precedence
--->> sendmail 메시지 순서 값을 정의 합니다.
Trusted Users
--->> 발신인의 주소를 변경할 권한을 갖는 사용자를 정의합니다.
Format of Headers
--->> 메일에 삽입도는 메일 헤더를 정의합니다.
Rewriting Rules
--->> 사용자의 메일 프로그램에 있는 e-mail 주소를 메일 배달 프로그램에 필요한 폼으로 다시 작성하는 명령이 들어 있습니다.
Mailer Definitions
--->> 메일을 배달하는데 사용되는 프로그램을 정의합니다. Mailer가 사용하는 재작성 규칙도 이 섹션에 정의되어
있습니다.
1.1-2 sendmai.cf에서 사용되는 명령
C : 클래스 정의(문자열)
D : 메크로 정의
E : 환경변수 지정
F : 클래스 정의(file, pipe)
H : Herder 정의
K : Key file 정의(map 정의)
M : mailer 정의
O : 옵션
P : Message precedences
R : 덮어쓰기
S : Ruleset(새로운 규칙 시작)
T : Truseted users(사용자 지정)
V : 설정파일 버젼
1.2 local info 섹션
Cwlocalhost
localhost를 w클래스로 정의 한겁니다.
다음에 나오는 Fw와의 차이점은 C는 문자열을 정의하고 F는 파일을 정의합니다.
Fw/etc/mail/local-host-names
Cwlocalhost와 같이 w클래스를 정의하는데 문자열 대신 파일을 정의합니다.
즉 /etc/mail/local-host-names에 추가할 내용을 Cwlocalhost aaa.com bbb.com 으로 설정해도 같은 효과가 납니다..
FR-o /etc/mail/relay-domains
Relay를 허용할 도메인을 설정합니다.
그러나 /etc/mail/access에서 Relay 제어를 할 수 있기 때문에 이 파일은 거의 쓰기 않는 파일입니다.
DnMAILER-DAEMON
sendmail이 return 메일을 보낼 때 사용하는 사용자 이름을 정의한다.
sendmail로부터 return 메일을 받아 본 사람들은 MAILER-DAEMON의 메일을 받아본 기억이 있을 겁니다.
Kmailertable hash -o /etc/mail/mailertable
Mailer 테이블을 작성하는 파일을 정의합니다.
K 명령은 모든 정보와 내부 이름, 데이터베이스의 유형, 이 데이터베이스를 가지고 있는 파일을 정의할 때 사용한다.
K명령은 "mailertable"라는 이름의 데이터 베이스를 선언하는데 이 데이터 베이스는 표준 Unix 데이터베이스 포맷인 hash 포맷으로 되었있다는 것을 정의한다.
Kvirtuser hash -o /etc/mail/virtusertable
가상 유저 테이블을 정의하고 있다.
Kaccess hash -o /etc/mail/access
메일 수신자 데이터 베이스 파일을 정의하고 있다.
1.3 Options 섹션
아마 서버 관리자의 취향에 따라 가장 많이 수정되어 지는 부분이 Options 섹션의 설정들이 아닌가 생각된다.
모든 옵션에 대해서 설명을 하지 않았지만 특별한 경우가 아니면 이 밖의 설정들을 건드릴 일은 없을 것이라고 생각된다.
O SevenBitInput=False
7비트로 받아 들이지 않게 설정하고 있다.
O EightBitMode=pass8
8비트 데이트로 처리하게 설정하고 있다.
O AliasFile=/etc/aliases
aliases파일의 위치를 정의하고 있다.
O MaxMessageSize=1000000
메일의 최대 용량을 제한하는 옵션이다. 기본적으로 주석처리 되어 있어 무제한으로 설정되어 있다.
메일 박스 용량과는 무관한 설정이다.
O DeliveryMode=background
센드메일을 백그라운드로 작동하게 설정하고 있다.
O MaxHopCount=17
최대 메일 포워딩 수를 정의하고 있다.
큐잉 서버를 만들 때 사용되는 것으로 기본적으로 주석 처리 되어 있다.
O HelpFile=/usr/lib/sendmail.hf
help파일의 위치를 정의하고 있다.
O ForwardPath=$z/.forward.$w:$z/.forward
.forward 파일의 위치를 정의하고 있다.
$w는 호스트 이름을 가리키는 매크로 값이고 $z는 사용자 홈 디렉토리를 가리킨다.
O QueueDirectory=/var/spool/mqeue
센드메일의 큐 디렉토리의 위치를 지정한다.
큐 디렉토리는 메일 발송 실패 또는 대기 하고 있는 메일들이 임시로 저장되는 곳이다.
O Timeout.connect=1m
타임 아웃을 1분으로 설정하고 있다.
O Timeout.queuereturn=5d
Return메일이 발송될 시간을 설정하고 있다.
특정 이유로 메일이 5일동안 발송되지 않으면 메일을 보낸 사람에게 반송된다.
O Timeout.queuewarn=4h
메일이 최종 발신지까지 4시간동안 발송되지 않으면 메일을 보낸 사람에게 경고 메일을 보낸다.
sendmail.cf 파일에는 위 3가지 Timeout 설정외에 많은 Timeout 설정들이 있다.
O StatusFile=/var/log/sendmail.st
센드메일의 status 파일의 위치를 지정한다.
O DefaultUser=8:12
Mailer 의 UID와 GID를 설정한다. (UID : 8 , GID : 12)
O MinQueueAge=30m
메일을 바로 발송하지 않고 최소한 30분동안 큐잉 상태로 대기 시킨다. 기본적으로 주석 처리 되어 있다
O
1.4 Mesage Procedure 섹션
메시지 대기열에 들어가는 메시지의 우선 순위를 할당할 때 사용한다. 디폴트로 메일은 "1종 우편물"로 간주되어 0이라는 우선 순위가 할당된다. 우선 순위를 나타내는 수가 음수일 경우 메일로 보낼 에러 메시지가 만들어지지 않기 때문에 대량 메일링에는 낮은 우선 순위를가 유리하다. 아래의 우선 순위 설정들은 수정하지 말고 기본값으로 사용하길 바란다.
Pfirst-class=0
Pspecial-delivery=100
Plist=-30
Pbulk=-60
Pjunk=-100
1.5 Trusted Users 섹션
Trust된 사용자는 메일을 보낼 때 발신의의 주소를 변경할 수 있다. 단 trust된 사용자는 /etc/passwd 파일에 존재하는 사용자이어야 된다. 기본적으로 root, daemon, uucp가 설정되어 있다. 보안상 아래의 값을 변경하는 일은 없기 바란다.
Troot
Tdaemon
Tuucp
1.6 Format of Headers 섹션
메일 헤더를 정의하는 부분이다.
H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
$.$?{auth_type}(authenticated$?{auth_ssf} (${auth_ssf} bits)$.)
$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u
for $u; $|;
$.$b
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $?x$x <$g>$|$g$.
H?F?From: $?x$x <$g>$|$g$.
H?x?Full-Name: $x
# HPosted-Date: $a
# H?l?Received-Date: $b
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>
#^L
1.7 Rewritng Rules 섹션
R$* $#error $@ 5.7.1 $: "550 Relaying denied"
이 설정은 localhost에서만 RELAY를 허용하라는 설정이다. 절대 주석 처리 되어 있으면 안된다.
만약 주석 처리 되어 있을 경우 스패머들의 놀리터가 될 수 있다.
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
M=1000000, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u
위의 "M=1000000" 설정을 통해서 사용자가 사용할 수 있는 전체 메일 용량이 아니라 들어오는 메일 용량을 제한 할 수
있다. 기본적으로 설정이 되어 있지 않다. (단위: bytes)
문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.
최종 수정일 : 2001년 9월 2일
글쓴이 : 윤 일(admin@rootman.org)
HOW-TO Configuration virtusertable
약속 : 이 강좌에 사용된 "1차 목적지"는 발신자가 메일을 보낼 때 사용한 받는 사람의 메일 주소를 의미하고 "최종 목적지"는 메일이 최종적으로 배달될 목적지를 의미한다.
virtusertable은 여러개의 도메인이 운영중인 호스팅 서버에서 아주 유용하게 사용할 수 있는 가상 유저 설정과 메일 포워딩에 관한 설정파일이다. 시스템에 여러개의 도메인이 운영중이고 각각의 도메인별로 메일 서비스를 하고 있다면 꼭 이 강좌를 읽어 봐야 될 것이다.
virtusertable 파일과 /etc/aliases 파일과의 차이점은 뭔가요?
사용자간의 메일 포워딩에 대한 설정과 가상 메일 유저 설정은 /etc/aliases 파일로도 가능하지만 /etc/aliases 파일의 "1차 목적지" 설정은 메일 아이디에 대해서만 설정할 수 있기 때문에 들어오는 메일의 도메인까지 인식을 해서 메일을 포워딩 해야 될 경우에는 virtusertable을 사용해야 되는 것이다. 하나의 도메인만 운영하고 있다면 메일 포워딩과 가상 메일 유저등의 설정은 /etc/aliases 파일을 수정해서 사용하는 것이 편리할 것이다.
virtusertable 파일의 설정 형식은 다음과 같이 아주 간단하다.
[1차 목적지] [최종 목적지]
[1차 목적지]에 설정할 수 있는 것들
1. /etc/passwd 파일에 존재하는 실제 시스템 사용자명
2. /etc/passwd에 등록되어 있지 않은 가상 유저
3. 가상 유저 또는 실제 시스템 유저명을 포함한 완벽한 mail 주소(admin@rootman.org, virtuser@dvc.dongeui.ac.kr)
[최종 목적지] 설정할 수 있는 것들
1. /etc/passwd 파일에 존재하는 실제 시스템 사용자명
2. 메일이 포워딩 될 외부 메일 주소(il-yoon@hanmail.net, yunil@dreamwiz.com)
그럼 지금부터 설정 예를 보면서 어떻게 설정이 이루어 지는지, 또 virusertable이 어떠한 경우에 사용되는지 살펴보자
[root@rootman mail]# cat virtusertable --> rootman.org라는 하나의 도메인이 운영중일 때
admin rootman
yunil rootman
network purmae
wonjae purmae
위의 설정중에 처음 두줄이 의미하는 것은 수신자가 admin@rootman.org와 yunil@rootman.org로 되어 있는 메일은 모두 계정 사용자 rootman의 메일 박스로 포워딩됨을 의미하다. 그 다음 두줄도 마찬가지로 수신자가 network@rootman.org와 purmae@rootman.org로 되어 있는 메일은 모두 계정 사용자 purmae의 메일 박스로 포워딩 된다.
그런데 만약 하나의 서버에 rootman.org와 dongeui.ac.kr이라는 두개의 도메인이 운영되고 있을 때는 약간 황당한 경우가 생기게 된다. 계정 사용자 rootman은 rootman.org와 관련이 있는 사용자고 purmae는 dongeui.ac.kr과 관련이 있는 사용자라고할 때 계정 사용자 rootman은 당연히 admin@rootman.org와 yunil@rootman.org라는 메일 주소를 사용할 것이고 계정 사용자 purmae는 network@dongeui.ac.kr과 wonjae@dongeui.ac.kr이라는 메일 주소를 사용할 것이다. 하지만 rootman은 원하지도 않는 admin@dongeui.ac.kr과 yunil@dongeui.ac.kr를 사용해도 메일은 모두 rootman의 메일 박스로 포워딩 되게 된다. 위의 설정은 메일 아이디로만 설정해 놓았기 때문에 @(at)뒤의 호스트 네임 즉 도메인까지는 신경을 쓰지 않기 때문이다.
이러한 문제는 하나의 도메인만 운영하거나 여러개의 도메인을 운영하더라도 중복되는 메일 아이디를 설정할 일이 없는 시스템에서는 별 문제가 안 되겠지만 여러개의 도메인이 운영되고 있는 시스템에서 같은 메일 아이디를 도메인별로 제공해야 될때 문제가 될 수 있다. 예를 들면 호스팅 서버에서 각 도메인별로 admin@domain.com이라는 메일 아이디를 해당 사용자에게 부여해야 될때가 있을 것이다. 이러한 문제를 해결하기 위해 virtusertable에서는 [1차 목적지] 설정에 완전한 메일 주소 즉 호스트까지 표기를 해서 설정을 할 수 있게 되어 있다.
virtusertable의 이러한 기능 때문에 메일 주소의 @(at)뒤의 도메인만 다르다면 같은 메일 아이디를 여러 사용자에게 설정할 수 있을 것이다. 바로 이것이 virtusertable의 핵심 기능이다. 다시 설정예를 보고 이해하도록 하자
[root@rootman mail]# cat virtusertable
admin@rootman.org rootman
admin@dongeui.ac.kr purmae
위의 설정이 뭘 의미하는 지는 이제 입 아프게 얘기 안해도 알 것이라고 믿지만 다시 한번더 잔소리를..
수신자가 admin@rootman.org로 된 메일은 rootman의 메일 박스로 admin@dongeui.ac.kr로 오는 메일은 purmae의 메일 박스로 포워딩 되게 설정한 것이다.
이제 마지막으로 [최종 목적지]를 시스템 내부의 사용자가 아니라 외부의 smtp 즉 한메일등으로 포워딩 시키는 설정을 잠깐 살펴보자.
[root@rootman mail]# cat virtusertable
yunil yunil@dreamwiz.com
purmae purmae@thrunet.com
admin@rootman.org yunil@dreamwiz.com
너무 쉽죠! 그냥 [최종 목적지]에 메일 주소만 적어 주면 됩니다.
[정말 중요] virtusertable 파일을 수정후 반드시 makemap 명령을 해 줘야 된다. sendmail을 restart시킬 필요는 없다.
이 문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.
최종 수정일 : 2001년 8월 10일
글쓴이 : 윤 일(admin@rootman.org)
HOW-TO Configuration access file
이 파일은 sendmail로의 접근 제한을 하는 아주 중요한 파일이다. sendmail은 기본적으로 localhost에 대해서만 RELAY를 허용하고 있다. 윈도우의 아웃룩이나 리눅스의 kmail 같은 메일 클라이언트에서 메일을 보낼 때 외부의 smtp서버를 사용하는 일이 있을 것이다. 사용자가 원격지의 smtp서버를 사용할려면 그 smtp 서버에서 사용자의 IP에 대해 RELAY를 허용해야 된다. 하지만 많은 IP에 대해서 무작위로 RELAY를 허용 하게 되면 SPAM에 이용될 수 있는 위험이 따르게 된다. RELAY 대상이 고정 아이피일 경우는 /etc/mail/access또는 호스트에 대해서만 RELAY를 허용해서 사용하고 유동 아이피에 대해서는 SMTP AUTH 기능을 이용하기 바란다. 참고로 SMTP AUTH 기능을 사용하면 POP3에서 메일 받듯이 아이디와 암호를 입력해서 메일을 보낼수 있게 하는 기능이다. SMTP AUTH에 대한 자세한 내용은 SMTP AUTH 강좌를 참고하세요.
RELAY가 뭐에요?
RELAY는 메일 중계를 허용한다는 의미이다. sendmail은 메일 중계 역활을 하는데 메일 중계의 대상은 메일을 발송하는 client와 메일의 목적지 "SMTP"가 된다. 이렇게 말하니까 더 모르겠죠? 헤헤헤..
지금부터 쉽게 설명을..
RELAY.. 어디서 많이 들어본 용어가 아닌가요? 육상 종목 중에 릴레이 경주가 있죠~! 똑같은 뜻입니다. sendmail에서 보내는 메일을 바톤(릴레이 경주할 때 주고 받는 짝대기)으로 생각할 수가 있다. 이 짝대기는 1번 주자에서 3번 주자에게 전달해야되는데 1번 주자가 다이렉트로 3번 주자에게 짝대기를 전달하지는 못하고 2번 주자를 거쳐서 3번 주자로 짝대기을 전달해야된다. 위의 예에서 1번 주자는 메일을 발송하는 발신자이고 2번 주자는 sendmail의 SMTP, 3번 주자는 메일의 목적지가 되는 것이다. 2번 주자(sendmail의 SMTP)는 자기 팀 1번 주자가 주는 짝대기만 3번 주자에게 전달할 것이다. 즉 정해진 주자로 부터 전달받은 짝대기(메일)만 3번 주자에게 배달할 수 있는것이다. 바로 2번 주자가 1번 주자로 부터 바톤을 받아서 3번 주자에게 넘겨주는 과정이 RELAY를 의미한다. 이제 이해가 좀 되시는지.. ?????
이처럼 sendmail은 /etc/mail/access 파일의 설정에 따라서 RELAY를 허용하는지 또는 거부하는지를 설정할 수 있는것이다.
다음은 rootman.co.kr의 /etc/mail/access 파일이다.
localhosts.localdomain과 localhost, 127.0.0.1의 RELAY 설정까지는 기본적으로 설정되어 있는 것이다.
그다음에 나오는 203.241.205.94 ~ 95 까지의 설정은 제가 설정해 준 것인데 설정의 의미는 IP주소 203.241.205.94 ~ 95를 RELAY 허용한다는 의미이다. 이 설정은 아이피 주소 203.241.205.94 ~ 95에서 루트맨의 sendmail을 이용해 메일을 보내는 것을 허락하기 위해 설정해 놓은 것이다. access 파일의 설정 형식은 다음과 같다.
[ 호스트 ] [ 접근 제어 옵션 ]
[ 호스트 ]에는 IP주소와 도메인, e-mail 주소를 설정할 수 있다. 단, 도메인을 설정할 경우 reverse mapping이 가능한 도메인을 설정해 줘야 된다. 각 호스트에 설정할 수 있는 [ 접근 제어 옵션 ]은 RELAY 설정 이외에도 아래와 같은 설정을 할 수 있다.
OK
다른 rule이 거부하는 경우에도 들어오는 메일을 받아 들인다.
RELAY
메일 중계(RELAY)를 허용한다. 즉 지정된 호스트에서 Sendmail의 SMTP를 이용하는 것을 허락한다.
다른 rule이 거부하는 경우에도 지정된 도메인에서 오는 메일을 받아 들인다.
REJECT
메일의 수신과 발신을 거부한다.
DISCARD
좀 특이한 설정이다. sendmail은 메일을 수신하지만 받은 메일을 아무런 통보없이 페기 처분한다.
"501 message"
지정된 메일(ID@mail_address)주소 또는 도메인에 대해 발신자의 주소가 전체 또는 부분적으로 일치할 경우 메일을 거부한다. message에는 포함할 에러 메시지를 설정할 수 있다.
"550 message"
특정 도메인에 관련된 메일을 거부한다. message에는 포함할 에러 메시지를 설정할 수 있다.
"571 message"
특정 도메인 또는 메일 주소에 대해 경고 메시지를 보내고 메일을 거부한다. message에는 포함할 에러 메시지를 설정할 수 있다.
저같이 복잡한걸 싫어하시는 분들이 위의 옵션들을 보고 분명 이런말을 할 것이다. "뭐야! 그냥 간단하게 허락하고 거부하면 되지 뭐가 저렇게 복잡해" 라고 분명히 말할 것이다. 하지만 짜증내지 마시길...
이런 복잡한걸 단순히 생각하게 만드는 것이 나의 몫이 아닌가!!.....
짜증나게 위의 옵션을 계속 읽어 보면서 루트맨 욕하지 마시고 지금부터 설명하는 것만 제대로 읽으시면 됩니다.
위의 설정들은 간단히 두 종류로 나눌 수 있다. RELAY를 허용하느냐, 또는 거부하는냐...(간단해 지는것 같나요?)
그럼 RELAY를 허용하는것과 RELAY를 거부하는 것으로 나눠 보도록 하겠다.
RELAY 허락 : OK, RELAY
RELAY 거부 : REJECT, DISCARD, "[오류번호] [문자열]"
먼저 RELAY를 허락하는 경우부터 살펴 보겠다. RELAY를 허락하는 설정은 'OK' 와 'RELAY' 이 두 설정을 사용하면 되는데 'OK'는 약간 무대포 같은 성격을 지니고 있다. 무대포. 아지죠!! 영화 "넘버3"에 나오는 송강호의 무대포 정신..
'OK'로 설정되어 있는 것을 무조건 RELAY를 허용한다고 생각하면 된다. 다른 설정은 신경쓰지 않고 무조건 RELAY...
그럼 어떤 경우에 'OK'를 설정해서 무대포 설정을 사용해야 되는지 살펴 보자. 다음은 access파일 설정 예이다.
[root@rootman mail]# cat access
# localhost에 대한 RELAY 설정
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
# 여기부터 추가적인 설정
rootman.org REJECT
rootman@linux.rootman.org OK
purmae@linux.rootman.org OK
위의 설정에 대한 설명을 하기 전에 잠깐 짚고 넘어가야 될 부분이 있다. access파일의 [호스트] 설정에는 도메인, IP주소, 사용자가 포함된 도메인 또는 IP주소를 설정할 수 있다. 위의 설정중에 rootman@linux.rootman.org는 메일 주소로 생각하지 말고 linux.rootman.org 시스템의 사용자 rootman에 대한 설정이라고 이해하는 것이 바른 이해다. 잘못 이해하면 안되요..
다시 본론으로 들어가서 "OK" 옵션에 대해 설명하겠다. 추가 설정 부분의 첫행에 linux.rootman.org에 "REJECT" 옵션이 설정되어 있고 그 다음 두줄에서 rootman@linux.rootman.org 와 purame@linux.rootman.org가 "OK" 설정되어 있다. 이 설정들이 뜻하는 것은 linux.rootman.org에 대해 RELAY를 허용 하지 않지만 예외적으로 rootman.org의 사용자 rootman과 purmae만 RELAY를 허락한다는 의미이다.
마지막으로 RELAY를 거부하는 옵션들에 대해서 설명하겠다. 사실 저는 RELAY를 거부하는 설정중에 REJECT 말고는 사용하는 것이 없다. 구차하게 여러 설정을 하는 것을 별로 안 좋아 하기 때문에.. 게을러서 그런가.. ^^;;
사실 sendmail의 현재 버젼에서는 기본적으로 localhost에서만 RELAY를 허용하기 때문에 REJECT와 같은 RELAY 거부를 설정할 일이 없다. 어차피 RELAY를 허용하지 않은 호스트는 거부 되기 때문에.. 그냥. 어떤것인지만 알고 넘어 가도록 하자.
이것 또한 access 파일의 설정예를 보면서 이해하도록 하자. 하기 싫음 말고..
[root@rootman mail]# cat access
# localhost에 대한 RELAY 설정
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
# 여기부터 추가적인 설정
linux.rootman.org REJECT
linux.rootman.org "501 Oh.. No.. linux.rootman.org"
linux.rootman.org "571 You are spammer.. "
간단하게 설정해 놓았다. 위의 RELAY 거부에 대한 설정은 중복되는 설정들이다. 그냥 설명을 위해서 임의로 설정한 것이다.
REJECT는 이제 설명 안해도 알 것이라고 믿고 오류번호와 오류 문자열을 설정한 것만 설명할께요..
linux.rootman.org에 대해 "501 Oh.. No.. linux.rootman.org"이라고 설정한 부분의 501의 위의 옵션 설명을 읽어 보시고 뒤의 문자열들은 설정하고 싶은 문자열을 설정하면 된다. 단 오류 숫자에 따라서 거부하는 방법이 조금씩 다르다.
" " 안에 오류 번호를 설정하지 않으면 기본적으로 오류 번호 550으로 설정된다.
주의사항: access 파일을 수정한 후 반드시 다음과 같이 makemap을 실행해서 갱신해 줘야 된다.
[root@rootman root]# makemap hash /etc/mail/access < /etc/mail/access
이것으로 access 파일 강좌는 끝.. !!!!!
이 문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.
최종 수정일 : 2001년 8월 9일
글쓴이 : 윤 일(admin@rootman.org)
HOW-TO Configuration local-host-names
local-host-names 파일은 메일 수신자를 설정하는 파일이다. 메일 수신자라는 것은 sendmail에서 받아들일 메일의 도메인과
호스트를 의미한다. 즉 ID@dvc.sarang.net으로 오는 메일을 받기 위해서는 dvc.sarang.net을 메일 수신자로 등록해 줘야 된다. 여러 도메인이 운영중인 호스팅 서버에서 각 도메인으로 오는 메일을 수신하기 위해서는 이 설정이 꼭 필요하다.
언제 local-host-names 파일을 수정해야 되나요?
하나의 도메인으로 운영을 하는 시스템은 host_name만 도메인명과 같게 설정해 주고 zone파일만 제대로 설정했다면 해당 도
메인으로 오는 메일을 아무런 문제없이 받을 수 있을 것이다. 하지만 2개 이상의 도메인이 하나의 시스템에 등록되어 있고
그 도메인으로 메일을 받아야 될 때는 반드시 local-host-names 파일에 도메인을 등록 시켜 줘야 된다. 즉 메일 수신자를 추가 시켜 줘야 되는 것이다.
rootman.co.kr의 서버에는 dvc.dongeui.ac.kr과 dvc.sarang.net 이라는 도메인이 함께 운영중이다. 이 시스템의 host_name은
rootman.co.kr로 설정되어 있어서 ID@rootman.co.kr로 오는 메일은 아무런 설정없이 메일을 받을수 있다.
하지만 ID@dvc.dongeui.ac.kr와 ID@dvc.sarang.net으로 오는 메일은 local-host-names에 dvc.dongeui.ac.kr과 dvc.sarang.net을 등록을 함으로써 메일을 받을 수 있기 때문에 아래와 같이 등록해 놓은 상태이다.
[root@rootman mail]# cat local-host-names
# local-host-names - include all aliases for your machine here.
rootman.co.kr
dvc.dongeui.ac.kr
dvc.sarang.net
rootman.org
위의 설정 방법은 아주 간단하다. 그냥 메일 수신자에 해당하는 도메인을 한줄에 추가하면 된다.
주의할 것은 local-host-names 파일을 수정한 후에는 반드시 sendmail을 restart 해야지 수정 사항이 적용된다.
가상메일 설정하기
1. 가상메일등록파일 : sendmail.users
2. #makemap hash sendmail.db < sendmail.users
이 명령을 하게되면 sendmail.users에 입력한 가상메일을
가상메일 데이터베이스(sendmail.db)에 들어가게됨.
이때 들어가는 형식은 바이너리기때문에 볼수는 없음.
3. 이로서 작업은 끝났지만, 확실하게 데이터베이스에 들어갔는지 알아보기위해 다음과 같은 명령어로 확인한다.
#strings sendmail.db
4. 마지막으로 sendmail을 다시 구동해야함.
sendmail 죽이고 다시 start
/etc/mail/relay-domains 를 이용하여 relay 제한하기
이파일(relay-domains)은 초기에 생성되어 있지않으므로 touch나 vi등으로 이 파일을 만들어주어야한다.
그리고 가능한 퍼미션은 600으로 해두는 것이 안전하다.
한마디로 이 파일의 목적은 relay를 허용할 도메인리스트인 것이다.
이 파일에 설정되어 있는 도메인에 대한 메일의 중계(relay)는 허용이되나
이파일리스트에 포함되어 있지않은 도메인을 사용하는 메일의 relay는 허용되지 않는다.
relay를 허용할 도메인이 있다면 vi로 /etc/mail/relay-domains파일을 열어서 입력한다.
그리고,,
sendmail이 relay를 허용하고 있는 도메인리스트를 보면 방법은 다음과 같다.
[root@superuser mail]# echo '$=R' | sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter
>
haein.co.kr
haein.pe.kr
sohoschool.co.kr
manualand.co.kr
owner.co.kr
sajik.com
powertoday.co.kr
saebin.pe.kr
superuser.co.kr
six.co.kr
hanlimmedia.co.kr
hyung.co.kr
manualand.com
picasso.co.kr
nicekorea.co.kr
115.co.kr
imt-2000.co.kr
>
[root@superuser mail]
/etc/sendmail.cw 에 메일수신할 도메인설정하기
sendmail은 이 파일에 있는 도메인의 메일은 자기가 최종수신지라고 인식하게된다.
따라서 호스팅을 할때에는 고객의 도메인을 반드시 여기에 등록을 해야한다.
참고로 이파일의 예를 보면 다음과 같다.
[root@superuser /]# cat /etc/sendmail.cw
sajik.com
superuser.co.kr
picasso.co.kr
115.co.kr
hyung.co.kr
manualand.co.kr
sohoschool.co.kr
owner.co.kr
nicekorea.co.kr
namnari.co.kr
namnari.pe.kr
haein.pe.kr
powertoday.co.kr
imt-2000.co.kr
saebin.pe.kr
manualand.com
hanlimmedia.co.kr