메일 서버(sendmail)

Download Report

Transcript 메일 서버(sendmail)

메일 서버(sendmail)
목차
• Sendmail이란
• 메일 송수신 과정
• Sendmail,Pop3와 imap 데몬 설치
• Sendmail 설정
• Sendmail 시작과 종료 및 테스트
Sendmail이란?
• 인터넷 전자 메일의 표준 규약인 SMTP 프로
토콜을 통해서 메일 서비스 기능을 수행
• 전형적인 MTA 데몬으로 1970년대 후반 버클
리 유닉스로 유명한 Eric Allman에 의해서 만
들어짐
Sendmail(용어)
•
•
•
•
•
•
•
•
•
SMTP (Simple mail Transfer Protocol)
메일을 보낼때 사용되는 프로토콜
POP3(Post Office Protocal)
메일 서버에 도착한 메일을 전송받을때 사용하는 프로토콜
IMAP(Internet Mail Access Protocol)
MTA(Mail Transmit Agent)
메시지를 전달받아 이를 외부로 전달해 주는 프로그램
MUA(Mail Transmit Agent)
이용자가 메일을 보내기 위하여 사용하는 프로그램
메일 송수신 과정
메일 송수신 과정
• 사용자가 E-mail 프로그램(MUA)로 작성
• MTA(Sendmail)에의해 외부 메일 서버로 메일
전달
• 메일을 받는 대상 메일서버에서는 MTA에 의해
E-mail 전송받음
• /var/spool/mail 디렉토리라는 우편함에 계정
• 이름으로 저장
POP3
•
•
•
•
•
Post Office Protocol : 서버에 설치하는 데몬
클라이언트에서 POP3 데몬을 이용하여 메일을 직접 내려 받아 읽어옴
POP3 데몬 포트 :110번 포트
POP3 를 이용해 메일 서버에서 가져온 메일은 더 이상 서버의 메일 박스에 남아 있지
않다
사용자가 고정적인 위치에서 메일을 받는 경우에 유리
IMAP 데몬
• IMAP 데몬 역시 메일 서버에 설치하는 서버 데몬
• Internet Message Access Protocol : 143번포트 사용, IMPA3
는 :220번
• 메일을 해당 사용자에게 보내는 역할은 pop3와 같지만 메일을 보내
는 방법 차이
• IMAP로 접속하여 메일을 읽으면 메일 서버에는 메일이 계속 존재
(메일 헤더만 보고 읽을 수 있으며, 읽은 메일은 읽지 않은 메일과
구분되어 표시)
• 장점 : 메일을 읽은 위치가 불규칙한 사용자에게 편리
• 단점 : 메일 서버에 항상 메일이 존재하여 자원낭비
•
구현이 힘듬
POP3와 IMAP 비교
• 공통점
• 메일을 클라이언트에게 보내는 역할
• 서버에 설치하는 서버 데몬
• Off-line을 지원하고 어떠한 플랫폼에서도 접근이 가능,
다양한 운영체제에서 메일을 받아볼수있다
• 인터넷에 연결된공이면 어디서든 접근이 가능
• SMTP와 별개의 개념으로 중계역활은 하지않음
• (메일을 클라이언트에게 보내는 기능만함)
POP3와 IMAP 비교
• 차이점
• 메일서버에서의 존재 유무
• 메일 확인의 위치에 따른 장단점
• 구현의 차이
• 클라이언트 프로그램
• 포트번호
Sendmail 설치
• Sendmail, POP3, IMAP 데몬 설치
• Sendmail
• http://www.sendmail.org/current_release.html
• ftp://ftp.sendmail.org/pub/sendmail/RELEASE_NOTES
• 확인 :Rpm –qa | grep sendmail
• 설치 : rpm –Uvh sendmail
• 설치된 정보 확인
• Rpm –qi sendmail
• IMAP,POP3도 위와 같은 과정
Sendmail 설치
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
소스로 풀기(IMAP)
ftp://ftp.cac.washington.edu/imap
Imap-xxx.tar.Z
압축 풀기
Uncompress imap-xxx.tar.Z
Tar xvf imap-xxx.tar
컴파일하기
cd 폴더
Make slx
컴파일 후 imapd 확인하기
컴파일이 완료되면 imapd 디렉토리에 imapd 생성
ls ipopd
실행 파일 복사하기
Cp imapd /usr/sbin
접속하기 : telnet localhost 110(pop3)
Sendmail 설정파일
Sendmail 설정과 관련 파일 정보
Sendmail
Sendmail 데몬 실행파일
/usr/sbin
Sendmail.cf
Sendmail 주설정 파일
/etc
Sendmail.cw
메일처리할 도메인 기록 파일
/etc
Sendmail.mc
Sendmail 매크로 설정파일
/etc
Access
Sendmail 중계 기능 설정 파일
/etc/mail
Access.db
Sendmail 중계 기능 설정 DB
/etc/mail
Mailertable
Sendmail 특정 도메인 메일러 라우팅 설정 파일
/etc/mail
Mailertable.db
Sendmail mailer DB 파일
/etc/mail
Domaintable
Sendmail domain mapping 설정 파일
/etc/mail
Domaintable.db
Sendmail domain mapping 설정 db파일
/etc/mail
Virtusertable
Sendmail 가상메일 설정 파일
/etc/mail
Virtusertable.db
Sendmail 가상메일 설정 db파일
/etc/mail
Aliases
Sendmail 알리어스 파일
/etc
Sendmail 설정파일
(/etc/sendmail.cf)
•
•
•
•
•
•
•
•
•
•
•
•
•
메일 호스트 지정(Cw, Fw)
#############
## local info
##
#############
Cwlocalhost
Sendmail을 설정하는데 있어서 가장 중요한 포인트, 로컬 호스트에 관하여 메일을
처지하도록 지정
Cw 명령은 w라는 클래스에 갑을 하나씩 대입하라는 명령, w 뒤에 메일 서버로 만들
고자 하는 도메인을 지정(복수 지정이 가능-가상호스트에대한 이메일 서비스)
Ex
Cwnwork.chungbuk.ac.kr
Cwwww.testnara.chungbuk.ac.kr
Cwcomputer.ac.kr
Fw :위와같이 많은 도메인을 기입하기 불편
Fw/etc/mail/local-host-names(8.10)
Sendmail 설정파일
(/etc/sendmail.cf)
명령
Sendmail 설정 명령 정보
설 명
C
w 클래스에 값을 지정함. 여러 개의 명령을 복수로 사용할 수 있음
F
클래스로 정의한 파일을 불러 읽음
D
내부 매크로 변수 j 에특정한 값(도메인)을 정의함
O
옵션을 지정함
T
신뢰 가능한 사용자 지정
P
메시지 우선 순위
M
SMTP 메일러 지정
H
헤더(header)포맷
R
규칙 재쓰기
S
룰셋 정의
메일 호스트 강제 지정(Dj)
• #Dj$ww.Foo.Com
• Dj 명령은 내부 매크로 변수 j뒤에 특정 값을 지정하게 되면 특정 값을 강제
로 메일이 처리할 수 있도록 함
• j 뒤에 도메인을 지정하면 Sendmail이 자신의 호스트 명을 알아내지 못하는
실수가 있을때 그 도메인 으로 메일이 작동 될 수있게 해줌
•
•
•
•
•
•
일반적으로는 주석처리 되어있음
Ex
Djnwork.chungbuk.ac.kr
Djwww.testnara.chungbuk.ac.kr
Djwww.computer.com
메일 발신지 바꾸기(DM)
•
#who | masquarade as(null for no masquerading)(see also $=M) DM
•
DM 명령은 메일을 전송할 때 메일 전송자의 주소를 메일 호스트와 다르게 표시하여 전
달해 주는 기능
•
메일 호스트 이름은 nwork.chungbuk.ac.kr이지만 DM뒤에 testnara.chungbuk.ac.kr
•
답장을 받을때는 nwork.chungbuk.ac.kr으로 받겠다는 의미
•
•
•
여러대의 호스트를 운영할때 하나의 주소로 모든 메일에 대한 답자을 받고자 할때 유용
Ex
#who | masquerade as (null for no masquerading)(see also $=m)
DMtestnara.chungbuk.ac.kr
메일 포워딩(forwarding)
• Sendmail.cf 파일 내용에 옵션지정
• #Forward file research path
• ForwardPath=$z/.forward.$w:$z/.forward
• 사용자 계정 디렉토리 안에 ./forward라는 파일이 존재하게되면 메
•
•
•
•
•
일 서버로 오는 메일들을 이 파일 안에 기록된 메일 주소로 전달해
주는 기능
Ex
Nwork.chungbuk.ac.kr 라는 메일 서버의 sykim 계정에 ./forward파
일을 만듬
[email protected]
[email protected]의 모든 메일을
[email protected]로 도착하게 됨
E-mail 주소가 여러 개 존재할때 하나의 E-mail주소로 모든 E-mail
을 받고자 할때 유용
가상 유저 사용
• Kvirtuser hash –o /etc/mail/virtusertable
• 하나의 메일 서버에서 여러 개의 버추얼 호스트를 운영하는 경우에 여러 버추얼
호스트에 대해 똑같은 계정을 필요
• Sykim이라는 계정이 존재할때 nwork.chungbuk.ac.kr호스트와
•
•
•
•
•
•
•
testnarac.chungbuk.ac.kr,sunyoung.com 호스트들이 똑같은 계정을 필요
하나의 동일한 계정을 여러 버추얼 호스트들이 이메일 주소로 동시에 사용할 수
있게해주는것이 virtusertable임
/etc/mail/virtusertable
[email protected] [email protected]
[email protected] [email protected]
[email protected]
[email protected]
Makemap hash /etc/mail/virtusertable </etc/mail/virtusertable
=>/etc/mail/virtusertable.db데이터베이스 파일에 dB화 해주어야만됨
메일 릴레이 기능
(Access list database)
• 자신의 네트워크가 아닌 다른 네트ㅝ크상의 호스트에서 자신의 메일 서버를
•
•
•
•
•
•
•
•
•
•
이용하여 메일을 전송하고자 할 경우
Kaccess hash –o /etc/mail/access
스팸메일을 차단하기 위하여 디폴트로 설정된 값으로 /etc/mail/access로
모든 네트워크에 대해 메일 릴레이 기능을 선택적으로 제공 할수 있음
오직 /etc/mail/access파일 안에 지정되어 있는 네트워크 주소에 대해서만
메일을 전송할 수 있다
/etc/mail/access
Nwork.chungbuk.ac.kr
RELAY
Testnara.chungbuk.ac.kr
RELAY
Sunyoung.com
RELAY
192.168.1.0
RELAY
sunyoung.ac.kr
REJECT
Makemap hash /etc/mail/access </etc/mail/access
• 테스트 :[[email protected]]#telnet mail-abuse.org
센드메일의 RELAY
동적 릴레이 기능
• 앞에서 본 메일 릴레이기능은 스팸메일을 방지하는 데 뛰어난 기능
을 제공함
• /etc/mail/access 데이터베이스에 기록되지 않은 네트워크상의 호
스트들은 메일을 보낼수 없게됨
• 동적 네트워크 주소를 사용하는 경우에 시스템 관리자가 일일이 사
용자의 아이피 주소를 access 데이터베이스에 갱신은 어려운 사항
• 해결책
• 서버의 네트워크 주소와 클라이언트의 네트워크 주소를 비교하여 메
일 릴레이 기능 부여
• Pop3 서버와 같이 사용자의 인증을 통하여 서비스
메일 알리어스(Mail Alias)
• AliasFile=/etc/aliases
• 어느 계정으로 메일을 보냈을 때 그 계정으로 메일이 도
착하지 않고 알리어스 파일에 지정된 다른 계정으로 메
일이 전송될 수 있게 하는 기능
•
•
•
•
•
•
사용 형식
Name: name1, name2, name3……
Name에게 메일을 보내면 오늘쪽에 지정한 name1,name2,name3..
에게 같은 메일이 전달
Sykim: [email protected], [email protected] ….
알리어스 기능을 활용하여 메일링 리스트로 많이 사용
센드메일 로그 설정(Log Level)
•
•
센드 메일이 작동하게 되면 /var/maillog 파일에 메일 전송에 대한 로그를 기록
Loglevel로 지정 ( LogLevel=9)
레벨
설
명
0
센드메일 작돋에 관하여 최소 정보만 기록
1
네트워크 에러 또는 접근 실패들을 기록
2
네트워크 에러 또는 접근 실패들을 기록
3
잘못된 주소, forward 에러, 시간 경과에 따른 접속 실속 실패 등 기록
4
Tcp 랩퍼에 의해 거부된 접속 기로
5
수신 메일의 레코드를 기록
6
Vrfy 명령에 의한 사용자 정보 파악 시도 기록
7
메일 수신 실패 기록
8
메일 수신 성공 기록
9
시스템 자원 부족에 의한 수신 실패 기록
10
데이터베이스에서 탐색되는 키 값 기록
11
NIS 에러, 프로세스 종료 기록
12
SMTP 접속기록
13
비사용자 쉘, 디렉토리 퍼미션 설정 등 기록
14
접속 거부에 대한 기록
15
모든 SMTP 접속 기록
메일 용량 제한하기
• MaxMessageSize=1000000(1메가)
• 메일전송시 메일 텍스트 내용과 첨부 파일을 포함한 메일 전체 크키를 제한
하는것임
• 전달모드
• DeliveryMode=baground
레 벨
설 명
Interactively
Mqueue에 있는 메일들을 동기화 모드로 작동시
켜 메일을 전송함
Background
Mqueue에 있는 메일들을 비동기화 모드로 작동
시켜 전송함
Queue
Defer
메일을 수신하여 Queue에 저장하도록 함
메일을 수신하여 최대한 빨리 Queue에 저장함
메일 저장 큐 디렉토리
• QueueDirectory=/var/spool/mqueue
• 메일을 전송할 때 임시로 저장되는 디레토리 지정
• 외부로 메일 전송될때 사용자가 보낸 메일이 /var/spool/mqueue 디
렉토리에 저장
• 메일 전송이 완료되면 삭제
• 메일 저장 큐 값 설정
•
•
•
•
•
QeueLA=8
#메일 프로세스 평균로드가 8개이상시 큐에 저장
RefuseLA=12 #메일 프로세스 평균로드가 12개이상이면 메일 발송 중단
MaxDaemonChildren=12 #하나의 데몬에 대한 자식 데몬 수를 지정
MinQueueAge=30m # 메일 발송 처리가 실패하는 경우 큐에 저장된후 시간후 재전송
MaxQueueRunSize=10000 #큐에서 처리할 수 있는 작업의 수를 지정
센드메일의 시작과 종료
• /etc/rc.d/init.d/sendmail start
• /etc/rc.d/init.d/sendmail restart
• 부팅할때마다 sendmail 데몬이 자동으로 실행되
도록 하기위해서는 ?
• Setup or ntsysv
• Sendmail 작동 여부 점검
• telnet nwork.chungbuk.ac.kr 25
참고 사이트
•
•
•
•
•
www.sendmail.org
www.kldp.org
www.wowlinux.co.kr
www.linuxnara.co.kr
www.linux.sarang.net