CentOS 에서메일서버 ( 센드메일 ) 구축하기 제출일 2016.05.17 전공사이버경찰학과 과목사이버수사학학번 10121372 담당교수안미정교수님이름한믿음 이문서는나눔글꼴로작성되었습니다. 설치하기
메일서버 1. 메일서버란? 메일서버란 MTA(Mail Transfer Agent) 라고도불리며, 수신되는전자우편을받아주고송신되는전자우편을배달하기위해전달해주는역할을하는일종의응용프로그램을말한다. 또는이러한프로그램만을전담하여운영하는컴퓨터하드웨어역시메일서버라는같은이름을사용한다. 메일서버는메시징시스템이라불리는또다른프로그램들과함께사용된다. 메시징시스템이란, 이메일시스템이지속적으로운영되는데필요한모든응용프로그램을포함한다. 사용자가이메일메시지를보낼때, 아웃룩과같은전자우편프로그램이메시지를메일서버로전달하면메시지를저장영역에임시로보관한다. 이러한시스템들은이메일의송신을위해 SMTP(Simple Mail Transfer Protocol), ESMTP(Extended STMP) 등을, 수신하기위해서는 POP3(Post Office Protocol 3) 나 IMAP(Internet Message Access Protocol) 등과같은프로토콜을사용한다. 2. 메일서버의종류 1. 센드메일 (Sendmail) 센드메일은현재사용되고있는메일서버가운데가장강력하고많이사용되고있는프로그램으로, 일반적으로센드메일프로그램의환경설정은조금까다롭지만성능과기능에대해관리측면에서메일서버의대명사로불린다. 2. Qmail Qmail은센드메일보다기능적인장점이많고센드메일에비해환경설정이비교적간단하고다른운영체제에대한이식성이강하며보안적측면, 안정성등을가지고있다, 또센드메일보다시스템자원소모가크지않다. 3. MS Exchange Server Microsoft에서개발한메일서버프로그램으로윈도우즈서버에서만사용가능하고수백만원대의유료라는단점 (?) 이있다. 센드메일 1. 센드메일설치센드메일은대부분의설정을편리하게사용할수있도록배포되고있으므로설치나환경설정에서비교적으로간단하게진행할수있다. rpm명령을이용하여시스템에설치된센드메일패키지를확인할수있다. # rpm qa grep sendmail 2
CentOS 를설치하는과정에서기본적으로 sendmail 패키지를설치하지않았 다면 yum 명령어를이용하여패키지를설치한다. # yum y install sendmail 설치를완료하고 rpm 명령을이용하면센드메일패키지를확인할수있다. 2. 센드메일설정 sendmail을사용하기위해기본적으로알아햐할설정파일 1. /etc/sendmail.cf sendmail 설정에서가장중요하고어려운부분으로, 이파일은센드메일을설치할때 /etc 또는 /etc/mail 디렉토리에자동으로설치된다. # vi /etc/mail/sendmail.cf 센드메일설정파일엄청길다 (1842 행 ) 3
1 메일수신위치설정 Fw/etc/mail/local-host-names 메일을수신할호스트이름을명시한파일의위치를설정한다. 2 Relay 허용설정 FR-o /etc/mail/relay-domains relay-domains 파일에는 Relay 를허용할호스트의이름을설정한다. Relay 란? 메일을주고받으면메일서버의 /var/mail 디렉토리에저장되는데아무주소나 ex)##$%^&@mail.com 이렇게보내면쓸모없이메일로꽉차버리기때문에메일을송 / 수신하는컴퓨터를제한하는기능이다. 3 메일최대크기설정 # 0 MaxMessageSize= 0 기본적으로는주석설정 (#) 이되어메일최대크기의제한이없도록설정되어 있지만예를들어주석을제거하고값을 1000000 으로설정하면 1MB 로메일용량을 제한할수있다. 4 큐디렉토리설정 O QueueDirectory=/var/spool/mqueue 4
큐디렉토리를설정하는곳이다. 큐디렉토리는메일을보내려는호스트에문제가생겼을때메일내용을저장 하는공간이다. 5 메일재발송기간설정 O Timeout.queuereturn=5d 센드메일서버는큐디렉토리에쌓인메일을상대방호스트에보내주기위해 주기적으로접속을시도하는데이주기적인기간을설정하는영역이다. 기본설정으로는 5d (5 일 ) 로설정되어있다. 2. /etc/mail/access access 파일은스팸방지를위해 Relay를허용할호스트나 IP, 도메인을설정하는파일이다. 기본적으로로컬호스트, 도메인, 루프백주소가허용으로설정되어있고, 예를들어 hanmiteum@ysu.ac.kr RELAY fakeysu.ac.kr REJECT ysu.com OK 123.123.123.123 RELAY 이렇게입력했다면 hanmiteum@ysu.ac.kr 로부터수신된메일, ysu.com 도메인에서송신된메일, 123.123.123.123 IP에서송신된메일은 RELAY를허용하고, fakeysu.ac.kr에서송신된메일은모두 REJECT( 거절 ) 처리된다. 5
3. /etc/mail/local-host-names # vi /etc/mail/local-host-names 이파일은수신할호스트의이름을입력하는파일이다. 기본적으로는비워져있고예를들어도메인을가지고있다면이파일을수정 하면기록된도메인으로메일이들어오면메일박스에저장하게된다. 메일서버구현실습 1. 도메인관리하는네임서버구현하기 우선 vi 에디터로 /etc/hostname 파일의 localhost.localdomain 을변경한다. /etc/hosts 파일을설정한다. 실습에서모든 DNS 네임서버를 192.168.111.100 으로사용 (vm 웨어전체를외부인터넷환경이라가정 ) /etc/mail/local-host-names 파일의맨아래 mail.ysu.com 을추가 ( 위에서설명한메일수신위치관련 ) /etc/sysconfig/network 파일도마찬가지로호스트네임도메인을설정한다. 6
호스트네임을설정하고재부팅후 hostname 명령어를입력하면호스트이름 이변경된것을확인할수있다. yum 명령어를이용하여네임서버패키지를설치한다. # yum y install bind bind-chroot vi에디터로 /etc/named.conf 파일을수정한다. ( 네임서버패키지설정파일 ) listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; allow-query { localhost; }; + 맨아래추가 zone ysu.com IN { type master; file ysu.com.db ; allow-update {none;}; 4. 본문중제목 ( 본문중제목 ) }; listen-on port 53 { any; }; listen-on-v6 port 53 { none; }; allow-query { any; }; 설명 : 53 번포트로들어오는모든주소 listen, IPv6 사용안함, 모든쿼리 7
이후 /var/named/ 디렉토리에 touch 명령어를이용하여 ysu.com.db 라는 빈파일을생성한다. # touch ysu.com.db; 여기서 ysu.com.db 파일은서버의 ip 주소와메일을처리하는컴퓨터 (mail.ysu.com) 을지정해주는파일이다. vi 에디터를이용하여생성한 ysu.com.db 파일을수정한다. named-check 를이용하여파일체크한다.( 설정파일체크부분 ) 8
네임서비스를재시작하고상시가동으로설정 # systemctl restart named // 네임서버재시작 # systemctl enable named // 네임서버상시가동 # systemctl status named // 네임서버상태확인 수있다. 위와같이 Active (running) 으로서비스가정상적으로가동중인것을확인할 이후 NDS 포트를방화벽에서열어야하지만편의를위해방화벽을꺼준다. # systemctl stop firewalld // 방화벽실행중지 # systemctl disable firewalld // 방화벽사용안함 nslookup 명령어를이용하여네임서버가제대로설정되었는지확인한다. 이로서도메인네임서버의설정이완료되었다. 9
이제 mail.ysu.com 메일서버의 DNS 서버를구축한네임서버 (192.168.111.100) 로설정한다. # vi /etc/resolv.conf 2. 클라이언트의네임서버변경 윈도우클라이언트상에서네임서버를 192.168.111.100 으로변경한다. 확인한다. 이후 nslookup 명령어를이용하여메일서버의 dns 주소가정확하게나오는지 10
3. 메일서버구현메일서버를구현하는필수패키지는 sendmail, sendmail-cf, devecot 3가지이다. yum 명령어를사용하여 3가지모두설치한다. # yum y install sendmail sendmail-cf dovecot 센드메일설정파일을수정한다.( 경로는센드메일설정파트에서확인 ) Cwlocalhost -> Cwysu.com (Cw와도메인과붙여서 ) 0 DaemonPortOptions=port=smtp,Addr=127.0.0.1,Name=MTA -> (Addr=127.0.0.1, 부분삭제 ) 센드메일설정을수정한후 외부네트워크또는호스트가메일을보낼수있도록허가한다. /etc/mail/access 파일에다음내용을추가한다. /etc/mail/access 파일을수정한후에 makemap 명령어를이용해입력을적용 # makemap hash /etc/mail/access < /etc/mail/access 11
사용자에게메일박스의내용을보여주는 dovecot 서비스 설정파일은 /etc/dovecot/dovecot.conf 기본설정을수정한다. protocols = imap pop3 lmtp listen = *, :: base_dir = /var/run/dovecot/ 이 3 행의주석을제거해준다. 설정파일수정내용프로토콜은위 3가지를사용, * 모양은 IPv4를 :: 모양은 IPv6를의미, 둘다사용한다는뜻, 런타임정보를보관할베이스디렉토리경로 /etc/dovecot/conf.d/10-ssl.conf 를수정한다. 8 행쯤의 ssl = required => ssl = yes Secure Sockets Layer 보안소켓사용여부 /etc/dovecot/conf.d/10-mail.conf 도아래부분을수정한다. mail_location = mbox:~/mail:inbox=/var/mail/%u mail_access_groups = mail lock_method = fcntl 위 3 행의주석을제거하고옵션을수정해준다. 12
covecot 의옵션을수정하였다면 ysu.com 의메일계정사용자를생성한다. ID=hanmiteum pw=10121372 사용자를생성하였다면다음명령어를입력해센드메일과 dovecot 서비스를 시작하고상시가동한다. # systemctl restart sendmail # systemctl enable sendmail # systemctl restart dovecot # systemctl enable dovecot ysu.com 메일서버를완성하였다. 외부클라이언트에서메일전송해보기 윈도우클라이언트에서모질라썬더버드를다운로드하여 기존메일사용하기를선택한다. 13
설정한 ID@ 설정한 DNS 도메인과비밀번호를입력하면... 다행히서버를찾았다고한다!, 아후사용할프로토콜을선택한다. 암호화를사용하지않았다고주의를주지만위험성에체크하고완료를클릭 2
메일로그 /var/log/maillog 메일관련로그를확인할수있다. 3