2009년 11월 12일

telnet 으로 메일 보내기


telnet 프로그램은 원하는 서버와 포트로의 tcp 연결을 지원한다.

예를 들어, $ telnet www.naver.com 80 이라고 입력하면 해당서버의 80번 포트로 TCP 연결을 맺는다.

이러한 기능을 이용하여 SMTP(25번) 서버에 접속하여 메일을 보내고,
간단하게 송신자 조작도 해보자. 친구에게 대통령으로부터 메일이 온거 같은 착각을 하도록...

친구의 메일 주소를 확보한다.
mynaverfriend@naver.com 이라고 하자.
naver.com 의 메일서버의 IP 주소를 알아야 한다. nslookup을 이용한다.

-----------------------------------
nslookup  <-- 입력

Default Server:  fns1.hananet.net
Address:  210.94.0.7

> set type=mx <-- 입력
naver.com <-- 입력
Server:  fns1.hananet.net
Address:  210.94.0.7

Non-authoritative answer:
naver.com       MX preference = 10, mail exchanger = mx2.naver.com
naver.com       MX preference = 10, mail exchanger = mx3.naver.com
>
-----------------------
위 정보로부터 @naver.com으로 메일을 발송하면 mx2 or mx3.naver.com으로 들어간다는 것을 알 수 있다.

이제 telnet을 사용할 때가 되었다.
(파란색 부분이 실제 입력하는 부분임)
-----------------------------------------------------------

$ telnet mx3.naver.com 25
Trying 202.131.27.102...
Connected to mx3.naver.com.
Escape character is '^]'.
220 rcvmail6.nm2.naver.com ESMTP Terrace MailWatcher 5.40.2008012515 (for naver.com)
ehlo hi
250-rcvmail6.nm2.naver.com Pleased to meet you
250-SIZE 20480000
250-8BITMIME
250-HELP
250-PIPELINING
250 ENHANCEDSTATUSCODES
mail from: <president@cwd.go.kr>
250 2.1.0 Sender Ok
rcpt to: <mynaverfriend@naver.com>
250 2.1.0 Recipient Ok
data
354 Start mail input; end with "."
From: 대한민국대통령 <president@cwd.go.kr>
To: <mynaverfriend@naver.com>
Subject: 대통령으로부터...
                                             <=== 여기에 반드시 빈줄이 필요하다. 이 이후부터가 메일 내용이 된다.
You are a good man.
Thanks a lot.


.    <=== 여기에 점을 하나 찍었다. 이 점으로 내용의 끝을 알려준다.(점찍고 엔터치고...)
250 2.5.0 Message accepted for delivery
quit   <=== 종료하겠다는 의미로...
221 2.0.0 rcvmail6.nm2.naver.com Service closing transmission channel
Connection closed by foreign host.
-------------------------------------------------------------------------------------

실제로 메일 잘 도착했는지 확인해보자.
아래 그림과 같이 대통령으로부터 메일이 온 것처럼 보인다.









SMTP와 메일의 MIME Type을 좀 공부하면 쉽게 조작 메일을 보낼 수 있다.



2009년 11월 6일

ssh 터널링을 이용하여 외부서버에서 내부서버로 파일 복사하기(자동 백업하기)


목적: 외부 파일을 회사내의 윈도우 PC에 정기적으로 백업하기

먼저, 다른 필요에 의해 윈도우XP안에 guest OS로 우분투를 설치했다.
vmware player를 이용하면 어렵지 않게 윈도우안에 우분투를 설치할 수 있다.
그런 다음에 윈도우 안에 백업디렉토리르 생성하고 우분투에서 접근할 수 있게 마운트 해둔다.
그러기 위해서는 윈도우XP안에 공유폴더를 생성하고 (여기서는 share 라는 이름을 사용) smbfs를 이용하여 마운트를 수행한다.
) $ mount -t smbfs -o user=win_user_name -o rw //192.168.88.2/share /mnt/win_share
윈도우 공유폴더 시에 접근권한 준 사용자의 패스워드를 입력하면 아래와 같이 마운트에 성공한다.
위와 같이 192.168.88.2는 우분투에서 보면 자신의 Parent OS이다. 우분투에서만 접근 가능한 내부 IP이다.
(실제 윈도우 IP는 따로 있음)

$df h
(중략)
//192.168.88.2/share  181G  106G   76G  59% /mnt/win_share

시스템 구성은 아래와 같다.

윈도우(guest OS: 우분투) --- 외부서버 (우분투 터미널에서 외부서버에 ssh 터널링으로 접속한다.)
다음의 명령어를 사용한다.
$ ssh 외부서버IP -R 3336/localhost/22

이렇게해서 외부서버에 로그인하게 되면 외부서버에서 localhost 접근으로 3336 포트로 ssh 로그인을 하면 내부의 우분투로 접근할 수 있다.

, 외부서버에서 ssh p 3336 localhost 라고 입력하면 우분투 로그인 화면을 만날 것이다.

성공이 되면 서로간의 key 교환을 통해 패스워드 없이 로그인 되도록 설정하자. (~/.ssh/authorized_keys 파일을 이용하면 됨)

여기까지 성공하면 이제 외부서버에 다음과 같은 명령으로 윈도우의 share 폴더에 파일을 복사할 수 있다.

$ scp P 3336 myTestFile1 localhost:/mnt/win_share/

본인은 이러한 방법으로 외부서버에 생성한 ebs mp3 파일을 회사의 PC로 매일 백업 받고 있다.