카테고리 없음2013. 6. 20. 10:31

 

10-2. 메일 서버 설치 및 운영

      - 센드메일 서버 구축

 

 

메일 서버 프로그램 중에서 페도라에서 기본적으로 제공되는 '센드메일(Sendmail)' 서버를

구축해 보도록 하겠다.

 

앞 절에서 개념을 잘 파악했으리라 믿고, 이번에는 메일 서버를 직접 구현해 보도록 한다.

이번 실습에서는 메일 서버를 1대 구현해서는 별로 실습의 효과가 나지 않을 것이므로,

메일 서버 2대를 설치해 보자.

 

메일 서버를 제대로 실습하기 위해서는 인터넷 상에서 2개의 다른 도메인의 메일 서버를 운영해야만

메일이 잘 전송되는지 확인이 가능하다.

그래서 네트워크 환경이 다른 서버에 비해서 좀 복잡할 수도 있지만 VMware를 활용하여

인터넷 상에 2개의 도메인을 가지고 있는 것과 동일한 효과를 내보도록 하자.

 

이번 실습은 VMware 내부를 사설 네트워크가 아닌 그냥 외부의 인터넷의 일부라고 생각하자.

그러면 인터넷 상에서 2개의 메일 서버를 구축하고 운영하는 것과 완전히 동일한 환경이

되는 것이다.

 

아래의 그림을 보면 알겠지만 이번 실습을 제대로 구현하기 위해서는

메일 서버 2대, 메일 클라이언트 PC 2대, 네임 서버 1대로 총 5대의 컴퓨터가 필요하다.

 

 

[구현할 인터넷 구성도]

 

※ 위의 그림처럼 도메인 이름으로 'daum.net'과 'naver.com'을 사용해도 문제가 없는 것은

우리가 지금 사설 네트워크 안을 인터넷이라고 가정하기 때문이다.

즉, 우리가 사용하는 4대의 컴퓨터(가상머신 3대, 호스트 1대)끼리는 이러한 이름을 사용해도 된다.

당연히 외부 컴퓨터에서는 VMware 내부로 접속할 수 없기 때문에 우리가 구축한 메일 서버를 사용할 수 없다.

 

먼저 위의 그림과 함께 다음 설명을 잘 이해해야 이번 실습을 진행할 수 있다.

 

- VMware 내부의 사설 네트워크를 내부 네트워크라고 생각하지 않고,

   그냥 외부의 인터넷이라고 간주한다.

 

- 메일 서버를 2대 구현한다. Fedora Server를 naver.com 메일 서버로 구현하고,

   Fedora Server(B)는 daum.net의 메일 서버로 구현한다.

 

- Fedora Client는 daum.net 메일 서버의 kim이라는 계정의 사용자 PC이다.

   즉, kim@daum.net이라는 계정이 사용할 PC이다.

 

- Windows Client(=호스트OS)는 naver.com 메일 서버의 lee라는 계정의 사용자 PC이다.

   즉, lee@naver.com이라는 계정이 사용할 PC이다.

 

- 먼저 네임 서버를 구현한다. 위의 그림에는 별도의 컴퓨터로 나타나 있지만, Fedora Server가

   네임 서버의 역할도 하도록 설정하겠다.

   즉, Fedora Server는 naver.com 메일 서버 겸 네임 서버의 역할을 하는 것이다.

   이 네임 서버는 naver.com 및 daum.net의 두 개의 도메인을 관리하는 역할을 할 것이다.

 

- 모든 컴퓨터는 'DNS 서버' (=네임 서버)를 192.168.xxx.111로 사용하도록 한다.

 

 

위의 그림을 계속 보면서 실습을 진행해야 이해가 쉽게 될 것이다.

 

 

 

[실습]

메일 서버 환경을 구축하기 위해서 우선 naver.com 및 daum.net의 도메인을 관리하는 네임 서버를 구축하자.

 

 

 

 

0. [ Fedora Server ]

 

9장 실습에서 설정한 스냅샷인 '네임 서버 설치' 스냅샷으로 되돌려 놓고 부팅한다.

(만약 이 스냅샷이 없다면 9장 실습을 지금 수행한다)

 

0-1 root 사용자로 접속한다.

 

 

 

1. [ Fedora Server-메일 서버 ]

 

호스트이름을 mail.naver.com이라고 설정해 주도록 하자.

※ 이번 실습에서는 Fedora Server가 역할을 2가지 하므로, 역할을 분명하게 구분하기 위해서

Fedora Server가 '네임 서버'로써 역할을 할 때는 Fedora Server-네임 서버,

'메일 서버' 역할을 할 때는 Fedora Server-메일 서버라고 표기하도록 하겠다.

나머지는 Fedora Server(B), Fedora Client, Windows Client는 각각 한 가지 역할만 하므로 기존과 같다.

 

 

1-1 vi나 gedit로 '/etc/hosts' 파일에 "192.168.xxx.111   mail.naver.com"을 추가한다.

 

 

[/etc/hosts 파일 편집]

 

 

1-2 vi나 gedit로 '/etc/mail/local-host-names' 파일에 "mail.naver.com"을 추가한다.

 

 

[/etc/mail/local-host-names 파일 편집]

 

 

1-3 vi나 gedit로 '/etc/sysconfig/network' 파일을 "HOSTNAME=mail.naver.com"으로 수정한다.

 

 

[호스트 이름 변경]

 

 

1-4 설정된 내용이 적용되도록 "reboot" 명령으로 재부팅한다.

 

 

1-5 재부팅되면 X 윈도우의 로그인 화면의 위쪽 아래에 'mail.naver.com'이라고

호스트 이름이 표시되는 것을 확인할 수 있다.

root 사용자로 로그인한다. 

 

 

[호스트 이름이 표시됨]

 

 

 

2. [ Fedora Server(B) ]

 

그림 [구현할 인터넷 구성도]에 나타난 대로,

Fedora Server(B)의 호스트 이름은 mail.daum.net이라고 설정해 주자.

 

 

2-0 Fedora Server(B)를 선택하고, 스냅샷을 통해 초기화 한다.

부팅한 후 root 사용자로 접속한다.

 

 

2-1 먼저, sendmail과 관련된 기본적인 패키지가 설치되었는지 확인하고,

설치가 안 되어 있다면 설치하자.

 

rpm -qa | grep sendmail

yum -y install sendmail

 


[sendmail 패키지 설치]

 

 

2-2 vi 에디터로 '/etc/hosts' 파일에 "192.168.xxx.112   mail.daum.net"을 추가한다.

 

 

[/etc/hosts 파일 편집]

 

 

2-3 vi 에디터로 '/etc/mail/local-host-names' 파일에 "mail.daum.net"을 추가한다.

 

 

[/etc/mail/local-host-names 파일 편집]

 

 

2-4 vi 에디터로 '/etc/sysconfig/network' 파일을 "HOSTNAME=mail.daum.net"으로 변경한다.

 

 

[호스트 이름 변경]

 

 

2-5 "reboot" 명령으로 재부팅하고, 다시 root 사용자로 로그인한다.

 

 

2-6 "hostname" 명령으로 확인하면 호스트 이름이 변경된 것을 확인할 수 있다.

 

 

[호스트 이름 확인]

 

 

 

3. [ Fedora-Server-네임 서버 ]

 

naver.com 도메인과 daum.net 도메인의 네임 서버를 설정한다.

 

 

3-1 vi나 gedit로 /etc/named.conf 파일을 열어서 제일 아래에 다음 내용을 추가한다.

 

zone   "naver.com" IN {

type master;

          file "naver.com.db";

};                              

 

zone "daum.net" IN {  

type master;

           file "daum.net.db";  

};                               

 

 

[/etc/named.conf 편집] 

 

 

3-2 /var/named/chroot/var/named/ 디렉토리로 이동해서 "touch" 명령으로

'naver.com.db' 파일과 'daum.net.db' 빈 파일을 생성한다.

 

 

[naver.com.db 파일과 daum.net.db 생성]

 

 

3-3 vi나 gedit로 /var/named/chroot/var/named/naver.com.db 파일을 다음과 같이 입력한다.

 

$TTL          3H                                                                                   

  @      SOA     @     root.     ( 2   1D   1H   1W   1H )                                  

           IN     NS     @                                                                              

            IN     A       192.168.xxx.111                                                            

        IN     MX     10   mail.naver.com.   -> email을 처리하는 컴퓨터 지정   

 

mail     IN   A   192.168.xxx.111                                                            

 

[naver.com.db 파일]

※ IP주소가 입력되는 부분의 뒤에는 "."이 들어가지 않고,

URL 형식의 주소 뒤에는 "."을 찍어 줘야 한다.

 

 

3-4 /var/named/chroot/var/named/daum.net.db 파일을 다음과 같이 수정한다.

 

 

          $TTL           3H                                                                                     

       @    SOA      @       root.    ( 2   1D   1H   1W   1H )                               

                IN        NS       @                                                                        

                   IN        A        192.168.xxx.112                                                         

                 IN        MX     1  mail.daum.net.   -> email을 처리하는 컴퓨터 지정     

 

mail   IN   A   192.168.xxx.112                                                          

 

 

[daum.net.db 파일] 

 

 

3-5 설정한 파일에 이상이 없는지 체크한다.

 

named-checkconf /etc/named.conf

named-checkzone  naver.com  /var/named/chroot/var/named/naver.com.db

named-checkzone  daum.net  /var/named/chroot/var/named/daum.net.db

 

 

[설정 파일 체크]

 

 

3-6 "service named restart" 명령으로 네임 서비스를 재시작한다.

 

 

3-7 "system-config-firewall" 명령에서 '신뢰하는 서비스'에 DNS가 체크되어 있는지 확인한다.

 

 

3-8 "nslookup" 명령으로 네임 서버가 잘 설정되었는지 확인해 본다.

 

 

[네임 서버 설정 확인]

 

이렇게 해서 naver.com 및 daum.net 도메인을 관리하기 위한 네임 서버의 설정을 완료하였다.

 

 

 

4. [ Fedora Server-메일 서버 ]

 

그림 [구현할 인터넷 구성도]에 나타난 대로 mail.naver.com 메일 서버의 DNS 서버를

우리가 구축한 네임 서버(192.168.xxx.111)로 설정한다.

 

 

4-1 vi나 gedit로 "/etc/resolv.conf" 파일을 수정한다.

 

[DNS 서버 설정]

※ Fedora Server는 메일 서버와 네임 서버의 역할을 동시에 한다고 햇다.

그래서, 192.168.xxx.111은 메일 서버의 IP주소 겸 네임 서버의 IP주소인 것이다.

혼동하지 말도록 하자.

 

 

 

5. [ Fedora Client ]

 

'Fedora Server-메일 서버'와 동일하게 네임 서버를 192.168.xxx.111로 설정하도록 한다.

 

 

5-0 Fedora Client를 선택하고 스냅샷으로 초기화시킨다.

부팅하고 master 사용자로 로그인한다.

 

 

5-1 "su -c "vi /etc/resolv.conf' " 명령으로 네임 서버를 192.168.xxx.111로 설정하고 저장한다.

 

 

[Fedora Client의 DNS 서버 설정]

 

 

5-2 "nslookup" 명령으로 mail.naver.com과 mail.daum.net의 IP주소가

각각 192.168.xxx.111과 192.168.xxx.112가 나오는지 확인한다.

 

 

 [네임 서버 설정 확인]

 



 

 

6. [ Fedora Server(B) ]

 

네임 서버를 192.168.xxx.111로 설정하도록 한다.

 

 

6-1 vi로 /etc/resolv.conf를 열어서 네임 서버를 192.168.xxx.111로 수정한다.

 

 

[DNS 서버 설정]

 

 

6-2 수정 후에 "nslookup" 명령으로 mail.naver.com(192.168.xxx.111)과

mail.daum.net(192.168.xxx.111)의 IP주소가 정확히 나오는지 확인한다.

※ Fedora Server(B)는 기본 설치만 했기 때문에 nslookup 명령이 없을 것이다.

먼저, "yum -y install bind-utils" 명령으로 관련 패키지를 설치한 후에 실행하면 된다.

 

 

[Fedora Server(B)의 DNS 서버 설정 확인]

 

 

 

 

7. [ Windows Client(=호스트OS) ]

 

그림 [구현할 인터넷 구성도]에 나타난 대로 마찬가지로 네임 서버를 192.168.xxx.111로 변경한다.

 

 

7-1 네트워크의 '로컬 영역 연결'의 속성 중에 TCP/IP 정보에서

'기본 설정 DNS 서버'를 192.168.xxx.111로 수정한다.

(먼저, 기존에 DNS 서버 주소가 있다면 잘 적어 두도록 한다)

그리고 '보조 DNS 서버'를 공인된 네임 서버(예로 168.126.63.1)로 지정한다.

 

[Windows Client의 DNS 서버 설정 변경(Windows 7의 예)]

 

 

7-2 명령 프롬프트에서 "nslookup"을 입력하고, mail.naver.com(192.168.xxx.111)과

mail.daum.net(192.168.xxx.112)의 IP주소가 정확히 나오는지 확인한다.

 

 

[Windows Client에서 nslookup 명령]

 

 

이렇게 해서 그림 [구현할 인터넷 구성도]와 동일하게 구성을 완료하였다.

이제는 mail.naver.com과 mail.daum.net에 Sendmail 서버를 설정하고 가동해 보도록 하자.

 

 

 

 

Posted by 아이맥스
카테고리 없음2013. 6. 20. 10:29

 

10-3. 메일 서버 설치 및 운영

      - 센드메일 설정 및 가동

 

 

 [실습]

 naver.com 메일 서버와 daum.net 메일 서버를 구축하자.

 

 

0.

 

앞 10-1장의 실습에 이어서 해야 한다.

 

 

 

1. [ Fedora Server-메일 서버 ]

 

naver.com 메일 서버를 구축한다.

 

 

1-1 메일 서버를 구현하기 위한 필수 패키지는 sendmail, sendmail-cf, dovecot 세 가지이다.

기본적으로 sendmail은 설치가 되어 있었으므로, sendmail-cf와 dovecot만 설치하면 된다.

간편하게 "yum -y install sendmail-cf dovecot" 명령으로 한꺼번에 설치한다.

 

[sendmail-cf와 dovecot의 패키지 설치]

 

 

1-2 /etc/mail/sendmail.cf 파일을 다음과 같이 수정한다.

 

85행쯤 : Cwlocalhost         -> Cwnaver.com   (붙여서 쓸 것)               

261행쯤 : O DaemonPortOptions=Port=smtp, Addr=127.0.0.1, Name=MTA

                            -> O DaemonPortOptions=Port=smtp,

                                       Name=MTA (",Addr=127.0.0.1"부분 삭제)

 


[85행 수정]





[261행 수정]

 [/etc/mail/sendmail.cf 수정]

 

※ /etc/mail/sendmail.cf 파일은 Sendmail 서버의 설정 파일이다.

설정 내용이 길고 복잡하여 꽤 까다롭게 여겨지지만, 꼭 필요한 부분만 알면 된다.

- Cw도메인 이름 : 도메인 이름에 대한 메일 서버로 사용하겠다는 의미                               

- MaxMessageSize=용량 : 한 개 메일의 본문과 첨부 파일을 합친 제한 용량(Byte 단위)

- Mlocal 설정 내용 : 전체 메일 공간의 제한

- O QueueDirectory=/var/spool/mqueue : 메일 전송 시에 임시 저장 디렉토리

- O DaemonPortOptions=Port=smtp, Addr=127.0.0.1, Name=MTA :

   Addr=127.0.0.1은 자기 자신만 메일을 보낼 수 있다는 의미.

   그래서 외부에서도 메일을 보낼 수 있도록 이 부분을 삭제한 것임

 

 

sendmail.cf 파일을 수정한 후에는 "service sendmail restart"로 센드메일 데몬을 재시작해야 한다.

하지만 지금은 다른 설정까지 모두 마친 후에 서비스를 다시 시작할 것이므로,

아직은 서비스를 재시작하지 않아도 된다.

 

 

1-3 외부 네트워크 또는 호스트가 메일을 보낼 수 있도록 허가해 준다.

/etc/mail/access 파일에 다음 내용을 추가해 준다.

 

naver.com      RELAY      -> naver.com 도메인의 릴레이 허용                                 

daum.net       RELAY      -> daum.net 도메인의 릴레이 허용                                    

192.168.xxx    RELAY      -> 192.168.xxx.ooo 컴퓨터의 릴레이 허용 (나는 192.168.000)

 

 

[/etc/mail/access 수정]

 

 

1-4 /etc/mail/access 파일을 수정한 후에는

"makemap hash /etc/mail/access < /etc/mail/access" 명령어로 적용시켜 줘야 한다.

 

 

[makemap 명령어]

 

/etc/mail/access 파일을 수정하고나면, 꼭 "makemap" 명령어를 수행한 후에,

"service sendmail restart"로 센드메일 데몬을 재시작해야 한다.

하지만 지금은 모두 설정한 후에 서비스를 시작할 것이므로 데몬을 재시작하지 않아도 된다.

 

 

1-5 그림 [센드메일 서버의 자세한 작동 원리]에서 나온 사용자에게

메일 박스의 내용을 보내주는 dovecot 데몬의 설정 파일은 /etc/dovecot.conf이다.

vi나 gedit로 다음 부분을 수정해 준다.

 

16행쯤 : base_dir = /var/run/dovecot/                                   -> 주석(#) 제거 

20행쯤 : protocols = imap imaps pop3 pop3s                         -> 주석(#) 제거  

42행쯤 : listen = *, [::]                                                       -> 주석(#) 제거     

86행쯤 : ssl_listen = *                                                         -> 주석(#) 제거 및 * 추가

89행쯤 : ssl = yes                                                              -> 주석(#) 제거            

139행쯤 : login_dir = /var/run/dovecot/login                           -> 주석(#) 제거         

149행쯤 : login_user = dovecot                                             -> 주석(#) 제거            

224행쯤 : mail_location = mbox:~/mail:INBOX=/var/mail/%u      -> 주석(#) 제거 및 219행 복사

312행쯤 : mail_access_groups = mail                                    -> 주석(#) 제거 및 mail 추가    

361행쯤 : lock_method = fcntl                                               -> 주석(#) 제거             

540행쯤 : login_executable = /usr/libexec/dovecot/imap-login  -> 주석(#) 제거               

553행쯤 : mail_executable = /usr/libexec/dovecot/imap           -> 주석(#) 제거           

617행쯤 : login_executable = /usr/libexec/dovecot/pop3-login       -> 주석(#) 제거     

621행쯤 : mail_executable = /usr/libc/dovecot/pop3                     -> 주석(#) 제거

782행쯤 : auth_executable = /usr/libexec/dovecot/dovecot-auth   -> 주석(#) 제거            

 

 

[/etc/dovecot.conf 수정]

 

/etc/dovecot.conf 설정 파일도 내용이 많이 복잡하다.

앞에서 수정한 내용 중 20행의 protocols는 4가지 프로토콜을 모두 사용한다는 의미다.

42행의 "*"은 IPV4를, "[::]"는 IPV6 프로토콜을 의미한다.

또, 224행의 mail_location 부분은 기존의 메일 박스(/var/mail/사용자명)를 사용하기 위한 것이다.

그 외에는 /etc/dovecot.conf의 주석에 상세히 잘 나와 있으니, 참조하도록 하자.

더 자세하게 알고 싶으면 http://www.dovecot.org에 들어가거나, "man dovecot.conf" 명령으로 확인해 보도록 한다.

 

dovecot.conf를 수정하면 "service dovecot restart"로 서비스를 다시 시작해야 한다.

하지만 지금은 모두 설정한 후에 서비스를 시작할 것이므로 데몬을 재시작하지 않아도 된다.

 

 

1-6 naver.com의 메일 계정 사용자인 'lee'를 생성하자.(암호도 쉽게 'lee'로 해 주자)

'lee'의 메일 계정은 lee@naver.com이 될 것이다.

 

 

[사용자 생성]

 

 

1-7 Sendmail 데몬은 restart해 주고, dovecot 데몬은 start한다.

 

 

[데몬(서비스) 시작]

 

 

1-8 "system-config-firewall" 명령으로 보안 수준을 설정한다.

관련된 포트는 sendmail 25번, pop3 110번, imap 143번, pop3s 995번, imaps 993번이다.

 먼저 [신뢰하는 서비스]에서 'DNS', 'SSL을 통한 IMAP', 'SSL을 통한 POP-3', '메일(SMTP)'

네 개를 체크해 준다.

 


[방화벽 설정 1]

 

[그 외의 포트]에는 110(tcp)와 143(tcp) 포트를 추가해 준다.

 

 

[방화벽 설정 2]

 

완료되었으면 적용 아이콘을 클릭해서 적용한 후 [방화벽 설정] 창을 닫는다.

 

 

1-9 컴퓨터가 부팅할 때 자동으로 E-Mail 서비스를 할 수 있도록

"chkconfig dovecot on" 명령으로 설정한다.

설정 후에 "system-config-services" 명령으로 확인하면

dovecot이 자동으로 시작된다는 초록색으로 되어 있을 것이다.

(sendmail은 이미 자동으로 시작되도록 설정되어 있을 것이다)

 

[dovecot 자동 실행 확인]

 

지금까지 진행한 것은 그림 [구현할 인터넷 구성도]의 naver.com 메일 서버를 완성한 것이다.

daum.net 메일 서버를 만들기 전에 naver.com 메일 서버가 자체적으로 잘 작동하는지 확인해 보자.

그림 [구현할 인터넷 구성도]의 naver.com의 사용자인

'lee'의 PC인 'Windows Client'에서 lee@naver.com 자기 자신한테 메일을 보내 보도록 하자.

 

 

 

2. [ Windows Client(=호스트OS) ]

 

naver.com 메일 서버가 작동하는지 테스트하자.

현재 Windows Client PC는 lee@naver.com 계정을 가진 사용자의 컴퓨터로 가정한다.

 

 

2-1 Windows의 [시작] -> [Microsoft Office] -> [Microsoft Office Outlook]을 실행한다.

※ Windows Vista 이전의 운영체제에서는 아웃룩 익스프레스(Outlook Express)를 실행하면

거의 동일하게 작동한다.

 

 

나는 오피스의 아웃룩 2007을 사용해보도록 하겠다.

 

※ Windows 7에서는 MS Office에 포함된 아웃룩을 사용하거나, 무료 이메일 클라이언트인

Thunderbird(http://www.mozilla.or.kr에서 다운로드)를 사용하면 된다.

 

 

아웃룩을 처음 실행하고

[도구] -> [계정 설정]으로 들어간다.



전자 메일 계정에서 [새로 만들기] 클릭

 

 

2-2 "수동으로 서버 설정 또는 추가 서버 유형 구성" 체크 -> [다음]

"인터넷 전자 메일" 체크 -> [다음]

 

인터넷 전자 메일 설정에서

사용자 이름은 "리네이버"로 하고 전자 메일 주소를 "lee@naver.com"으로 설정한다.

계정 유형은 'POP3'으로 두고,

받는 메일 서버와 보내는 메일 서버 모두를

그림 [구현할 인터넷 구성도]에 나온 mail.naver.com으로 입력한다.

 

로그온 정보에서 사용자 이름과 암호는 모두 "lee"로 설정하자.

  

[인터넷 전자 메일 설정]

  

 

2-3 설정이 끝났으면 <마침>을 클릭하고, <닫기>를 클릭해서 설정을 종료한다.

 

 

2-4 메일 작성 아이콘을 클릭해서 자기 자신(lee@naver.com)한테 메일을 보내 보도록 한다.

작성이 끝나면 보내기 아이콘을 클릭해서 메일을 보낸다.

 

[메일 테스트]

 

 

 

만약에 보내기 버튼이 보이지 않는 경우에는 위 그림의 경로로 보내기를 하자.

 

 

2-5 잠시 후에 메뉴의 [도구] -> [보내기 및 받기] -> [모두 받기]나

[보내기/받기] 버튼을 클릭해서

메일이 오는지 확인한다.

 

 

 

다음과 같이 메일이 잘 온다면 그림 [구현할 인터넷 구성도]의

naver.com 메일 서버 및 네임 서버가

정상적으로 작동하는 것이다.

 


[naver.com 메일 서버 및 네임 서버 정상작동 확인]

 

※ 메일이 '정크 메일' 폴더에 들어가 있다면, 메일을 선택한 후 마우스 오른쪽 버튼을 클릭하고,

[정크 메일] -> [보낸 사람을 수신 허용 목록에 추가]를 선택해 주면 정상적인 주소로 인식한다.

그리고 메일을 다시 보내고 메뉴의 [도구] -> [보내기 및 받기] -> [모두 받기]를 선택하면 된다.

 

 

 

 

 

3. [ Fedora Server(B) ]

 

이번에는 그림 [구현할 인터넷 구성도]의 daum.net 메일 서버를 구축한다.

 

 

3-1 Sendmail 관련 패키지를 설치한다.

 

# yum -y install sendmail-cf dovecot

 

 

3-2 vi 에디터로 /etc/mail/sendmail.cf 파일을 다음과 같이 수정한다.

 

85행쯤 : Cwlocalhost              -> Cwdaum.net   (붙여서 쓸 것)          

 261행쯤 : O DaemonPortOptions=Port=smtp, Addr=127.0.0.1, Name=MTA

                                        -> O DaemonPortOptions=Port=smtp,

                                                    Name=MTA(",Addr=127.0.0.1"부분 삭제)

 

※ vi 에디터에서 행을 표시하려면 [ESC] -> [:](콜론)을 누른 후 "set number"를 입력하면 된다.

 

 

3-3 외부 네트워크 또는 호스트가 메일을 보낼 수 있도록 허가해 준다.

vi 에디터로 /etc/mail/access 파일에 다음 내용을 추가해 준다.

 

naver.com RELAY -> naver.com 도메인의 릴레이 허용                                 

daum.net RELAY -> daum.net 도메인의 릴레이 허용                                     

192.168.xxx RELAY -> 192.168.xxx.ooo 컴퓨터의 릴레이 허용 (나는 192.168.000)

 

 

[/etc/mail/access 편집]

 

수정 후에 다음의 명령을 수행한다.

 

# makemap hash /etc/mail/access < /etc/mail/access

 

 

3-4 vi 에디터로 /etc/dovecot.conf 파일의 아래 부분을 수정해 준다.

(":set number"로 행 번호를 보이게 하자)

 

16행쯤 : base_dir = /var/run/dovecot/                                    -> 주석(#) 제거

20행쯤 : protocols = imap imaps pop3 pop3s                           -> 주석(#) 제거

42행쯤 : listen = *, [::]                                                         -> 주석(#) 제거

86행쯤 : ssl_listen = *                                                           -> 주석(#) 제거 및 * 추가

89행쯤 : ssl = yes                                                                -> 주석(#) 제거

139행쯤 : login_dir = /var/run/dovecot/login                             -> 주석(#) 제거

149행쯤 : login_user = dovecot                                               -> 주석(#) 제거

224행쯤 : mail_location = mbox:~/mail:INBOX=/var/mail/%u        -> 주석(#) 제거 및 219행 복사

312행쯤 : mail_access_groups = mail                                       -> 주석(#) 제거 및 mail 추가

361행쯤 : lock_method = fcntl                                                -> 주석(#) 제거

540행쯤 : login_executable = /usr/libexec/dovecot/imap-login      -> 주석(#) 제거

553행쯤 : mail_executable = /usr/libexec/dovecot/imap               -> 주석(#) 제거

617행쯤 : login_executable = /usr/libexec/dovecot/pop3-login      -> 주석(#) 제거

621행쯤 : mail_executable = /usr/libc/dovecot/pop3                    -> 주석(#) 제거

782행쯤 : auth_executable = /usr/libexec/dovecot/dovecot-auth  -> 주석(#) 제거

 

 

3-5 daum.net의 메일 계정 사용자인 'kim'을 생성한다.(암호도 쉽게 'kim'으로 해 주자)

'kim'의 메일 계정은 kim@daum.net이 될 것이다.

 

 # useradd kim

# passwd kim

 

 

3-6 Sendmail 데몬과 dovecot 데몬을 재시작한다.

 

# service sendmail restart

# service dovecot restart 

 

 

3-7 텍스트 모드의 보안 수준 설정 도구인 "system-config-firewall-tui" 명령

또는 "lokkit" 명령으로

'Enable'의 체크를 해제해서 방화벽을 해제해 준다.

 

 

[방화벽 사용 안 함]

 

 

3-8 부팅 시마다 자동으로 시작되도록 설정한다.

 

# chkconfig sendmail on

# chkconfig dovecot on  

 

이렇게 해서 그림 [구현할 인터넷 구성도]의 2대의 메일 서버 및 네임 서버 구성을 완료하였다.

이제는 Fedora Client 사용자(kim@daum.net)가 Windows Client 사용자(lee@naver.com)에게

메일을 보내도록 해 보자.

 

 

 

 

 

4. [ Fedora Client ]

 

그림 [구현할 인터넷 구성도]의 kim@daum.net lee@naver.com에게 메일을 보내 보자.

 

 

4-1 X 윈도우 메뉴 [프로그램] -> [오피스] -> [에볼루션 메일 및 달력]을 선택하거나,

터미널에서 "evolution" 명령을 입력한다.

처음 환영 메시지가 나오면 <앞으로>를 클릭한다.

 

 

4-2 [백업에서 복구] 창에서 <앞으로>를 클릭한다.

 

 

4-3 [신상 정보] 창에서 '전체 이름'은 적절히 입력하고,

'전자 메일 주소'는 kim@daum.net을 입력한다.

나머지는 비워 놓아도 된다.

(전체 이름은 메일을 보낼 때 상대편에게 보이는 이름이다)

<앞으로>를 클릭한다.

 

 
[Fedora 메일 클라이언트 설정 1]

※ 한영 전환은 왼쪽 [Ctrl] + [Space] 또는 [한/영] 혹은 오른쪽 [Alt]다.

 

 

4-4 [메일 받기] 창에서는 서버 종류를 'POP'으로 선택하고, 호스트는 "mail.daum.net",

사용자는 "kim"을 입력하고 인증 방법은 '암호', '암호 기억'을 체크한다.

<앞으로>를 클릭한다.

 

 

[페도라 메일 클라이언트 설정 2]

 

 

4-5 [받기 옵션] 창에서는 그냥 <앞으로>를 클릭한다.

 

 

4-6 [메일 보내기] 창에서는 서버 종류를 'SMTP'로 선택하고, 서버에 'mail.daum.net'을 입력한다.

또, 바로 아래에 있는 '서버에 인증이 필요'의 체크를 해제한 후 <앞으로>를 클릭한다.

 

 

[페도라 메일 클라이언트 설정 3]

 

 

4-7 [계정 관리] 창의 이름에 자동으로 kim@daum.net이 입력되어 있을 것이다.

<앞으로>를 클릭한다.

 

 

[페도라 메일 클라이언트 설정 4]

 

 

4-8 [시간대]에서 '아시아/서울'을 선택하거나, 지도에서 서울의 위치를 클릭하고,

<앞으로>를 클릭한다.

 

 

4-9 [완료] 창에서 <적용>을 클릭해서 설정을 마친다.

 

 

4-10 [Evolution] 창에서 새로 만들기 아이콘을 클릭하고,

다음과 같이 lee@naver.com에게 메일을 쓰고,

보내기 아이콘을 클릭한다. (현재 사용자는 kim@daum.net )

 

 

[외부에 편지쓰기]

 

 

 

5. [ Windows Client(=호스트OS) ]

 

lee@naver.com에게 온 메일이 있는지 확인한다.

 

 

5-1 Windows Mail의 메뉴에서 [도구] -> [보내기 및 받기] -> [모두 받기]를 선택해서

받은 메일이 있는지 확인한다.

김다음(kim@daum.net)에게 온 편지가 확인되었다.

(혹시 정크 메일로 들어갔다면, '김다음'을 수신 허용으로 해 준다)

 

 

[kim@daum.net이 보낸 메일 확인]

 

 

5-2 회신 아이콘을 클릭해서, 답장을 보내 본다. 필요하면 첨부 파일도 첨부한다.

 

[답장 쓰기]

 

 

 

 

 

6. [ Fedora Client ]

 

Evolution을 실행한 후, 보내고 받기 아이콘을 클릭해서 메일을 확인한다.

 

이네이버(lee@naver.com)가 보낸 답장이 확인될 것이다. 처음에 암호를 입력하라고 나오면

kim@daum.net의 암호인 "kim"을 입력한다.

이네이버(lee@naver.com)가 보낸 파일이 확인되었다.

 

 

[lee@naver.com이 보낸 메일 확인]

 

 

 

 

 

7. [ Fedora Server, Fedora Server(B) ]

 

지금 구현한 메일 서버를 Fedora Server와 Fedora Server(B)에서

각각 "메일 서버 완료"라는 이름으로 스냅샷을 저장하자.

 

 

이상으로 그림 [구현할 인터넷 구성도]의 구현이 완료되었다.

 

지금은 사설 네트워크 내부에 구현을 했지만,

외부 인터넷상에 구현하는 것도 이와 동일하다고 생각하면 된다.

메일을 주고 받는 과정을 그림 [구현할 인터넷 구성도]를 보면서 이해한다면

더 쉽게 이해가 될 것이다.

 

 

Posted by 아이맥스
카테고리 없음2013. 6. 20. 10:26

 

11-1. 데이터베이스 서버 구축 및 운영

      - DBMS 기본 개념

 

 

● DBMS 개념

MySQL을 운영하기 이전에 DBMS와 관련된 기본적인 용어를 명확히 이해할 필요가 있다.

 

- 데이터 : 자료

- 테이블 : 데이터를 표 형식으로 표현

- DB(DataBase) : 테이블의 집합

- DBMS(DataBase Management System) : DB들을 관리하는 소프트웨어

- 레코드 : 테이블 행

- 필드 또는 컬럼 : 테이블의 열

- 데이터 타입 : 각 필드에 입력할 값의 형식(정수, 문자 등)

- 필드명 : 각 필드의 이름

- 주 키(Primary Key) 필드 : 레코드를 식별하기 위해서, 유일한 값을 가지고 비어 있지 않은

                                     필드

- 외래 키(Foreign Key) 필드 : 다른 테이블의 주 키와 대응되는 필드

- RDBMS(Relational DBMS) : 관계형 DBMS

- SQL(Structured Query Language, 구조화된 질의 언어) : DB에서 정보를 얻거나, 생성 및

                                     갱신하기 위해 정의된 표준 언어(규약)

 

DBMS를 지금 처음 접해 본다면, 아마 읽어 봐도 무슨 말인지 이해가 잘 가지 않을 것이다.

다음 그림을 보면서 다시 설명하도록 하겠다.

 

 

[ 그림 11-1 DBMS 개념도 ]

 

위의 그림은 인터넷 쇼핑몰 업체의 데이터베이스를 아주 간략화하여 그린 그림이다.

예로 옥션, 인터파크, G마켓 등의 인터넷 쇼핑몰이라고 생각하면 쉬울 것이다. 이 데이터베이스에는 회원으로 가입한 고객의 정보와 그 고객이 구매한 물품에 대한 정보가 들어있다.

 

위의 그림을 보면서 용어를 다시 한번 살펴보자.

  

 

① 데이터(Data)

    그림에서 hong, 홍길동, 22살, 경기 등의 단편적인 정보를 데이터라고 부른다.

    누가 "홍길동의 데이터가 어떻게 되지?"라고 묻는다면

    "나이는 22살이고, 집은 경기도입니다." 정도로 대답할 수 있을 것이다.

    이처럼 정보는 있으나 완전히 체계적으로 정리되지 않은 것을 데이터라고 생각하면 된다.

 

 

② 테이블(Table)

    단편적인 정보를 표 형태로 체계화시켜 구성한 것을 테이블이라고 부른다.

    그림의 큰 원통(?)안에는 테이블이 2개가 있다.

    또, 각 테이블에는 이름을 붙일 수 있다. '고객정보', '구매정보' 가 테이블의 이름이다.

 

 

③ DB(DataBase)

    '고객정보', '구매정보' 같은 테이블이 들어 있는 커다란 저장 장소라고 생각하면 된다.

    DB는 위의 그림처럼 주로 원통 모양으로 그린다.

    또, 각 DB도 이름을 붙인다. 그림에는 DB가 3개 있다. shopping_db, mysql, test라는

    3개의 DB가 있는 것이다.

    이 중에서 mysql과 test DB는 시스템에서 제공하는 DB이며, shopping_db는 사용자가

    생성한 DB이다.

 

    DB를 더 쉽게 얘기하면 'DB는 커다란 저장소(원통 모양)이며, 그 안에 테이블을 생성'

    하는 것이다. 이 개념을 잊지 말자.

 

 

④ DBMS(DataBase Management System)

    이러한 원통 모양의 DB를 관리하기 위한 소프트웨어를 DBMS 또는 DB 서버

    (데이터베이스 서버)라고 부른다.

    ※ 종종 사람들은 DBMS를 줄여서 DB라고 부르기도 하지만 여기서는 서로 다른 것으로 구분해서 부르겠다.

       위의 그림을 보면 DB는 3개의 원통, 즉 테이블을 생성할 수 있는 공간을 의미하며 DBMS는 이 DB들을 관리하는

       소프트웨어임이 명확히 나타나 있다.

    위의 그림에서 3개의 DB를 싸고있는 선이 DBMS라 생각하면 된다.

    DBMS 소프트웨어의 많은 종류들 중에서 우리는 MySQL이라는 제품을 이용할 것이다.

 

 

⑤ 레코드(Record) 또는 튜플(Tuple)

    테이블의 행을 말한다. 위의 그림에서 "hong-홍길동-22-경기"가 하나의 레코드이다.

    그러므로 '고객정보' 테이블에는 4개의 레코드가 있는 것이다.

    이 레코드가 내포하는 의미는 '하나의 완전한 정보'로 생각할 수 있다.

    즉, '고객정보' 테이블에서 하나의 레코드만 본다면 해당 고객의 모든 정보를 파악할 수 있다.

    (이는 단순한 테이블에서의 예이다. 여러 개의 테이블이 관계된 테이블에서는 하나의 레코드만으로는

      모든 정보를 파악할 수가 없다)


 

⑥ 필드(Field) 또는 컬럼(Column)

    테이블의 열을 말한다. 여기서 중요한 점은 각각의 필드는 반드시 이름이 있다는 것이다.

    이를 '필드이름(Field Name)'이라고 부른다.

    위의 그림의 DB중 'shopping_db'의 테이블 '고객정보'는 4개의 필드로 구성되어 있으며,

    각각의 필드 이름은 아이디, 이름, 나이, 주소가 되는 것이다.

    또한 각 필드는 데이터 타입(Data Type)이라는 것이 지정되어 있다.

    즉, 각 필드에 입력할 값의 유형을 결정해 놓아야 한다.

    예로 '이름' 필드는 문자로 지정해야 하고 '나이' 필드는 숫자(정수)로 지정해야 한다.

 

 

⑦ 주 키(Primary Key) 필드

    주 키 필드란 단순히 '필드 중에서 비어 있지 않고, 중복되지 않는 필드'라고

    생각할 수 있겠다. 사용자가 인터넷 사이트에 회원으로 가입했을 때를 생각해보자.

 

    처음 가입시에 'ID'를 생성하는 칸에 자신이 원하는 ID를 입력하고, '중복확인' 이라는

    버튼으로 다른 사람이 내가 사용하고자 하는 ID를 이미 사용하고 있는지 확인했다.

    누가 이미 그 ID를 사용하고 있다면 사용자는 같은 ID로 가입을 할 수 없을 것이다.

    위의 그림에서 '고객정보' 테이블이 바로 회원 가입 시에 입력하게 되는 정보를 단순화시킨

    것이다.

    4개의 필드 중에서 '아이디' 필드가 바로 주 키 필드가 된다. 아이디는 중복되지 않아야 하고

    또 비어 있어도 안될 것이다. 즉, 아이디가 없이 회원 가입은 불가능하다.

 

    이처럼 주 키 필드의 특징은 '중복되지 않고, 비어 있는 값(NULL이라 부른다)을 허용하지

    않는' 것이다.

    만약 '이름'을 주 키로 설정한다면 어떨까? 당연히 동명이인이 있을 수 있으므로 주 키로

    설정하면 안된다.

 

    주 키 필드의 중요한 역할은 테이블에서 주 키 필드의 값만 알고 있다면 정확히 어떤

    레코드인지를 구분해 낼 수 있다는 것이다. '고객정보' 테이블에서 해당 사용자의 ID만 알고

    있다면 이름, 나이, 주소와 같은 정보를 정확히 추출해 낼 수 있다.

 

    그래서 사람의 기본 정보와 관련된 테이블에서 주 키 필드를 지정할 때는 중복되지 않고

    비어 있지 않아야 한다. 이런 이유로 인터넷 회원 가입에서는 주로 ID를 , 학생과 관련된

    정보시스템에서는 주로 학번을, 그리고 나머지 기타 정보시스템에서는 주로 주민등록번호를

    사용하게 되는 것이다.

 

    이번에는 '구매정보' 테이블의 주 키 필드를 생각해 보자. 단순히 생각하면 '고객정보'와

    같이 '고객ID'를 주 키로 설정하면 될 것처럼 보인다.

    하지만 그럴 경우에는 아주 위험한 결과를 낳을 수 있다.

    주 키의 정의를 다시 생각해보자. '중복되지 않고, NULL이 아닌 값' 이어야 한다.

 

    만약 '구매정보'에서 '고객ID'를 주 키로 설정했다면, 제일 처음 구매를 한 'hong'이라는

    사용자는 두 번 다시 이 쇼핑몰에서 물건을 살 수가 없다. 왜냐하면, 다음에 물건을 살 때

    주 키 필드인 '고객ID' 필드에 이미 'hong'이라는 값이 들어 있으므로, 'hong' 이라는 값을

    또 넣는다면 'hong' 이라는 값이 2개가 되므로, 주 키의 정의에서 어긋난다.

    우습게도 주 키의 설정 하나를 잘못한 결과로, 회원 한명이 우리의 쇼핑몰에서는 물건을

    한 개 사면 다시는 물건을 구매할 수 없는 결과가 되어 버린다.

    그러면 '일자'를 주 키로 잡는다면? 같은 물건을 두 번 다시 팔 수가 없다.

 

    그렇다면, '구매정보' 테이블에는 주 키로 설정할만한 적당한 필드가 없어 보인다.

    그럴 경우에는 주 키를 설정하지 않아도 되지만, 주 키는 설정해 주는 것이 바람직하므로

    제일 앞에 일련번호(NO)라는 필드를 생성해서 사람들이 물건을 살 때마다 차례로 1,2,3,4..로

    증가시키면서 값을 입력한다면, 중복될 일도 없고 NULL 값이 들어가지도 않을 것이므로

    주 키로 설정하기에 아주 적절한 필드가 되는 것이다.

 

    그래서 '구매정보'의 주 키를 'NO' 필드로 설정하게 된 것이다.

 

  

⑧ 외래 키(Foreign Key) 필드

    외래 키 필드는 두 개의 테이블을 연관시키는 필드이다. 위의 그림에서는 '구매정보'

    테이블의 '고객ID' 필드가 '고객정보' 테이블의 '아이디' 필드의 외래 키가 되는 것이다.

    외래 키의 필요성을 생각 해 보면, 어떤 사람이 우리 쇼핑몰의 회원이 아닌데도 물건을

    사려 한다면 아마도 물건을 살 수가 없고('구매정보' 테이블에 레코드를 삽입할 수 없고),

    먼저 회원으로 가입해야 한다. (먼저 '고객정보' 테이블에 레코드가 삽입되어야 한다)

    이번에는 위의 그림의 '고객정보' 테이블의 'hong'이라는 사용자의 레코드를 삭제한다면?

    원칙적으로는 삭제가 되지 않는다.

    '구매정보' 테이블에 'hong' 이라는 사용자가 있기 때문이다.

   이런 경우에는 '구매정보' 테이블의 'hong' 이라는 고객ID의 레코드를 모두 삭제한 후에,

   '고객정보'의 'hong' 레코드를 삭제해야 한다. 

 

 

⑨ RDBMS(Relational DBMS)

    관계형 DBMS는 지금 설명한 테이블과 그 관계성(Relationship)을 기반으로 하는

    DBMS를 말한다.

    Oracle, SQL Server, MySQL 등 대부분의 DBMS는 관계형 DBMS이거나, 관계형 DBMS를

    지원한다.

    

 

⑩ SQL(Structured Query Language, 구조화된 질의 언어)

    관계형 DBMS는 해야 할 일들을 대략 얘기하면, DB 만들기/테이블 만들기/레코드 삽입하기/

    레코드 삭제하기/레코드 수정하기 등의 작업을 해야 한다.

    이러한 작업을 하기 위해서 DBMS가 알아듣는 언어로 얘기해야 할 것이며,

    그 알아듣는 언어를 SQL이라고 부른다.

    이 SQL 언어를 이 책에서 완벽하게 하기는 어렵지만, 필수적으로 알아야 할 것들은 몇 개

    되지 않는다.

 

Posted by 아이맥스