2

Similar documents
메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

PowerPoint 프레젠테이션

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

메일서버등록제(SPF) 인증기능적용안내서 (SunOS - Sendmail) OS Mail Server SPF 적용모듈 (C 언어기반) 작성기준 SunOS bit sendmail spfmilter

The Pocket Guide to TCP/IP Sockets: C Version

Windows 8에서 BioStar 1 설치하기

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

목차 1. 시스템구성 개요 정의 목적 환경 준비사항 필수설치프로그램 Sendmail 서버구축을위한준비... -

file://\\......\paper\tr2001\tr \spam_relay_test.html

게시판 스팸 실시간 차단 시스템


1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

2-11Àå

PowerPoint 프레젠테이션

Sena Device Server Serial/IP TM Version

Microsoft Word - src.doc

PowerPoint 프레젠테이션

작성자 : 기술지원부 김 삼 수

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

목 차 I. 개요 1 1. SPF( 메일서버등록제) 란? 1 2. SPF 를이용한이메일인증절차 1 II. postfix, SPF 인증모듈설치 2 1. postfix 설치여부확인 2 2. libmail-spf-perl 설치 2 3. postfix-policyd-spf-p

Linux 메일서버 CentOS 에서메일서버 ( 센드메일 ) 구축하기 제출일 전공사이버경찰학과 과목사이버수사학학번 담당교수안미정교수님이름한믿음 이문서는나눔글꼴로작성되었습니다. 설치하기

0. 들어가기 전

Microsoft Word - Windows_Server_Hmail_설치법

RHEV 2.2 인증서 만료 확인 및 갱신

Webtob( 멀티도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

BEA_WebLogic.hwp

KISA-GD

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Microsoft Outlook G Suite 가이드

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

메일서버등록제(SPF) 인증기능적용안내서 (SunOS - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 SunOS bit Postfix postfix-policydspf-perl 년 6

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Mango-E-Toi Board Developer Manual

Microsoft PowerPoint - 10Àå.ppt

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

휠세미나3 ver0.4

운영체제실습_명령어

MAX+plus II Getting Started - 무작정따라하기

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

INDEX 1. 개요 메일서버구축하기 Sendmail 설치 Sendmail 설정 dovecot 및 saslauth 설치 dovecot 및 saslauth 설정. (CentOS 5.x

MySQL-Ch10

- 목차 - 1. 서버에서실행되는서비스확인 2. 원격접속 (SSH) 보안설정 3. /tmp 디렉터리보안설정 4. iptable 설정 / hosts.allow & hosts.deny 설정 5. 시스템파일변조체크 문서작성간에테스트된환경 - CentOS bit -

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

EJRWXFSEKSPJ.hwp

Mango220 Android How to compile and Transfer image to Target

Microsoft Word - Armjtag_문서1.doc

PowerPoint Template

Install stm32cubemx and st-link utility

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

untitled

이메일발송포트사용제한 기타OS - Sendmail 사용설명서 OS Mail Server 작성기준 ( 최적화버전) 기타 Sendmail 유사 버전 기타 Unix/ Linux Sendmail 8.10 ~ Sendmail 8.14 Sendmail 8.10버전이상

bn2019_2

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Outlook IMAP/POP 사용자 설명서 September, 2015

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

/chroot/lib/ /chroot/etc/

VPN.hwp

Network seminar.key

DocsPin_Korean.pages

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

Apache install guide

Secure Programming Lecture1 : Introduction

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Windows Server 2012

PowerPoint 프레젠테이션

Remote UI Guide

SMB_ICMP_UDP(huichang).PDF

SBR-100S User Manual

단계

Microsoft Word - FunctionCall

Microsoft PowerPoint 통신 및 압축 명령어.ppt

웹일본어(2008)_교재(KO).hwp

TTA Journal No.157_서체변경.indd

Microsoft Word - PLC제어응용-2차시.doc

슬라이드 1

Microsoft PowerPoint - 06-IPAddress [호환 모드]

TCP.IP.ppt

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Sendmail ) 설정변경 5 2. 스팸차단테스트 5 Ⅲ. 실시간스팸차단리스트 (RBL) (RBLDNSD 이용 ) 7 1. 시스템환경및프로그램상세내역 8 2.

Chapter 1

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

6강.hwp

SRC PLUS 제어기 MANUAL

WebRTC 플러그인이 필요없는 웹폰 새로운 순수 VoIP 클라이언트 기반의 최신 WebRTC 기술은 기존 레가시 자바 클라이언트를 대체합니다. 새로운 클라이언트는 윈도우/리눅스/Mac 에서 사용가능하며 Chrome, Firefox 및 오페라 브라우저에서는 바로 사용이

10X56_NWG_KOR.indd

Transcription:

메일서버의장애와대처방법 인터넷이웹중심으로발전하면서도의사소통수단이나마케팅수단으로여전히중요도가높아지고있는것이바로메일서비스이다. 이번호에서는 sendmail 과 imap 을이용한 pop3d 서비스제공시발생가능한각종메일서비스의장애에대비하여안정적인메일서비스를제공하기위한방안에대해알아보도록한다. 오늘과내일넷센터홍석범 (antihong@tt.co.kr) 보내고받는메일의양제한하기 지난 11월호에서도잠깐언급한것처럼시스템의제한설정과서비스의안정성은매우깊은연관성을가지고있다. 기본적으로대부분의서비스는유저가사용가능한시스템의자원제한이거의설정되어있지않은데, 메일서비스도마찬가지이다. 최근에는메일의이용율이높아지고, 메일의컨텐츠도전통적인텍스트방식에서음성, 이미지등각종동영상이주종을이루면서용량도점점커지고있다. 물론그만큼하드웨어나메일서버의소프트웨어적인성능도향상되고있지만용량이큰메일을주고받는다면당연히시스템의부하가올라가기마련이고이로인하여같은서버내다른서비스에까지영향을미치게된다. 따라서시스탬에서보내는메일서비스 (SMTP) 나받는메일서비스 (POP3) 를제공하고있다면용량이큰파일을주고받는것을적절히제한할필요가있다. sendmail 은로컬의메일을외부로발송하는 SMTP( 보내는메일서버 ) 기능도있지만외부에서서버내계정으로전송되는메일을받아서서버에저장하는기능도있다. 이때기본적으로는보내거나받는메일의양에대한제한이전혀없어 10메가이상이넘는큰사이즈의메일이송수신될경우서버에과부하가걸릴수있으므로아래와같이각각의설정 ( 보내는메일과받는메일의양 ) 을적절히제한하여설정하는것이좋다. >> SMTP 서버에서보내는양제한하는법. /etc/mail/sendmail.cf ( 또는 /etc/sendmail.cf. 이는 sendmail 의패키징방법에따라다르다.) 파일에서다음과같이 MaxMessageSize 부분의주석을제거하고제한하고자하는적절한값을입력한다. # maximum message size O MaxMessageSize=5024000

위와같이설정하였을경우현재의서버를보내는메일서버로이용시첨부파일이 5M 이상초과하거나웹에서 /usr/sbin/sendmail 을실행하여외부로메일을발송하는메일링리스트등의프로그램에서도메일발송시 5 메가이상의메일은보낼수없게된다. 5024000 은 byte 단위이며설정변경후변경된내용을적용하려면 killall HUP sendmail 로 sendmail 데몬을 Refresh 하면된다. >> 받는메일서버에서받는양제한하는법. 외부에서서버로들어오는메일에대해서용량을제한하고싶다면같은파일 (sendmail.cf) 에서 "Local and Program Mailer specification" 부분을설정해주면된다. Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/ @qspfhn9, S=10/30, R=20/40, M=5024000, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u 위와같이 T=DNS/RFC822/X-Unix 앞부분에 M=5024000 부분을추가해주면된다. 마찬가지로 5024000는 byte 단위이며각자의시스템환경에따라원하는용량만큼적절히설정해주면된다역시설정변경후 sendmail 을 refresh 하면적용이된다. 위의경우서버에서는 5메가이상의메일은수신하지않으며 5메가이상의메일을보낸이는 552 5.2.3 <antihong@tt.co.kr>... Message is too large; 5024000 bytes max 554 5.0.0 <antihong@tt.co.kr>... Service unavailable 와같은에러메시지를회신받게된다. 아울러 # maximum number of recipients per SMTP envelope O MaxRecipientsPerMessage=20 와같은부분이있는데, 이부분은한번에메일발송시동시발송 ( 참조발송 ) 이가능한메일계정의수를뜻하는것으로 SMTP 서비스를제공한다면이설정을적용하는것이좋다. 기본적으로이값에도제한이없으므로먼저주석을삭제한후적절한값을설정해주면한번에동시발송가능한메일의수도제한할수있다. ( 위의경우에는한번에참조발송이가능한메일유저를 20명으로제한 ) 설정이끝난후에는 killall HUP sendmail 로 sendmail 을재가동해주면적용된다.

메일용량쿼터설정하기 각유저의홈페이지공간에대한쿼터설정방법은잘알고있는데, Sendmail 을제공시메일용량쿼터에대한설정은잘모르는경우가많이있다. 매일쿼터에대한설정은다소복잡하기는하지만설정은가능하다. 기본적으로각유저의메일은 /var/spool/mail/ 디렉토리에자신의계정소유로저장이되게되는데바로이특성을이용하여쿼터설정이을하면된다. 쿼터는각파일시스템별로각각설정이가능하므로각유저의홈디렉토리외에 /var 파티션에도추가적으로쿼터를설정하면되는것이다. 쿼터를설정하는방법은일반적인방법과동일하다. 먼저 /etc/fstab 파일을열어 /var 파티션이별도로설정되어있다면 /var 파티션에, 별도로없으면 / 파티션에유저쿼터나또는그룹쿼터설정을하면된다. /dev/sda1 /home ext2 defaults,usrquota=/home/.quota /dev/sda8 /var ext2 defaults,usrquota=/var/.mailquota 위에서는 /home 파티션에도쿼터설정을하고 /var 파티션에도쿼터설정을한것을볼수있다. 이후 touch /home/.quota 및 touch /var/.mailquota 로사이즈가 0인파일을생성한후 quotacheck a 를실행하면파일시스템을스캔하여디스크사용량을체크하여해당파일에정보를저장한다. edquota user 를실행하면 /dev/sda1: blocks in use: 0, limits (soft = 99980, hard = 99980) inodes in use: 0, limits (soft = 0, hard = 0) /dev/sda8: blocks in use: 0, limits (soft = 29980, hard = 29980) inodes in use: 0, limits (soft = 0, hard = 0) 위와같이쿼터설정이나오는데, 여기에서 /dev/sda1 은 /home/ 디렉토리에대한쿼터설정이고, /dev/sda8 은 /var/ 디렉토리에대한쿼터설정이다. 위설정으로각각 /home 디렉토리에는 100메가로, 메일용량은 30메가로총 130메가를할당하여쿼터를설정한것을알수있다. 만약별도의 /var 파티션이없이 / 파티션만있는상황에서 100 메가로쿼터설정을했다면이용량은홈페이지의용량과메일용량을합쳐서 100메가로적용이되므로주의하기바란다.

##################### 참고. Quota 의설정에대해위와같이 edquota 사용시관련된라인이아래와같이보이는부분이있다. 이중 "blocks in use:" 는유저가현재파티션에서사용중인총블럭의수를킬로바이트로, "inodes in use:" 는유저가현재파티션에서사용중인총파일의개수를보여준다. 이두개의 "blocks in use:" 와 "inodes in use:" 는시스템에의해자동으로설정되고제어되므로이값을임의로변경할필요는없다. 그리고 quota 설정시 soft 제한 (soft = 5000) 은유저가사용할수있는최대용량을뜻하며 ( 이예제에서는약 5M 이다.) hard 제한 (hard = 6000) 은유저가초과할수없는절대적인디스크사용량을뜻한다. "hard limit" 는 "grace period" 옵션이설정되었을때에만적용된다. grace period 는쿼터가설정된유저나그룹이 soft limit 을초과한이후에도사용가능한시간의한계이다. 예를들어서여러분이관리하는시스템에 " 해당유저의홈디렉토리를 50MB 로쿼터제한하고초과시 7일간의유예기간을준다 " 는정책을세울수도있다. 각자유예기간의설정에대해서는나름대로적당하다고생각하는기간을정의할수있다. grace period 는 edquota t 로확인및설정할수있으며아래의경우에는 grace period 가 7일로설정되어있는것을알수있다. /dev/sd1: block grace period: 7 days, file grace period: 7 days /dev/sda8: block grace period: 7 days, file grace period: 7 days 그리고한유저에게적용된쿼터설정을다른유저에게도그대로적용하려면 p 옵션을사용하면되는데, 아래와같이실행하면 edquota 프로그램은 /etc/passwd 에정의된유저중 UID 가 499 이후의모든유저에대해 "user" 의쿼터설정을그대로복사하게된다. edquota -p user `awk -F: '$3 > 499 {print $1}' /etc/passwd` #################################################################### 만약쿼터가초과된계정에메일을발송하게되면아래와같은에러메시지가나며더이상메일을수신하지못하게된다.

sendmail 이정상적으로작동하는지여부를아는방법 sendmail 이현재작동중인지확인하는방법은아래두가지방법으로가능하다. (1) # ps auxw grep sendmail 로확인위와같이확인시 root 0.0 0.0 2684 1460 S Aug24 sendmail: accepting connections on port 25 와같이 sendmail: accepting connections on port 25 로보이면정상적으로작동하는것이 다. 만약 sendmail 이다운되어작동하지않을때는 sendmail: rejecting connections 라는 메시지가보이게된다. (2) sendmail 이반응하는 25 번포트로접속. # telnet tt.co.kr 25 Trying 211.47.66.50... Connected to tt.co.kr. Escape character is '^]'. 220 www10.tt.co.kr ESMTP Today and Tomorrow (http://tt.co.kr/) 와같이 sendmail 이바인딩하는 25 번포트로 telnet 을접속하면 sendmail 이반응을

하게되는데, 위와같이접속을하여응답이있을경우에는접속을받아들일준비가되어있는상태이며반응하지않을때는 Trying tt.co.kr... telnet: Unable to connect to remote host: Connection refused 와같이접근이거부되었다는것을알수있다. 갑자기 sendmail 이작동하지않을때 sendmail 이작동하지않는경우는주로 2 가지이다. 첫번째는, 시스템의부하율인 Load Average 가높아져 sendmail 이작동하지않는경우이고두번째는 sendmail 에서받는메일이저장되는 /var 파티션이 100% 가되었을경우이다. Sendmail 은기본적으로시스템의 Load Average 수치가 12를초과하였을경우에는자동으로작동하지않게되는데이는 sendmail이서비스거부공격등으로시스템의부하가높아졌을때 sendmail 로인하여시스템이다운되는것을막기위한조처이다. 이값을수정하려면 sendmail.cf의 # load average at which we refuse connections O RefuseLA=12 에서수정한후 killall HUP sendmail 로재실행해주면되고, 이값은각각의시스템에따라적절히조정하면된다. 만약현시스템의특성상늘부하가높아로드가자주 12를초과한다면이값을각자의시스템환경에맞게적절히조절하여야외부에서오는메일을받을수있게된다.( 서버에서 25번포트로바인딩하고있어야외부에서오는메일을수신할수있다.) 그리고메일이저장되는 /var/spool/mail 파티션이가득찼을경우 ( 파티션 100%) 에도 sendmail 이작동하지않으므로파티션이가득찼을경우에는 /var/log/ 등에서불필요한데이터를삭제하여 /var/spool/mail 이포함된파티션이 100% 를넘지않도록하여야한다. 용량정리를하여파티션이 100% 가넘지않으면 sendmail 이자동으로살아나는것을알수있다. 또한시스템의 Load Average 가 8을넘으면서버를통해메일을발송해도메일을통해바로전송되지않고일단서버의메일큐에저장이된후에발송이되게된다. 이역시같은이유때문인데이수치는 sendmail.cf 의 # load average at which we just queue messages O QueueLA=8 에서적절히설정하면된다.

참고로현재시스템의 Load Average 는 w 명령어를이용하여확인가능하다. w 를이용시시스템의 Load Average 는 0.25, 0.40, 0.43 와같이보이는데이는각각현재를기준으로지난 1분, 5분, 15분간의평균시스템부하율을나타낸다. sendmail 애서보내는메일 (SMTP) 기능을차단하고자할때 sendmail 에서 Relay 기능을막아두었다하더라도최근버전에는사용자인증 (SMTP AUTH) 기능이있어서버에계정이있으면모든유저가메일서버를이용해 SMTP 기능을이용하여메일을발송할수있다. 이를막으려면최신의 8.11.4 나 8.11.5 와같이최신버전으로업그레이드후 /etc/mail/smtpauth 파일에보내는메일기능을허용할유저를입력해주면된다. ( 최근에 8.11.6 이전버전에심각한보안문제가확인되었으므로반드시 8.11.6 버전이나 8.12 버전으로업그레이드하여야한다.) 파일을생성후아무런유저도입력하지않으면서버에계정이있다하더라도어느누구도메일을발송할수없게된다. 따라서최신의 8.11.6 버전으로업그레이드할것을권장한다. 이외여러변형된방법이존재하는데, ipchains 나 iptables 를이용해패킷필터링을하는방법도있다. 커널 2.2.X 일경우 ipchains -A output -p tcp -y -d 0/0 25 -j DENY 커널 2.4.X 일경우 iptables -A OUTPUT -p tcp --syn --dport 25 -j DROP 위와같이설정시목적지 (Target) 포트가 25번포트로향하는초기화 (SYN) 패킷만을차단하여메일을발송할수없도록한다. 물론초기화 (SYN) 패킷에대해서만필터링을하였으므로외부에서오는메일을받는것은관계없다. 바이러스메일필터링방법 최근에 Sircam 이나 Nimda 등일정주기마다발생하는바이러스메일때문에서버관리자들은마음고생이이만저만이아니다. Sendmail 에서는이러한바이러스메일이나스팸메일에대해룰셋 (ruleset) 을이용하여차단하는기능이있는데, 이를사용하는방법에대해알아보도록하자. Sendmail 에서는제목이나메일러또는첨부파일의화일명등각종메일헤더정보를이용하여필터링을할수있는데, 먼저발송되는메일제목 (subject) 으로필터링을해보도록하자. 아래는메일제목에 ILOVEYOU 로발송하는멜리사바이러스를차단하는룰셋을적용해

본예이다. 먼저 sendmail.cf 파일을열어제일하단에아래의내용을추가한다. HSubject: $>Check_Subject D{WORMmsg}Access Denied - This message may contain a virus. SCheck_Subject RILOVEYOU RRe: ILOVEYOU RFW: ILOVEYOU $#error $: 501 ${WORMmsg} $#error $: 501 ${WORMmsg} $#error $: 501 ${WORMmsg} # 주의 : $#error 앞의 blank 는스페이스가아니라반드시탭으로띄워주어야한다. Sendmail.cf 의설정내용이다소어렵고복잡하기는한데, 위설정의의미를간단히 살펴보도록하자. H -- 위경우에는헤더에서 Subject: 라는문자열을찾아이헤더를 Check_Subject로정의한다. D -- WORMmsg 라는매크로를정의하여해당룰셋에적용되는제목을확인시발송한유저에게보낼메시지를정의한다. S -- 헤더에서 check_subject로정의한부분을룰셋으로지정하는부분이다. R -- 해당문자열이포함된메일을발견시앞에서정의한에러메세지를첨부하여반송을시킨다. 위와같이룰셋을적용하였을경우 "I LOVE YOU" 와같이공란이있을경우적용되지않으며 "ILOVEYOU from me" 와같이특정단어가추가시에도적용되지않으며반드시정확히일치하여야한다. 추가적으로회신시추가되는 Re: 와전달 ( 포워딩 ) 시추가되는 FW: 가추가된메일도거부한다. 다음으로얼마전유행했던 Sircam 바이러스메일을필터링해보도록하자. Sircam 바이러스의헤더를보면정상적인메일과는달리메일헤더에 Content-Disposition: Multipart message 와같은부분이추가되어있으며이특징을이용하여필터링을하면된다. Sendmail.cf 파일에아래의룰셋을추가하면된다.

HContent-Disposition: $>check_sircam D{SIRCAM}"Warning: I Guess Sircam.worm Virus" Scheck_sircam RMultipart message $#error $: 550 ${SIRCAM} # 주의 : $#error 앞의 blank 는스페이스가아니라탭으로띄워주어야한다. sendmail.cf 의수정을끝낸후바로 sendmail 을재시작하지말고 룰셋이정상적으로작동하고있는지아래와같이테스트를하는것이좋다. # /usr/lib/sendmail bt # 테스트모드로접속 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter > check_sircam Multipart message # Sircam 룰셋테스트 check_sircam input: Multipart message check_sircam returns: $# error $: 550 553 Warning: I Guess Sircam.worm Virus > ctrl-d # 테스트종료 위와같이확인된후 sendmail을재시작 (killall HUP sendmail) 하면바로적용된다. 아래와같이 tail f /var/log/maillog 로로그파일을지켜보면아래와같이실제로 Sircam 바이러스가필터링되고있음을확인할수있다. Sep 27 15:09:51 www sendmail[21386]: f8369of21386: to=<antihong@tt.co.kr>, delay=00:00:01, pri=241584 Warning: I Guess Sircam.worm Virus. 마지막으로최근에가장영향을많이주었던변형된 Nimda Worm 을필터링하는방법에대해알아보자. Nimda Worm 은정상적인메일메시지와달리헤더에 boundary="====_abc1234567890def_====" 나 boundary="====_abc123456j7890def_====" 라는부분이있는데, 이부분으로필터링을할수있다. 즉메일헤더에위와같은설정이되어있으면 Nimda Worm 으로간주하고필터링하면되는것이다. Sircam 에서와같은방법으로 sendmail.cf 파일의설정은아래와같다. HContent-Type: $>check_ct

D{NIMDA}"I guess NIMDA.WORM!!!" Scheck_ct R$+boundary="====_ABC1234567890DEF_====" R$+boundary="====_ABC123456j7890DEF_====" $#error $: 550 ${NIMDA} $#error $: 550 ${NIMDA} 이외메일필터링에대한더욱구체적인방법에대해서는 http://certcc.or.kr/paper/tr2001/tr2001-03/email security by procmail.html 나 http://quanta.khu.ac.kr/~dacapo/sendmail/rulesets/ 를참고하기바란다. 그리고이외관련하여바이러스를스캔하거나필터링할수있는몇몇프로그램이있는데이에대해서는 http://www.rav.ro/, http://www.amavis.org/, http://www.sophos.com/ 등을참고하기바란다. 메일이받아지지않는경우 아웃룩익스프레스에서 배달 을눌러메일을수신하려고할때메일이받아지지않는경우가있다. 이러한경우에는아래와같이여러가지이유가있을수있으니아래의사항에대해하나씩원인을찾아보기바란다. (1) IMAP 패키지가설치되지않았을경우서버에배달되어있는자신의계정으로온메일을클라이언트 PC에서받으려면 pop3 데몬이반응하게된다. pop3d 는 IMAP 패키지안에포함되어있으므로, IMAP 패키지를설치하여야 pop3 를사용할수있다. Rpm 으로설치했다면 rpm q imap 으로현재시스템에 imap 패키지가설치되어있는지확인한다. 또는 /usr/sbin/ipop3d 파일이있는지확인해본다. (2) Inetd 에설정되어있지않을경우 pop3d 는 inetd 또는 Xinetd 에서작동하게된다. /etc/inetd.conf 또는 /etc/xinetd.conf 파일을살펴보아 ipop3 가주석처리되어있거나 pop3 가 disable = yes 로되어있지는않은지확인한다. (3) TCP Wrapper 에설정되었는지여부확인 /etc./hosts.deny 에 pop3d 접근이차단되지는않았는지확인한다. (4) 계정에 Lock 이걸리지않았는지확인메일을받는과정에서갑자기회선이끊기거나 PC가다운되는등비정상적으로종료시서버의 pop3d 프로세스가죽지않고계속남아있는경우가있다. 이러한경우계정에 Lock 이걸렸다 라고하며이러한경우에는해당프로세스를찾아 kill 을하면된다. 만약계정에 Lock 이걸린상태에서아웃룩익스프레스에서메

일을수신하려고하면아래와같은에러가나게된다. 메일서버에로그온하는데문제가있습니다. 지정한암호가거부되었습니다. 계정 : 'temazone.com', 서버 : 'tt.co.kr', 프로토콜 : POP3, 서버응답 : '-ERR Can't get lock. Mailbox in use', 포트 : 110, 보안 (SSL): 아니오, 서버오류 : 0x800CCC90, 오류번호 : 0x800CCC92 (5) Pop3 접속이많은경우 Pop3d 가서비스되는 inetd는기본적으로 60초동안 40회의접속을받아들이도록 ( 즉, maximum 40회 fork되도록 ) 설정되어있다. 따라서짧은시간에 pop3d 요구가많을경우에는메일로그에 pop3/tcp server failing (looping) 라는메시지가나면서 pop3d 데몬자체가다운되어버리므로동시에처리가능한프로세스의한계를적절히높여주어야한다. 이를위해서는 /etc/inetd.conf 를열어아래와같이수정하면된다. 이전설정 ) pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d 변경설정 ) pop-3 stream tcp nowait.200 root /usr/sbin/tcpd ipop3d ( 위의경우처리가능한프로세스를 200회로늘려주었다.) 이후 killall -HUP inetd 를하면된다. (6) 110 번포트로확인아래와같이 pop3d 포트인 110번포트로직접접속하여수작업으로확인가능하다. # telnet pop3.tt.co.kr 110 # 110번으로직접확인 Trying 210.17.6.5... Connected to pop3.tt.co.kr. Escape character is '^]'. +OK POP3 pop3.tt.co.kr v2001.76 server ready user abc # abc 라는계정으로접속 +OK User name accepted, password please pass xyz # abc 의암호 xyz 입력 +OK Mailbox open, 10 messages quit # 접속을끊음. +OK Sayonara

Connection closed by foreign host. 위의경우는정상적인경우이며에러가있을경우 ( 만약암호가다르게설정되었을경우 - ERR Bad login 와같은메시지가나게된다.) 각각의경우에따라에러메시지를각각확인할수있다. (7) mail v 로확인타서버에서 mail v antihong@tt.co.kr 와같이메일을발송하여정상적으로메일이도착하는지를확인해본다. v 옵션을이용하여메일발송시에는메일전송의경로및메일서버간에주고받는메시지를확인할수있으므로문제의원인을찾는데도움이된다. 특정한곳으로만메일이돌아올때 다른곳은문제가없는데, 해외등특정한곳으로만메일이전송되지않고리턴되는경우가있다. 이러한경우라면자신의메일서버가 mail-abuse.org 의블랙리스트에등록되어있지는않은지확인해볼필요가있다. 특히회신된메일에...refused by blackhole site relays.mail-abuse.org 와같은메시지가보인다면반드시여부를확인해보아야한다. 적지않은메일서버에서는메일수신시실시간으로이데이터를참조하므로 mail-abuse.org 에서스팸메일서버로등록되면이기관에등록된도메인으로메일을보낼때받는쪽에서는스팸메일로간주하고수신을거부하게된다. 이를확인하는방법은 http://mailabuse.org/cgi-bin/nph-rss 사이트에서메일서버의 IP 를조회해보면된다. 아래는위사이트에서한 IP 에대해조회해본결과블랙리스트에등록되어있는것을보여주고있다. 이러한경우라면조회한메일서버의 Relay 가허용되어스팸메일서버로사용된적이있거나현재사용되고있다는뜻이다. 만약스팸메일서버로등록되어있지않다면 211.47.65.xxx is NOT currently on the RSS list 와같이보이게된다.

자신의메일서버를이블랙리스트에서제외하려면먼저자신의메일서버에 Relay 가허용되어있는지확인후메일서버에서 Relay 를거부설정한후 If you'd like 211.47.65.135 to be removed from our list, please click here. 를따라클릭하여신청을하면된다. 이링크를클릭하면신청폼이나오는데, 이곳에입력하여신청을하면바로처리가된다. Relay 거부설정을한후신청을해야처리가되므로반드시사전에 Relay 거부설정을확인하기바란다. 메일서버의 Relay 여부를조회하는방법에대해서는본지 10 월호 철벽보안을위한모니터링올가이드 를참고하기바란다. 복수 MX 설정시주의해야할점 DNS 서버에서설정하는 MX 레코드는해당호스트로수신되는편지를다른호스트로라우팅하도록한다. 특히웹서버와메일서버를분리하고자할경우사용되는데, 원격호스트에서아래와같이설정된도메인 tt.co.kr 로편지를송신할경우에 Sendmail이어떻게동작하는지알아보자. tt.co.kr. IN MX 10 mail1.tt.co.kr.

IN MX 20 mail2.tt.co.kr. IN MX 20 mail3.tt.co.kr. 다음은메일이수신되는차례를보여준다. (1) Preference 값이 10으로가장낮은 mail1 로먼저배달을시도한다. (2) 만약 mail1.tt.co.kr 이접근이불가능하면 mail2 혹은 mail3 으로배달을시도한다. (3) (2) 에서시도한메일서버로도접근이되지않으면 (2) 에서접근되지않은호스트로배달을시도한다. 즉 mail2 로전송을시도했다면 mail3 으로배달을시도한다. (4) mail2 와 mail3 서버에접근이불가능하다면자체큐잉후, 일정기간동안주기적으로 1-3의과정을반복한다. 흔히 MX 레코드에대해잘못생각하는것중하나는만약 mail1 이다운되어 mail2 로편지가배달되었을때, 편지가 mail2 의메일박스에저장된다고생각하는것이다. 만약이렇게된다면유저입장에서는메일수신시 pop3 서버를 mail1.tt.co.kr 와 mail2.tt.co.kr 과같이여러개설정해야하는것처럼보인다. 그러나일반적으로 mail2.tt.co.kr 이나 mail3.tt.co.kr 처럼 Preference 가높은 ( 즉우선도가낮은 ) 값을갖는메일서버는큐잉서버로동작하도록설정하기때문에, 결국메일은하나의호스트 (mail1) 로모이게되는것이다. 위와같이 mail2와 mail3 서버가큐잉메일서버로작동하려면 mail1 와 mail2의 sendmail 이아래와같이설정되어야한다. (1) 해당도메인 (tt.co.kr) 에대한인증을갖지않아야한다. ( 즉, mail2 나 mail3 메일서버의 sendmail.cw 또는 local-host-names 파일에 tt.co.kr 이설정되어있으면안된다.) (2 ) 서버는해당호스트로의메일릴레이 (Relay) 를허용하여야한다. ( 즉, /etc/mail/access 에서아래와같이정의되어야한다.) mail1.tt.co.kr relay 인증을갖지않아야한다는것은 Sendmail의 w 클래스 (sendmail.cw(local-host-names) 혹은 sendmail.cf의 Cw) 에 tt.co.kr 도메인이설정되지않아야하는것을의미하고, 메일릴레이란수신되는편지의최종배달지가자신이아닐경우, 즉인증을갖지않을경우편지를해당호스트로포워딩하는것을의미한다. 최근의배포판에서는기본적으로 sendmail 이릴레이를거부하도록설정되어있으므로메일큐잉서버의경우는해당호스트를목적지로하는메일에대해서는릴레이를허용하도록설정하여야한다는것을주의하기바란다. mail1 의다운으로인해 mail2 로전달되는메일은메일큐에저장되어있으면서, 일정기간

(Sendmail.cf 에서지정된 Timeout.queuereturn=5d 만큼 ) 동안주기적 (Sendmail 구동시지 정된, 일반적으로 30 분 -q30m) 으로 mail1 로배달이재시도된다. 메일서버의버전을숨기는법 다른데몬도마찬가지이지만메일서버역시해당포트로원격접속을해보면메일서버의버전정보등을확인할수있다. 그러나시스템관리자입장에서보안상의문제로현재운영중인메일서버의버전등을숨기거나속이고싶을때가있는데. 이러한경우에는아래의방법을이용하면된다. (1) sendmail 의경우 sendmail.cf 파일을보면아래와같은설정이있다. # SMTP initial login message (old $e macro) O SmtpGreetingMessage=$j Sendmail $v/$z; $b 이부분을적절히삭제하거나다른정보로입력후 sendmail 을재가동하면된다. 필자가운영하는메일서버의경우 O SmtpGreetingMessage=$j Today and Tomorrow(http://tt.co.kr/) 와같이설정하였고이때 25번포트로접속시보이는정보는아래와같다. # telnet tt.co.kr 25 Trying 211.47.66.50... Connected to tt.co.kr. Escape character is '^]'. 220 www10.tt.co.kr ESMTP Today and Tomorrow(http://tt.co.kr/) (2) pop3d 의경우 pop3d 의경우소스에서직접수정하여야하는데, 압축해제한디렉토리의 /src/ipopd 에보면 ipop3d.c 파일이있다. 이파일을살펴보면 char *version = "2001.75"; /* server version */ 라는부분이있는데, 필자가운영하는 pop3d 의경우소스에서 char *version = "xxxxxxxxxx"; /* server version */ 와같이수정후컴파일하였고이때 110번포트로원격접속시보이는정보는아래와같다. # telnet tt.co.kr 110

Trying 211.47.66.50... Connected to tt.co.kr. Escape character is '^]'. +OK POP3 www10.tt.co.kr vxxxxxxxxxx server ready 버전외다른각종정보도수정할수있으니각자상황에맞게적절히설정하기바란다. sendmail 과관련된몇가지명령어 >> mail1q mailq 프로그램의목적은큐잉된 (/var/spool/mqueue 에저장된 ) mail 메시지의요약된정보를보여준다. 네트워크다운등어떤특정한이유로바로발송되지못한메일은일차적으로 /var/spool/mqueue 에큐잉된상태로저장된후일정시간마다발송을위해재시도가되는데, 현재큐잉된메일메시지의요약정보를보려면아래와같이확인할수있다. # mailq /var/spool/mqueue/q1 (2 requests) ----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------ f7a84ov15068 1446 Fri Aug 10 17:04 nobody (Deferred: Connection timed out with kebi.net.) darling@kebi.net f775ief24893 521898 Tue Aug 7 14:44 <shlee@tt.co.kr> (Deferred: Connection timed out with mail.unitel.net.) <cf1318@unitel.net> /var/spool/mqueue/q2 is empty /var/spool/mqueue/q3 (1 request) ----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------ f775njf25249 230815 Tue Aug 7 14:49 <shlee@tt.co.kr> (Deferred: Connection timed out with hanmail.com) cuwww23@hanmail.com 위메시지를보면어떠한이유로메일이발송되지못하고있는지를추측할수있다. 3 메시지모두수신자의 e-mail 주소를잘못기입했기때문인데, 각각 kebi.com 인데, kebi.net 으로 unitel.co.kr 인데, unitel.net 으로, hanmail.net 인데, hanmail.com 으로

도메인주소를잘못기입하여메일을발송하여서버에서메일을발송하지못하고큐에저장되어있는것을확인할수있다. 여기에서주의할점은 mailq 명령어는일반유저로실행하여확인이가능하므로퍼미션을 700 등으로조절하여일반유저들은실행할수없도록하는것이좋다. >> mailstats mailstats 프로그램은현재의메일송수신과관련하여통계를보여준다. * 현재의메일통게를보려면아래와같이확인할수있다. # mailstats Statistics from Sat Aug 11 04:02:02 2001 M msgsfr bytes_from msgsto bytes_to msgsrej msgsdis Mailer 1 0 0K 3 317K 0 0 *file* 4 690 596691K 824 137070K 68426 0 esmtp 9 63 12212K 0 0K 27 0 local ============================================================= T 753 608903K 827 137387K 68453 0 C 753 827 68453 이를적절히이용하면 mrtg 를이용해일정시간마다발송되고수신되는메일의개수를통계로내어그래프로볼수있다.( 본지 10월호, 철벽보안을위한모니터링올가이드참조 ) 최근 sendmail 관련버그에대해 한동안문제가없었던 sendmail 에최근들어몇가지보안문제가발견되었다. 이버그는매우치명적인문제인데, 아직이를모르고그대로사용중인유저들이많은것같다. 각자의메일서버에는해당사항이없는지꼭확인해보기바란다. 첫번째로, 8월말에발표된버그는현재대부분의메일서버프로그램으로사용중인 sendmail 8.11.6 이전버전에해당하는보안버그로서일반유저가 Local 에서 root 권한을얻을수있는매우치명적인버그인데, 이미공격소스가여러사이트에공개되어있다. 참고로이버그는 8.11.0부터 8.11.5 버전까지만해당하므로 8.10.x 나 8.9.x 는해당되지않는다. 따라서아래의사이트를참고로 sendmail 을 8.11.6 이나 8.12등최신버전으로업그레이드하기바란다.

8.11.0부터 8.11.5 의경우 8.11.6 으로업그레이드하면되고 8.12.0.Beta 의경우 8.12.0.Beta19 이상으로업그레이드하면된다. 이에대해서는 http://www.securityfocus.com/bid/3163 나 http://www.sendmail.org/8.11.html 를참고하기바란다. 두번째는, 10월초에발견된버그로서모든버전에해당하는문제인데, 이전에도자주나왔던문제이다. 바로 shell 접근이가능한일반유저가 sendmail 에 -q 옵션을사용하여큐에있는메시지를드롭할수있는문제이다. 아래의설명을보기바란다. [user@net user]$ id uid=778(user) gid=778(user) [user@net user]$ mailq Mail Queue (1 request) --Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient---------- -- NAA05248 11 Tue Oct 2 13:03 user1 (Deferred: Connection refused by tt.co.kr.) test@tt.co.kr [system@net system]$ /usr/sbin/sendmail -q -h10000 Too many hops 10000 (25 max): from system via localhost, to test@tt.co.kr Too many hops 10000 (25 max): from MAILER-DAEMON via localhost, to postmaster Too many hops 10000 (25 max): from MAILER-DAEMON via localhost, to postmaster MAILER-DAEMON... Saved message in /usr/tmp/dead.letter [user@net user]$ mailq Mail queue is empty 위와같이 hop count 를크게설정함으로써일반유저가현재큐의내용을강제적으로 drop 시킬수있다. 세번째는역시모든버전에해당하는문제로일반유저가 sendmail -q -d0-xxxx.xxx 와같이사용시 (xxx는디버깅레벨이다.) 일반유저가메일서버의각종설정뿐만아니라큐에저장되어있는내용, 메시지경로나제목, 메일소프트웨어등의정보를볼수있는문제이다.

두번째, 세번째문제는 sendmail.cf 에서 O PrivacyOptions=authwarnings,novrfy,noexpn,restrictqrun 와같이 restrictqrun 를추가함으로써해결가능하다. 기타메일과관련된장애가확인시 지난달아파치웹서버의장애에대해이야기하면서문제나장애가발생시에는웹서버의 error_log 메시지를살펴보도록이야기했었다. 메일서버도마찬가지이다. 메일서버장애시는문제의원인을찾기위해로그파일을살펴보는습관을들이는것이좋다. 메일관련로그는 /var/log/messages 나 /var/log/maillog 파일을살펴보면되며로그파일을보면여기에서언급하지않은문제가발생했다하더리도어렵지않게원인을찾을수있을것이다. 다시한번강조하지만모든문제의원인과해결책은로그에있다는것을명심하기바란다.