메일 서버 (SENDMAIL )
학습 목표
리눅스 서버에 sendmail 서버를 구축하고 관리 할 수 있는 내용은 배운다.
들어가며
인터넷의 한 분야인 메일은 초기에는 전문인들만 사용하는 분야 이였지만 웹기반에 메일을 사용 할 수 있는 웹메일인 핫메일(http://www.hotmail.com ms 운영) 시작으로 국내에는
한메일(http://www.hanmail.net) 등 여려 웹을 기반으로 한 무료 메일 서비스가 나타나면서 메일은 대중화 대었으며 요즘은 메일에서 단순히 텍스트의 내용 뿐만 아니라 멀티미디어의 내용을 전달 할 수 있는 형태까지 발달하였다.
일반 유저들은 웹에 접속해서 간단하게 메일을 보내지만 내부적으로는 메일 서버라는 서버프로그램이 메일의 송수신을 하는데 그 대표적인 것이 sendmail 과 좀더 보안쪽에 안정적인 qmail 이 있으면 ms에 운영하는 핫메일의(os: BSD) 전송 메일 서버는 qmail 로 되어 있으며 국내 메일서버의 90% 이상이 sendmail 서버로 메일서버를 운영하고 있다.
sendmail : http://www.sendmail.org
qmail : http://www.qmail.org
한국 미러링싸이트 : http://www.kldp.org/qmail
국내 메일 서버 현황
국내 메일 서버 mail.lycos.co.kr : sendmail v8.9.3 www.daum.net : sendmail v8.9.3 www.kr.yahoo.com : sendmail v8.9.3 www.intz.com : sendmail v8.8.8+sun www.altavista.co.kr : sendmail v8.9.3 www.withyou.net : sendmail v8.9.3 www.orgio.net : sendmail v8.9.3 www.hanmir.com : sendmail SMI v8.6 www.card2card.com : Microsoft X1 IMS www.mycard.co.kr : Microsoft IMS www.bycard.co.kr : Microsoft IMS www.lettee.com : sendmail v8.9.3 www.interbird.com/card : sendmail v8.9.3 www.flowermail.co.kr : Microsoft IMS www.amail.co.kr : sendmail v8.9.3 www.tripod.co.kr : sendmail v8.9.3 www.shinbiro.com : sendmail v8.9.1aH1 www.interpia98.net : sendmail v8.9.3 www.koreamusic.net : sendmail v8.9.3 krfc.co.kr : sendmail v8.9.3 www.opentown.com : MS Exchange v5.5 www.netpark.co.kr : sendmail v8.9.3 www.netian.com : sendmail v8.9.3 www.hihome.co.kr : sendmail v8.9.3 www.dreamwiz.com : sendmail v8.9.3 www.midas.co.kr : sendmail v8.8.8 www.t2n.net : Wide mail v.1.0.3 naver : sendmail v8.9.3 chollian : sendmail v8.9.1a hitel : netscape message server unitel : sendmail v8.9.0 netsgo : microsoft smtp 5.5 Samsung : sendmail v8.9.3 LG : microsoft smtp 5.5 Doosan : sendmail v8.8.5 Daewoo : sendmail v8.9.2
RPM 설치
sendmail 은 3개의 파일로 되어 있습니다.
자료는 ftp.interpia98.net에서 다운 받은 수 있다.
sendmail-8.11.3-1kr.i686.rpm
sendmail-cf-8.11.3-1kr.i686.rpm
sendmail-doc-8.11.3-1kr.i686.rpm
설치
rpm -Uvh sendmail-8.11.3-1kr.i686.rpm
rpm -Uvh sendmail-cf-8.11.3-1kr.i686.rpm
rpm -Uvh sendmail-doc-8.11.3-1kr.i686.rpm
설정 파일
/etc/sendmail.cw
/etc/sendmail.cf
/etc/aliases
/etc/mail/access
/etc/mail/access.db
/etc/mail/domaintable
/etc/mail/domaintable.db
/etc/mail/mailertable
/etc/mail/mailertable.db
/etc/mail/virtusertable
/etc/mail/virtusertable.db
sendmail.cw -- > local-host-names (이름 변경됨)
메일을 받을 도메인을 입력하면 되며 기본적으로 본인의 도메인이 입력되어야
있어야 하며 DNS에서 여려개의 도메인을 세팅시 호스팅 도메인들도 등록을
해야 메일을 받을 수 있다.
sansung.net (메인 도메인 )
iwav.co.kr (호스팅 도메인)
mwav.net (호스팅 도메인)
sendmail.cf
메일 서버의 가장 중요한 설정 파일이며 많은 설정 내용들이 들어가 있지만
설정이 복잡하기 때문에 변경 할 것은 거의 없습니다.
aliases
메일을 다른 사용자에게 돌리거나 메일링리스트 운영시에 응용하여 사용 할 수 있다.
#
# @(#)aliases 8.2 (Berkeley) 3/5/94
#
# Aliases in this file will NOT be expanded in the header from
# Mail, but WILL be visible over networks or from /bin/mail.
#
# >>>>>>>>>> The program "newaliases" must be run after
# >> NOTE >> this file is updated for any changes to
# >>>>>>>>>> show through to sendmail.
#
# Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
# Well-known aliases.
manager: root
dumper: root
operator: root
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
#root: marc
## 위의 내용은 기본적으로 들어가 있는 내용
webmaster: iwav
## webmaster 유저로 오는 메일을 iwav 유저에서 보낸다.
mwav: aaaa,bbbb,cccc,dddd
#mwav 로 오는 메일을 aaaa,bbbb,cccc dddd 로 보낸다.
#email:include:/etc/list.txt
## mailing 으로 오는 메일을 list.txt 파일 목록에 있는 모든 사람들한데 보낸다.
#수정 후 newaliases 명령어를 실행해야 그 값이 반영된다.
/etc/mail/access
# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
#OK 모든 메일을 받는다.
# RELAY 지정된 도메인으로 부터오는 메일을 받는다.
# REJECT 지정된 주소로부터오는 모든 메일을 거부한다.
# 추가 후 makemap hash access < access
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
hacker.org REJECT
## hacker.org 로 오는 메일을 거부한다.
127.0.0.1 RELAY
211.171.202 RELAY
211.221 RELAY
#210 RELAY
211.58.230 RELAY
/etc/mail/virtusertable
# alaise 와 비슷한 기능을 한다.
# 이 file은 virtual user를 설정하는 file이다.
# 실제로 없는 계정을 mapping 할수 있으며, 같은 이름 역시
# domain 별로 다르게 mapping 할수 있다.
#
# file 작성후
# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
# 명령을 실행 해 줘야 한다.
#
# * 예제 *
# admin@sansung.net alwaysb@hotmail.com
# sales@iwav.co.kr byun
#
# admin@abc.co.kr abc
# sales@abc.co.kr abc
#
#
@adin.co.kr adin
@javaexpert.co.kr javaexpert
# @javaexpert.co.kr 도메인으로 오는 모든 메일을 javaeepert 로 보낸다.
POP3 설치
rpm -q imap
#pop3가 작동하기 위해서는 imap 이 설치 되어 있어야 하며
설치가 안되있으며
시디에서
rpm -Uvh imap*
으로 설치 할 수 있다.
pop3 는 inet 방식으로 작동을 하기 때문에
/etc/ineted.conf 파일에서
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
주석(#) 을 지워야 한다.
inet
/etc/rc.d/inint.d/inet restart
pop3 데스트 하기
telnet localhost 110
[root@test /root]# telnet localhost 110
Trying 127.0.0.1...
Connected to sansung.
Escape character is '^]'.
+OK POP3 sansung v7.59 server ready
(pop 는 110 포트를 사용하며 종료는 quit )
sendmail.cf
O MaxMessageSize=100000
# 메일 크기가 1M를 넘지 않는다.
O QueueLA=64
# 기본은 8인데 전자우편이 8이 이상 되면 바로 큐에 저장하겠다는 것인데
# 이것을 높여주면 전자우편을 큐에 저장하기 않고 보냄
O RefuseLA=123
# 메일 프로세스가 평균 123개 이상이면 메일처리를 거부하겠다는 것임
O MamDaemonChilden=64
# 최대 메일 프로세스를 64개지 만들어서 처리 하겠다.
O MinQueueAge=5m
# 큐에 저장된 메시지를 5분 후에 다시 재시도를 하겠다는 것
새로이 추가 된 것 들
메일 발송이 가능 한 곳은 localhost 나 이니면 /etc/mail/access 파일에서
접속을 허가한 특정 IP 에사만 메일 발송이 되었기 때문에 이에 추가된 것이
passwd 파일이 등록되 유저는 access에 별도 추가를 안해도 메일 발송을
가능하게 하는 것이다.
리눅스 7.1 에서는 이 패캐지가 설치되어 있지만 이전 버번은 따가 추가하여
설치를 하여 한다.
[root@aaa /root]# rpm -qa |grep sendmail
# 센드 메일
sendmail-8.11.3-1wl
sendmail-doc-8.11.3-1wl
sendmail-cf-8.11.3-1wl
[root@aaa /root]# rpm -qa |grep cyrus
# passwd 파일을 이용해서 인증을 위한 cyrus
cyrus-sasl-devel-1.5.24-17
cyrus-sasl-1.5.24-17
cyrus-sasl-gssapi-1.5.24-17
[root@aaa /root]# rpm -qa |grep openssl
# 패스워드 암호화를 위한 ssl
openssl-python-0.9.6-3
openssl-perl-0.9.6-3
openssl-devel-0.9.6-3
openssl-0.9.6-3
openssl095a-0.9.5a-1
[root@aaa /root]# rpm -qa |grep imap
# pop3 서버를 imap
imap-devel-2000-9
php-imap-4.0.4pl1-9
imap-2000-9
위에 나온 패키지가 설치가 되어 있어야 하며 없다면 시디롬에서 설치가 가능하다.
설치가 되었으면 pop3를 가동하자 (inetd.conf 나 ipop3 을 수정한다)
인증 기능 확인 테스트
[root@aaa /root]# telnet localhost 25
Trying 127.0.0.1...
Connected to aaa (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.11.3/8.11.3; Fri, 2 Nov 2001 04:32:33
-0500
ehlo aaa.com
250-localhost.localdomain Hello aaa [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250-AUTH LOGIN PLAIN
250 HELP
quit
다음 아웃록에서 인증 필요를 채크를 하면 access 파일을 설정하지 않고
유저들을 메일 서버를 보낼 수 있다.
spam 메일 막기
sendmail.cf
## Error messages definition ## Error codes refer to RFC821.
D{Msg_mailer}"553 SPAMBOT is not allowed here." D{Msg_adv}"553 spam no.." D{Msg_virus}"553 Your message may contain the" D{Msg_master}"If you have questions, please email admin@$j." D{Msg_date}"553 Bogus date format - SPAMMER - " D{Msg_to}"501 Bogus recipient address." D{Msg_from}"553 Must exist sender mail address" D{DENYPRON}"553 Deny Porno spam mail!!!"
################################################### #### Local Rulesets (dacapo, 11/13/99) ##### ###################################################
Scheck_subject # 제목을 검사하고 아래와 같은 내용이 있으면 에러 메시와 같이 반송한다. R<ADV:$*> $#error $: ${Msg_adv} - ${Msg_master} RADV:$* $#error $: ${Msg_adv} - ${Msg_master} RADV$* $#error $: ${Msg_adv} - ${Msg_master} R[ADV]$* $#error $: ${Msg_adv} - ${Msg_master} R<광고>$* $#error $: ${Msg_adv} - ${Msg_master} R[광고]$* $#error $: ${Msg_adv} - ${Msg_master} RImportant Message From $* $#error $: ${Msg_virus} Melissa virus - See http://www.cert.org/advisories/CA-99-04-Melissa-Macro-V$ RRe: Important Message From $* $#error $: ${Msg_virus} Melissa virus - See http://www.cert.org/advisories/CA-99-04-Melissa-Macro-V$ RC:\CoolProgs\Pretty Park.exe $#error $: ${Msg_virus} PrettyPark virus - See http://www.symantec.com/avcenter/venc/data/prettypar$ R영상으로 보내는 편지 $#error $: ${Msg_virus} Ecokys virus - See http://www.ahnlab.com/newvir/warn19990330.htm - ${Msg_ma$
테스트 하기
[root@server /root]# sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > check_subject [광고] check_subject input: [ M-1M-$M-0M-m ] check_subject returns: $# error $: 553 M-1M-$M-0M-m M-8M-^M-@M-OM-@M-; M-0M-EM-:M-N M-GM-UM-4M-OM-4M-Y . . - If you have questions , please email admin @ server . test . >
Nimda.worm 차단하는 방법
HContent-Type: $>check_ct
D{NIMDA}"Your message may contain the NIMDA.WORM!!!"
Scheck_ct R
$+boundary="====_ABC1234567890DEF_====" $#error $: 550 ${NIMDA}
|