2010년 8월 20일 금요일

Evolution에서 Gmail IMAP 설정하기

Internet Message Access Protocol (IMAP) 이란?

IMAP은 email 클라이언트가 원격 메일 서버의 이메일을 접근할 수 있도록 하는 프로토콜 중 하나이다. 현재 IMAP 버전 4 revision 1까지 나와 있다. IMAP은 온라인 및 오프라인 모드를 지원하며 사용자가 이메일을 삭제하기 전까지 서버상에 남겨둔다. IMAP과 함께 가장 많이 쓰이는 이메일 프로토콜로는 POP을 들 수 있다. IMAP과 POP을 비교하면 아래와 같다.

  • 서버와의 연결
POP을 사용하는 클라이언트는 새로운 메시지를 내려받을 때 이메일 서버에 연결하지만 IMAP을 사용하는 클라이언트는 항상 서버와 연결 상태를 유지하며 메시지를 필요할 때마다 내려 받는다.

  • 여러 클라이언트 연결
POP 프로토콜은 메일박스에 동시에 연결할 수 있는 클라이언트의 수가 하나로 제한되지만 IMAP은 여러 클라이언트가 동시에 메일박스에 접근할 수 있으며 메일박스에 변동이 생겼을 경우 연결된 클라이언트에 변경 사항을 알려 주기도 한다.

  • MIME 메시지 일부 내려 받기
모든 이메일은 MIME 형태로 전송된다. 이 MIME은 트리 구조를 가지고 있으며 IMAP4는 이들 MIME의 일부분을 분리해서 내려 받을 수 있으며 동시에 전체를 내려 받을 수도 있다. 이로 인해 클라이언트는 이메일의 텍스트 파일만을 내려 받을 수 있으며 첨부 파일이나 스트림 콘텐츠는 나중에 받을 수도 있다.

  • 메시지 상태 정보
IMAP4에 정의되어 있는 flag를 사용하여 메시지의 열람, 답변, 삭제 여부 등의 메시지의 상태를 알 수 있다. 이 플래그 정보는 서버에 저장되기 때문에 다른 이메일 클라이언트로 접속하더라도 동일한 플래그 정보를 볼 수 있다.

  • 여러개의 메일박스
IMAP4 클라이언트는 메일 박스를 생성하고 변경하며 삭제할 수 있다. 또한 메일박스끼리 이메일을 복사 이동 또한 가능하다. 이 기능때문에 공유 혹은 공용 폴더에 접근할 수 있다.

  • 이메일 검색
IMAP4는 서버에 이메일 검색 쿼리를 전달하여 쿼리에 맞는 메일 검색을 요구할 수 있다. 이로 인해 검색을 위해 클라이언트가 메일 메시지를 전부 내려 받을 필요가 없다.

Evolution IMAP 계정 추가

gmail 계정을 IMAP 프로토콜을 이용하여 추가해보도록 하자. 본 포스트에서는 이메일 클라이언트로 Evolution 2.30.2 버전을 사용하였다. 그럼 이제 시작해보자.

우선 gmail 활경설정 페이지에서 IMAP이 활성화되어 있는지 확인해보도록 한다. 자신의 gmail 계정에 로긴하여 환경 설정 페이지의 '전달 및 POP/IMAP' 탭을 열자.
아래쪽 IMAP 액세스란에서 '상태:  IMAP를 사용할 수 있습니다.'를 확인하자. 사용 안함으로 되어 있다면 사용란을 체크하도록 한다.


이제 evolution을 실행하여 Preference (Edit->Preference) 창을 열자


Preference 창의 오른쪽 상단의 Add 버튼을 클릭한다.


Account Assistant 마법사가 실행되면 아래 forward 버튼을 클릭.


자신의 이름과 이메일 주소를 입력한다.


이메일 받기 위한 서버 설정을 한다. Server type은 IMAP+를 선택한다. Gmail은 IMAP 포트로 993을 사용하기 때문에 서버 주소에 imap.gmail.com:993으로 포트번호까지 지정해주어야 한다. Username은 도메인명까지 정확히 입력하도록 한다. Security와 Authentication type도 그림과 같이 설정한다.


받기 옵션은 원하는 걸 선택하도록 한다.


받기 설정과 마찬가지로 보내기 설정 또한 서버 주소에 smtp.gmail.com:587과 같이 포트번호까지 지정하여야 한다. Security와 Authentication type도 그림과 갈이 설정한다.


Account Management 창에서는 단순히 Evolution에서 표시되는 이름을 지정하는 것이므로 자신이 원하는 표시명을 지정하도록 하자. Work 혹은 Personal을 예로 들고 있다.


Apply 버튼 클릭하여 마법사를 종료한다.


Preference 창에 방금 추가한 계정이 나타나 있을 것이다.


Close 버튼을 누르면 서버에서 이메일을 내려 받을 것이다.



본 포스트를 작성하게 된 계기는 아직까지 Google은 Evolution을 위한 IMAP 셋팅 가이드를 제공하지 않고 있기 때문이다. 그렇다고 구글에서 Evolution 사용을 원척적으로 금지하는 것은 아니기 때문에 위와 같이 설정하여 IMAP 프로토콜을 이용하여 Gmail을 더 쉽게 사용할 수 있을 것이다.

2010년 8월 17일 화요일

컴퓨터에 문제 발생시 시스템 복원을 이용하여 복구하기


1. 시스템 복원이란?

시스템 복원은 자동적으로 변화가 일어나기 전 시점에 복원 시점을 생성하여 항상 혹은 정해진 시간 간격으로 사용자의 컴퓨터에서 일어나는 변경 사항들을 추적한다. 복원 시점은 저장되어진 사용자의 컴퓨터 상태이다.

또한 사용자가 직접 변경을 가하기 전에 컴퓨터 상태와 세팅값을 기록하기 위해 복원 시점을 생성할 수 있다. 이로서 사용자가 변경이 이루어진 시점 이전 날짜나 시간의 복원 시점을 선택하여 컴퓨터를 이전 상태로 복원할 수 있다. 예를 들면, 확장자 exe나 dll인 파일들을 포함한 프로그램을 실수로 삭제하였을 경우나 프로그램이 장애를 일으킬 경우 이전 상태로 컴퓨터를 복원할 수 있다.

기본적으로 시스템 복원은 사용자 컴퓨터의 모든 파티션과 드라이브를 모니터링하고 복원한다. 또한 CD-ROM, 플로피 디스크, System Management Server (SMS)나 IntelliMirror 등을 통해 사용자가 설치한 응용프로그램이나 드라이버를 감시한다.


2. 시스템 복원 사용을 위한 점검 사항


시스템 복원을 사용하기 위해서는 아래와 같은 사항들이 설정되어야 한다.


2-1 System Restore Service
시스템 복원을 사용하려면 System Restore Service가 동작하여야 한다. 확인하는 방법은 세 가지가 있다. 첫번째로는 내 컴퓨터->속성을 선택한 후 시스템 등록정보 창에서 시스템 복원 탭을 선택하여 시스템 복원 사용 안 함이 체크되어 있지 않아야 한다. 두 번째 확인 방법은 도스창에서 net start를 실행하면 출력되는 항목 중에서 'System Restore Service'가 포함되어 있는지 확인하는 것이다. net start 명령은 현재 시스템에서 동작 중인 서비스 목록을 출력한다.



확인하는 마지막 방법은 시작->실행->services.msc 입력 후 실행하면 서비스 창이 뜰 것이다. 실행되고 있는 서비스 목록 중 System Restore Service를 찾아 실행되어 있는지 확인해보도록 하자.



2.2 시스템 복원을 위한 디스크 할당하기
시스템 복원을 위해 사용되는 디스크 크기를 반드시 조정할 필요는 없다. 윈도우가 기본적으로 시스템 복원을 위해 전체 디스크의 12%를 할당하기 때문이다. 그리고 시스템 복원에는 윈도우가 설치된 디스크 혹은 파티션에 최소 200MB가 필요하다.
시스템 복원에 할당된 디스크 용량을 확인하는 방법은 다음과 같다.

내 컴퓨터->속성을 선택한 후 나타난 시스템 등록정보 창에서 시스템 복원 탭을 선택하자. 컴퓨터에 하드디스크가 하나 설치되어 있다면 아래와 같을 것이다. (본인의 윈도우가 영문이라 모든게 영어..뷁)



하나 이상의 디스크가 설치되어 있다면 아래와 같이 나타날 것이며 각 드라이브의 디스크 할당은 설정 버튼을 클릭하여 조정하도록 하자.




이때 디스크 할당에는 사용 가능한 디스크 용량의 12%를 초과할 수 없음을 기억하자.


3. 시스템 복원하기


다른 윈도우 작업과 마찬가지로 시스템 복원도 마법사를 사용한다.
Start->Help and Support를 클릭한다.



오른쪽 하단부에 Undo changes to your computer with System Restore를 선택한다.


시스템 복원 창이 뜨면 Restore my computer to an earlier time을 선택 후 Next 클릭.


문제가 발생하기 이전 시점의 복원 시점(restore point)를 달력에서 선택한다. 복원 시점을 선택하면 오른쪽에 어떤 변화가 적용되었는지 알 수 있도록 표시된다.



위 그림에서는 Visio가 설치되기 이전 시점을 나타낸다.  



Next 버튼을 클릭하면 재부팅되면서 시스템 복원 작업이 진행된다. 따라서 진행 중이던 모든 작업을 저장하기 바란다.



복원 작업이 완료된 후 다시 재부팅이 완료되면 복원 시점과 복원 성공 여부가 표시된다. 위 그림은 복원이 성공적으로 완료되었음을 표시한다.



간혹 시스템 복원이 위와 같은 메시지를 나타내면서 실패할 경우도 있다. 이럴 경우에는 다른 복원 시점을 선택하여 다시 시도해 보기 바란다.


4. 복원 시점 만들기


복원 시점은 윈도우가 프로그램 설치 등의 변화가 있을 때 자동으로 생성한다. 하지만 사용자가 직접 원하는 시점의 복원 시점을 생성할 수도 있다. 마법사를 이용한 복원 시점 생성은 아래와 같다.




시스템 복원 창에서 Create a restore point를 선택한 후 Next를 클릭한다.


복원 시점에 대한 설명을 입력하자. 어떤 변화가 적용되었는지 알 수 있도록 설명을 달도록 하자.


복원 시점 생성은 꽤 빠르게 이루어 진다. 본인의 시스템의 경우 채 1분이 경과되기 전에 완료되었다.



시스템 복원 과정에서 생성한 복원 시점을 확인해보면 위와 같이 생성 과정에서 본인이 입력한 설명을 찾을 수 있다.


5. 복원 취소



시스템 복원을 거쳐 복원 후 시스템이 더 불안해졌거나 원하는 복원 시점이 아닐 경우 복원을 취소할 수 있다. 설정 마법사를 이용하여 복원을 취소해보도록 하자.



시스템 복원 창에서 Undo my last restoration을 선택한다.



취소되는 복원 시점에 대한 정보를 확인 한 후 Next 버튼을 클릭하자.



한번의 재부팅 후 위와 같이 복원이 취소되었음을 알려준다.


6. 기타 사항



시스템 복원은 사용자 개인 생성 파일이나 패스워드 등에 변경을 가하지는 않는다. 문서, 이메일 메시지, 브라우징 히스토리, 비밀번호 등은 시스템 복원을 수행해도 변경되지 않는다. 또한 시스템 복원은 My Documents 폴더에 저장되어 있는 파일도 변경하지 않을 것이며 확장자가 .doc 또는 .xls 등 사용자 생성 데이터 파일도 복원하지 않는다.

만일 자신이 생성한 파일이 복원되지 않도록 하려면 My Documents 폴더에 저장하도록 한다. 또한 시스템 복원 시점 이후에 설치한 프로그램은 복원 시점으로 복원한 후에는 제거되지만 해당 프로그램으로 생성한 파일은 제거되지 않을 것이다.


2010년 8월 3일 화요일

명령어 히스토리 사용하기 - History

명령어 히스토리 사용하기

리눅스를 Gnome이나 KDE와 같은 윈도우 환경이 아닌 터미널 환경에서 주로 사용하는 경우가 많을 것이다. 이때 명령어를 좀 더 효율적으로 입력하는 방법을 알아보도록 하자. 긴 명령어를 짧게 줄이는 alias, 파이프나 세미콜론을 이용하여 여러 명령어를 한번에 실행하는 방법도 있지만 본 포스트에서 history를 이용하여 이미 실행한 명령어를 다시 실행하거나 수정하여 실행하는 방법을 알아보자.


1. 지난 명령어 보기
지난 명령어를 보는 방법은 터미널에서 간단히 history를 실행하는 것이다.


# history


history는 단순히 지난 명령어만을 표시할 것이다. 하지만 명령어가 실행된 시간은 여러가지 면에서 유용할 것이다. 아래와 같이 명령을 실행해보자.


# export HISTTIMEFORMAT='%d %B %Y %T CMD: '

# history

    1  03 August 2010 11:55:07 CMD: ls -al

    2  03 August 2010 11:55:12 CMD: ll

    3  03 August 2010 11:55:20 CMD: exit

    4  03 August 2010 22:48:39 CMD: ll

    5  03 August 2010 22:48:45 CMD: cd /var/www

    6  03 August 2010 22:48:46 CMD: ls

    7  03 August 2010 22:48:48 CMD: cd /var

#
 .bashrc에 HISTTIMEFORMAT='%d %B %Y %T CMD: '을 추가하면 히스토리 출력 형식이 유지될 것이다.

3. 히스토리 크기 조정하기
우분투 10.04는 히스토리 크기에 관한 설정은 .bashrc에 있다. 자신의 .bashrc 파일을 열어보면 아래와 같은 설정을 볼 수 있을 것이다.


HISTSIZE=1000             // 메모리 상에 저장되는 명령어 개수

HISTFILESIZE=1000      // .bash_history에 저장되는 명령어 개수
 

설정을 변경한 후 저장하자. 차후 로그인부터는 변경된 설정이 적용될 것이다.


4. 히스토리 파일 변경하기
명령어 히스토리는 기본적으로 로그아웃시 .bash_history에 저장될 것이다. 보안적인 측면에서 히스토리 파일을 기본 설정 값이 아닌 값으로 설정하는 것이 좋다. 우선 .bashrc 파일을 열어 아래와 같은 항목을 추가한다.


HISTFILE=~/.my_history


다시 로그인 하여 제대로 적용되었는지 확인한다. 이때 다음 로그인시에 위에 설정한 파일이 생성되어 있지 않을 것이다. 이는 설정 후 다시 로그인하게 되면 히스토리 파일명이 재설정되고 다시 로그하웃하여야 히스토리 파일이 생성되기 때문이다.


5. 명령어 다시 실행하기
우선 히스토리에 저장된 지난 명령어를 실행하는 가장 간단한 방법은 터미널 창에서 위 화살표를 이용하는 것이다. 한번씩 누를때 마다 지난 명령어들이 프롬프트에 나타날 것이다. 또한 히스토리 목록에서 번호 또는 상대적 위치를 이용하는 방법이 있다.

아래 명령어를 가장 최근 실행한 명령어라고 가정하자.


$ which firefox

$ make

$ ./foo -f foo.conf
$ vi foo.c bar.c

 

히스토리 라인 번호를 이용하는 방법

터미널에서 history를 실행하면 아래와 같이 출력될 것이다.


 $ history

    1  03 August 2010 13:54:42 CMD: which firefox

    2  03 August 2010 13:54:46 CMD: make

    3  03 August 2010 13:54:52 CMD: ./foo -f foo.conf

    4  03 August 2010 13:54:57 CMD: vi foo.c bar.c

    5  03 August 2010 13:55:28 CMD: history

$


 
각 명령어마다 번호가 매겨져 있어 이 번호를 참조하여 지난 명령어를 다시 실행할 수 있다.


 $ !1   //which firefox가 실행된다

 $ !2         // make가 실행된다

 $ !-4 // 뒤에서 4번째 명령이 실행된다. 여기서는 make가 실행된다

 $ !!         // 마지막 명령이 실행된다


키워드를 이용하는 방법

키워드가 포함된 가장 최근 명령어를 실행하는 방법은 아래와 같다.


 $ !which             // which로 시작하는 명령어를 실행한다. 여기서는 which firefox가 실행된다.

 $ !?firefox     // firefox가 포함된 명령어를 실행한다. 마찬가지로 which firefox가 실행된다.

 $ ^vi^cat^     // 마지막 명령어의 'vi'를 'cat'로 치환한 후 실행한다. 여기서는 cat foo.c bar.c가 된다.


6. 키워드로 검색하여 실행하기

위 키워드를 이용하는 방법에서는 실재로 명령어를 실행하기 전까지 어떤 명령어인지 확인할 수가 없다. 하지만 여기서 설명하는 방법을 사용하면 실행하기 전에 명령어를 확인할 수 있다. 터미널에서 Control+R을 누른 후 키워드를 입력하면 일치하는 최근 명령어가 표시될 것이다.


 $ // Ctrl+R을 누르면 reverse-i-search 프롬프트가 표시된다

(reverse-i-search)`firefox': which firefox       // 'firefox'를 입력하면 검색된 명령어가 표시된다.


검색어를 통해 검색 결과가 표시된 상태에서 오른쪽 혹은 왼쪽 화살표를 누르면 명령어를 수정할 수 있으니 요구에 맞게 수정하여 실행할 수 있다.


7. 지난 명령어 참조하여 실행하기

시스템을 관리하면서 긴 명령어을 실행하다 오타로 에러가 발생할 경우 해당 명령어를 수정하거나 특정 단어를 치환하여 실행할 필요가 있을 수 있다. 이때 Word Designator를 이용하여 지난 명령어를 수정하거나 명령어 인자만을 가져와 실행하는 방법을 살펴보도록 한다.


':' 문자 뒤에 word designator를 지정하여 조건에 맞는 문자열을 가져올 수 있다. Word designator와 modifier를 살펴보면 아래와 같다.


Word designator

0 (숫자 영) 가장 처음 단어. 일반적으로 실행 명령어 자체를 가리킨다.

n n번째 인자

^ 첫번째 인자. 1과 동일한 의미를 가진다.

$ 마지막 인자.

% '?string?' 검색 결과 일치하는 단어

x-y 문자범위. '-y'는 '0-y'과 일치한다.

* 0번째 단어를 제외한 모든 단어. '1-$'과 동일한 의미를 가진다.

x* 'x-$'과 동일한 의미를 가진다.

x- 'x-$'과 동일하지만 마지막 단어는 제외된다.


Modifier

h 경로명에서 마지막 부분을 제거한다.

t 경로명에서 처음 부분을 제거한다.

r .suffix 형태의 접미어를 제거한다.

e .suffix 형태의 접미어를 제외한 나머지 부분을 제거한다.

p 신규 명령어를 표시하고 실행하지 않는다.

q 치환된 단어를 가져오며 치환 작업을 멈춘다.

x 치환된 단어를 가져오며 스페이스, 탭, 개행문자를 기준으로 분리한다.

s/old/new/

old를 new로 최초 한번 치환한다. '/' 대신 다른 특수문자를 사용할 수 있다. 구분 문자를 문자의미 그대로 사용하기 위해서는 백슬래시(\)와 함께 사용한다. new에 '&'가 포함되어 있다면 '&'는 old로 치환될 것이다.

& 이전 치환 작업을 반복한다.

g 모든 일치하는 단어를 치환한다. gs/old/new와 같이 s나 '&'와 함께 사용된다.


modifier는 word designator의 뒤에 ':'를 사용하여 추가한다.


Word designator와 modifier의 사용예


• 소유자 및 그룹 변경하기


# mkdir -p /var/log/www

# chown iprize:iprize !$

chown iprize:iprize /var/log/www


• 백업 파일 만든 후 원본 파일 수정하기


$ touch important

$ cp /home/iprize/work/important !#:1_bak

cp /home/iprize/work/important /home/iprize/work/important_bak

$ ll

total 12

drwxr-xr-x 2 iprize iprize 4096 2010-08-03 22:53 ./

drwxr-xr-x 4 iprize iprize 4096 2010-08-03 22:52 ../

-rw-r--r-- 1 iprize iprize    0 2010-08-03 22:52 important

-rw-r--r-- 1 iprize iprize    0 2010-08-03 22:53 important_bak

-rw------- 1 iprize iprize  693 2010-08-03 18:41 .my_history

-rw-r--r-- 1 iprize iprize    0 2010-08-03 17:23 old

$ vi !^

vi important


 

• 디렉토리 경로 가져오기


$ ls -l /home/iprize/work/important

-rw-r--r-- 1 iprize iprize 0 2010-08-03 22:52 /home/iprize/work/important

$ cd !$:h

cd /home/iprize/work

   
• 파일명 가져오기

$ ls -l /home/iprize/work/important

-rw-r--r-- 1 iprize iprize 0 2010-08-03 22:52 /home/iprize/work/important

$ cp !$:t ~

cp important ~

$ cd

$ ls -alF

total 40

drwxr-xr-x 4 iprize iprize 4096 2010-08-03 22:58 ./

drwxr-xr-x 3 root   root   4096 2010-08-02 16:32 ../

-rw------- 1 iprize iprize  393 2010-08-03 11:54 .bash_history

-rw-r--r-- 1 iprize iprize  220 2010-08-02 16:32 .bash_logout

-rw-r--r-- 1 iprize iprize 3139 2010-08-03 22:52 .bashrc

drwxr-xr-x 2 iprize iprize 4096 2010-08-02 16:33 .cache/

-rw-r--r-- 1 iprize iprize    0 2010-08-03 22:58 important

-rw------- 1 iprize iprize   51 2010-08-03 11:55 .my_history

-rw-r--r-- 1 iprize iprize  675 2010-08-02 16:32 .profile

-rw-r--r-- 1 iprize iprize    0 2010-08-02 16:42 .sudo_as_admin_successful

-rw------- 1 iprize iprize 3208 2010-08-03 22:52 .viminfo

drwxr-xr-x 2 iprize iprize 4096 2010-08-03 22:53 work/

$


 
 참고 자료
1. history MAN page [바로가기]
2. Working with History in Bash [바로가기]