● 샌드메일 서버의 작동 원리

MTA : Mail Transfer Agent
MUA : Mail User Agent
MDA : Mail Delivery Agent
MRA : Mail Retrieval Agent
① 메일 클라이언트1은 SMTP 프로토콜을 이용해서, 메일 서버1의 샌드메일 데몬에게 메일을 보내달라고 요청한다.
② 샌드메일 데몬은 메일을 '메일 큐'에 넣어 놓는다.(이 파일은 /var/spool/mqueue임)
③ 샌드메일 데몬은 시간이 되면 MDA에게 메일을 보내달라고 요청한다.
④, ⑤ MDA는 SMTP 프로토콜을 이용해서 메일 서버2의 샌드메일 데몬에게 메일을 전송한다.
⑥, ⑦ 메일 서버2의 샌드메일 데몬은 받은 메일을 MDA를 통해서 사용자의 메일 박스에 넣어 놓는다.
⑧ 메일 클라이언트2는 메일 서버2의 dovecot 데몬에게 자신의 메일을 달라고 요청한다.
⑨, ⑩ dovecot 데몬은 메일 박스에서 메일 클라이언트2의 메일을 POP3 또는 IMAP 프로토콜을 이용해서 전송해 준다.


메일을 작성해서 A라는 PC에서 B라는 PC에게 보내고 싶다고 가정하자.
이때 메일을 보내는 방법은 크게 두가지가 있다.
첫번째 방법은 A와 B 중간에 중계서버를 두는 것인데 A가 중계서버에 메일을 넣어두면 B가 그 서버에서 메일을 찾아서 본다. 첫번째 방법의 단점은 인터넷이 안되면 메일을 볼 수가 없다.
두번째 방법은 첫번째 방법에서 중계서버에 저장된 메일을 가져오는 것이다. 사용자는 A PC에서 메일을 작성해서 자신이 구축한 메일서버로 보낸다. B는 A가 구축한 메일서버에서 메일을 받는다.



[과제] sendmail 소스컴파일 설치 후 메일서버를 셋팅하여 이메일을 발송해보라. 테스트는 에볼루션(evolution)이라는 유틸리티를 사용한다. 실습 시 외부에서 우리가 구축한 메일서버를 찾아올 방법은 없으므로 발송 테스트만 한다.

Posted by 겨울섬
,

우리가 모르는 곳을 찾아가려면 주소록이 있어야 한다.
우리가 웹브라우저 주소창에 www.daum.net을 치면, Daum회사의 서버에서 정보를 받아온다.
웹브라우저는 Daum서버가 어디에 있는지 알고 찾아가는 것일까? 답은 주소를 알고 찾아간다.
주소에는 두가지 종류가 있다. 하나는 IP주소, 나머지 하나는 MAC 주소이다.


● 주소의 종류

- IP주소(숫자)
  사설IP(private) : 서버가 아닌 이상 공인 IP를 가질 이유가 없다. 외부에서 접속 못하고 자기들끼리만 서로 통신함. NAT
  공인IP(public) : 전세계에 있는 사람들이 다 나를 찾아올 수 있다. 중복 안됨.
- MAC주소(16진수)


PC에서 웹브라우저로 www.daum.net을 치면 맨 처음 /etc/hosts파일 내에 해당 URL의 IP주소를 찾아본다. 그러나 사이트가 기하급수적으로 늘어나버려서 하나의 파일에 다 넣을 수가 없게 되었다. 그 대행을 하게 된 것이 DNS서버이다. DNS서버에게 Daum서버의 IP주소가 뭐냐고 물어보면 알려준다. 만약 DNS서버가 모르면 또 다른 DNS서버에게 물어본다.

DNS서버가 없어도 인터넷은 된다. /etc/hosts파일 안에 넣어두면 되기 때문이다.

DNS서버 : URL주소를 IP주소로 바꿔주는 역할.
DNS서버를 사는 게 아니라, 리눅스를 깔고 그 안에 해당 역할을 하는 프로그램을 깔아 셋팅을 해놓으면 그 컴퓨터는 DNS역할을 하는 서버가 된다. (bind라는 프로그램)


● 네임 서버의 개념




우리가 알고있는 168.126.63.1은 KT의 대표적인 DNS서버 주소이다. 그렇다면 KT의 DNS서버는 이 한대 뿐일까? 그건 아니다. 전국에 DNS서버가 흩어져서 다수 사용자의 요청에 대한 과부하를 방지한다.
개인적으로 내가 사이트 하나를 구축한다는 가정 하에, 처음 할 것은 도메인 주소를 사야 한다. 도메인 주소라는 것은 전세계에서 중복이 안되는 고유한 것이다. 이러한 도메인 주소를 관리해 주는 기관이 있는데 InterNIC이다. 각국에 지사를 두고 있는데, 한국 지사에서는 한국의 모든 도메인을 관리한다.
한국 지사라 해도 한국의 모든 접속을 관리할 수 없으니까 외주업체(가비아, 후이즈 등)를 둔다.
내가 나의 도메인을 후이즈에서 확보했다고 가정하자. 그런 다음 두번째로 할 것은 홈페이지를 제작한다. 홈페이지를 만들면 웹서버에 넣는데 자신의 웹서버를 만들 수도 있고, 일반적으로 도메인을 확보한 업체의 웹서버를 빌려쓰기도 하는데 이를 웹호스팅이라고 한다.
규모가 큰 회사에서는 자신들의 DNS서버를 따로 두기도 한다.


[과제] RHEL4에 맞는 bind 소스버전을 받아서 설치하고, 각자 DNS서버를 셋팅해보고난 후, 자신의 컴퓨터를 DNS서버라 가정하고 주변의 컴퓨터에서 나의 DNS서버를 지정하여 인터넷이 되는지 확인하라. (VM웨어 네트워크 부분을 NAT에서 Bridged로 바꿔놓고 실습)

1. openssl의 압축을 풀고, 설치할 디렉토리를 생성한다.


2. openssl이 설치될 경로를 config의 옵션을 이용하여 지정하고, 소스를 컴파일 및 설치한다.


3. bind의 압축을 풀고, 설치할 디렉토리를 생성한다.


4. configure 명령의 옵션을 주어 설치될 경로와, openssl의 경로 등을 지정해주고 난 후 컴파일 및 설치를 한다.


5. named의 환경설정파일을 생성하여 내용을 입력한다.


6. dig명령을 이용하여 최상위 루트 도메인 정보파일을 생성하고 내용을 확인해본다.


7. localhost의 정방향 영역 파일을 생성한 후 내용을 입력한다.


8. localhost의 역방향 영역 파일을 생성한 후 내용을 입력한다.


9. sksstar.com 도메인의 정방향 영역 파일을 생성한 후 내용을 입력한다.


10. sksstar.com 도메인의 역방향 영역 파일을 생성한 후 내용을 입력한다.


11. /usr/local/bind/sbin 안의 named 체크 명령을 이용하여 bind의 환경설정 파일과 영역 파일의 설정을 검사한다. 모두 OK가 뜨면 정상적인 설정이다.


12. named 서비스를 실행한다. 프로세스가 제대로 실행되는지 확인해본다.


13. 다른 컴퓨터에서 내가 설정한 네임서버 주소를 입력한 후 인터넷이 되는지 확인해본다.


14. 정상적으로 인터넷이 되면 성공이다.


15. 긴가민가 하다면 named 서비스를 내린 후 인터넷을 해보자. 인터넷이 안되는가? 그러면 성공이다.


16. 다시 named 서비스를 올린 후 인터넷 익스플로러를 실행해보면 정상적으로 웹페이지가 뜨는 것을 확인할 수 있다.




1차
2차 수정본



※ 참고 문서
※ 참고 사이트
http://www.unix.co.kr/bbs/board.php?bo_table=05_05&wr_id=131&page=3
Posted by 겨울섬
,

● LVM

OS
 ↓
LVM    // OS적으로 구현하기 때문에 돈이 많이 안듬.
 ↓
Disks


● RAID

OS
 ↓
RAID    // LVM과 동일한 기술인데 대체적으로 안정성에서 H/W적으로 구현하므로 돈이 많이 듬.
 ↓
Disks


● LVM과 RAID0의 차이
100G 하드 3개가 있을 때 이것을 LVM이나 RAID0으로 묶었다고 가정해보자.
LVM은 하드 3개가 묶여있지만 순서대로 데이터를 채워나간다.
RAID0은 Stripping으로써 하드 3개를 동시에 채워나간다.



LVM은 디스크의 타입이 IDE든 SCSI든 상관없지만, RAID는 SCSI이어야 함.
RAID는 S/W RAID와 H/W RAID가 있는데, 안정성 면에서 H/W RAID를 많이 선호한다.
H/W RAID를 지원하려면 RAID Card(또는 SCSI Card)가 있어야 함.

RAID는 구현 형태에 따라 번호가 나뉘는데 그 중 0, 1, 5번이 가장 많이 쓰임.
일반적으로 서버는 RAID를 지원하기 때문에 가격이 비싼 것임. 정보는 돈과 비교할 수 없기 때문에 회사에서는 돈을 들여서라도 안정적으로 구현하려 하는 경향.



● RAID0
RAID를 안쓴다는 것임. 일명 Stripping.

● RAID1
RAID를 쓴다는 것임. 일명 Mirroring.
100G 하드 2개가 있을 때 두 디스크의 내용이 똑같다. 단점은 돈이 많이 듬.

● RAID5
RAID5는 최소한 디스크가 3개 이상이어야 한다.
100G 하드 5개가 있을 때 디스크 4개만 쓰고 나머지 하나는 Spare용임. 4개 중 한 개의 디스크가 고장나면 Spare가 교체됨. 단, 2개의 디스크가 고장나면 복구 못한다는 단점.

● RAID6
RAID5와 같으나 Spare가 2개임.

● RAID5+1
RAID5를 통째로 Mirroring 한 것.




● LVM이란?
여러 개의 하드디스크를 합쳐서 한 개의 파일시스템으로 사용하는 것
LVM은 여러 개의 디스크를 하나처럼 사용하게 해 줄뿐 아니라, 합쳐진 것을 다시 여러 개로 나눌 수도 있다. 예로 2TB짜리 2개를 합쳐서 논리적으로 1개로 만든 후에 1TB와 3TB로 나눠서 파일시스템을 사용할 수도 있다.

● 특징
 - 작은 용량의 하드디스크 여러 개를 큰 용량의 하드디스크 한 개처럼 사용함
 - 서버를 운영하면서 대용량의 별도 저장 공간이 필요할 때 활용함

● 용어
 - Physical Volume(물리 볼륨) : /dev/sda1, /dev/sdb1, /dev/sdc1
 - Volume Group(볼륨 그룹) : Physical Volume을 합쳐서 1개의 물리적 그룹으로 만드는 것
 - Logical Volume(논리 볼륨) : Volume Group을 나눠서 논리적 그룹으로 나눔(1개 이상)
 - Physical Extent : PV가 갖는 일정한 블록
 - Logical Extent : LV가 갖는 일정한 블록




[실습] 100M 하드디스크 2개, 200M 하드디스크 1개 총 3개의 디스크를 LVM을 적용하여 400M 용량의 1개의 디스크처럼 사용하도록 해보라.

1. 실습에 필요한 하드디스크를 추가하고 난 후, 시스템을 부팅한다.


2. 시스템이 새로운 디스크를 인식하는지 fdisk -l 명령으로 확인해본다.


3. 차례대로 /dev/sdc 장치부터 파티셔닝을 시작한다. 중간에 t는 파일시스템 유형을 선택하는 것으로써 다음의 Hex code에 디폴트는 83(Linux)이지만 우리는 LVM을 구현할 것이므로 8e(Linux LVM)을 입력한다.


4. 잘 되었는지 확인하기 위해 p를 입력해 본다. System열에 Linux LVM이라고 쓰여있는 것을 확인할 수 있다. 파티셔닝 작업을 저장하기 위해 w를 입력한다. 나머지 장치인 /dev/sdd와 /dev/sde도 같은 작업을 반복한다.


5. 파티션 작업이 잘 되었는지 확인해 본다.


6. pvcreate 명령으로 각 장치 파티션의 물리볼륨을 생성한다.


7. 위에서 만든 3개의 물리볼륨을 하나의 볼륨그룹으로 묶는다. 명령은 vgcreate이며, 볼륨그룹 이름은 myVG로 준다고 가정한다.


8. vgdisplay 명령으로 볼륨그룹이 제대로 생성되었는지 확인해본다. 생성된 볼륨그룹의 용량이 400M인 것을 확인할 수 있다.


9. 이제부터는 /dev/myVG를 하나의 하드디스크(/dev/sdb)처럼 생각하고 작업하면 된다. 일반적인 하드디스크의 파티션 생성 명령은 fdisk이나, 볼륨그룹의 파티션을 생성할 때는 lvcreate이다.
myVG 아래에 myLG1이라는 논리볼륨을 생성하되 크기는 400M로 한다고 가정한다.


10. 파티션 생성 후 mkfs 명령어로 파일시스템 포맷을 했듯이, 위에서 생성한 논리볼륨(/dev/myVG/myLG1)도 똑같이 하나의 하드디스크 파티션과 동일하게 작업하면 된다.
논리볼륨을 ext3 파일시스템으로 포맷한다고 가정한다.


11. 마운트시킬 디렉토리를 하나 만들고, 거기에 포맷까지 완료한 논리볼륨을 마운트시킨다. 그런 후 df -h 명령어로 확인해 본다.


12. 재부팅시 자동으로 마운트 되도록 /etc/fstab 파일을 열어 수정한다.

'운영체제 > 리눅스' 카테고리의 다른 글

[리눅스] 메일 서버  (0) 2010.07.11
[리눅스] 네임 서버  (0) 2010.07.07
[리눅스] 디스크 추가하기  (0) 2010.07.06
[리눅스] 응급복구 (루트 암호 없애기)  (0) 2010.07.02
[리눅스] 프로세스와 데몬  (0) 2010.07.02
Posted by 겨울섬
,