2007년 7월 15일

이맥스에서 지메일의 SMTP 이용하기

나는 오페라 웹 브라우저의 메일 클라이언트인 M2이맥스를 메일 클라이언트로 이용한다. 이맥스를 메일 클라이언트로 활용할 때 지메일의 SMTP를 이용하여 메일을 보낼 수 있는데 이 방법을 소개하고자 한다.

지메일의 받고 보내는 서버는 다음과 같다.

서버 종류설정
받는 메일 서버 (POP3)pop.gmail.com
SSL: 사용함
포트: 995
보내는 메일 서버 (SMTP)smtp.gmail.com (인증 사용)
STARTTLS: 사용함
포트: 465와 587

이것은 지메일에서 POP 신청을 한 후에 이용 가능하다. 만약 이미 지메일을 다른 메일 클라이언트에서 이용하고 있다면 이미 신청을 한 것이다. 그렇지 않다면 지메일 설정에 가서 POP 신청을 하면 된다. 신청을 하면 POP3 뿐만 아니라 SMTP까지 이용할 수 있다.

그렇다면 지메일의 SMTP를 이용하는 방법을 알아보자. 시작 스크립트에 등록하는 방법을 이용할 수도 있고, Customize를 이용하는 방법이 있는데, Customize를 이용하는 방법을 알아보자.

  1. M-x customize-group RET mail RET을 한다.
  2. 사용자 이름 등 필요한 설정을 하고 C-x C-s를 하여 설정을 저장한다.
  3. M-x customize-variable RET send-mail-function RET을 한 뒤 smtpmail-send-it으로 설정한다. 이것을 하지 않으면 sendmail 프로그램을 통하여 메일이 전송된다. C-x C-s로 저장한다.
  4. M-x custoimze-variable RET message-send-mail-function RET을 한 뒤 message-smtpmail-send-it을 설정한다. C-x C-s로 저장한다.
  5. ~/.signature 파일에 자신의 메일 서명을 쓰고 저장한다.
  6. M-x customize-group RET smtpmail RET를 한다.
  7. smtpmail-default-smtp-server와 smtpmail-smtp-server를 smtp.gmail.com 으로 설정한다.
  8. smtpmail-smtp-service를 587로 설정한다.
  9. smtpmail-starttls-credentials에서 State를 누르고 :키를 눌러 LISP 형태로 나타나게 한다. 이렇게 하는 이유는 nil을 입력할 수 있는 방법이 없게 되어 있는 문제점이 있기 때문이다.
  10. 빈 칸에 '(("smtp.gmail.com" 587 nil nil))를 입력한다.
  11. smtpmail-auth-credentials에 Value Menu를 누르고 Repeat를 선택한다.
  12. INS 버튼을 누른 다음에 필요한 내용을 집어 넣는다. 여기서 사용자 이름에는 반드시 @gmail.com까지 포함시켜 완전한 이메일 주소를 넣어야 한다.
  13. 패스워드는 넣지 않으면 보낼 때마다 물어본다.
  14. C-x C-s를 눌러 설정 파일을 저장한다.

만일 패스워드를 매번 입력하는 것이 귀찮지만 이맥스 설정 파일에 패스워드를 집어넣는 것이 마음 편하지 않다면 따로 netrc 형태의 파일을 만들고 거기에 집어넣고 permission을 변경하는 방법이 있다.

임의의 파일을 하나 생성하여 퍼미션을 600으로 준 뒤 다음과 같이 입력하고 저장하고 M-x customize-variable RET smtp-auth-credentials RET를 하고 Value Menu를 눌러 파일 형태를 선택하고 그 파일 이름을 입력하면 된다.

machine smtp.gmail.com login username@gmail.com password PASSWORD

이제 C-x m을 눌러 메일을 작성한 뒤 C-c C-c를 눌러서 메일을 전송하면 된다. 먼저 자기 자신에게 테스트 메일을 보내본다. 언어 설정 등이 제대로 되어 있다면 한글로 보낸 경우에도 깨지지 않고 메일이 잘 전송될 것이다.

VM을 이용하는 사람들은 Bill Clementson's Blog: VM and Gmail Setup for Dummies를 참고한다.

2007년 7월 8일

웹 기반 미디어 관리 시스템 Jinzora

소개

웹기반 미디어 관리 시스템인 Jinzora를 소개한다.

가지고 있는 음악이나 동영상과 같은 미디어 파일들을 웹을 통하여 쉽게 관리할 수 있고, 스트리밍으로 여러 재생기로 재생할 수 있다.

요구 사항

요구 사항 역시 간단하다.

  • PHP 4.2.0 이상 (4.3.0 이상을 권장)
  • MySQL 3.23.32 이상 (SQLite, PostgreSQL 등 다른 DB도 이용가능)
  • 아파치나 IIS (다른 웹서버도 가능하지만 지원하지 않음)

설치

설치 역시 어렵지 않다. STANDALONE과 CMS 설치가 있는데 STANDALONE 설치에 대해서만 써 본다.

  1. 웹 서버 경로에 압축된 파일을 푼다.
  2. 압축을 풀고 sh configure.sh 를 실행한다. 이것은 퍼미션을 설정하는 역할을 하는데, 윈도 사용자는 하지 않아도 된다.
  3. 브라우저를 이용하여 페이지에 접근한다. 즉, index.php에 접근하면 된다.
  4. 브라우저에 나타난 설치 페이지에 필요한 정보를 입력하면 설치가 완료된다.
  5. 설치가 끝나면 설정에 대한 정보를 Jinzora 측에 제공할 수 있는데 정보는 익명으로 전송되며, Jinzora의 개선을 위하여 이용된다.

인코딩 관련

인코딩 관련하여 문제가 있을 수도 있다. Jinzora는 ID3v2를 지원하므로 utf-8로 인코딩 된 태그를 제대로 읽을 수 있다.

설치하기 전에 소스 코드의 일부를 수정하여야 한다. utf-8은 가능하지만 eucKR의 경우 php의 htmlentities() 함수가 eucKR을 지원하지 않으므로 불가능하다. 직접 eucKR용 htmlentities() 함수를 작성할 수 있다면 이것이 가능해진다.

jinzora2/services/services/tagdata/getid3/getid3.php 파일을 수정한다. ID3v2 태그를 변환하는 인코딩이다.

var $encoding = 'UTF-8';    // CASE SENSITIVE! - i.e. (must be supported by iconv())
                            // Examples:  ISO-8859-1  UTF-8  UTF-16  UTF-16BE

만약 코딩 시스템이 eucKR이라면 이것을 EUC-KR로 바꾸어야 한다. 그리고 ID3v1의 인코딩이 eucKR이라면 그 아래쪽에 다음과 같이 해 준다.

  var $encoding_id3v1           = 'EUC-KR';         // Should always be 'ISO-8859-1', but some tags may be written
                                                    // in other encodings such as 'EUC-CN'

EUC-KR을 이용했다면 인코딩 변환시 지원하지 않는 인코딩이라고 오류가 날 것이다. 실제로 iconv() 모듈이 지원하는 것이기 때문에 jinzora2/services/services/tagdata/getid3/getid3.lib.php 파일을 수정하면 된다. 1100번째 줄 근처에 보면 인코딩 목록이 나오는데 여기에 EUC-KR을 추가하여 준다. 그리고 htmlentities() 를 대신할 수 있는 루틴을 작성해 주어야 한다.

  case 'EUCJP':
      $HTMLstring = htmlentities($string, ENT_COMPAT, $charset);
      break;
  case 'EUC-KR':
  case 'EUCKR':
      // 여기에 eucKR용 htmlentities를 작성하여 결과를 $HTMLstring에 넣어준다.
      break;
  case 'UTF-8':

이제 jinzora2/jukebox/jukeboxes/mpd.php 파일을 수정한다. 이것은 파일 이름이 utf-8로 되어 있을 경우에 필요하다.

/* PLAdd()
 *
 * Adds the file <file> to the end of the playlist. <file> must be a track in the MPD database.
 */
function PLAdd($fileName) {
  if ( $this->debugging ) echo "mpd->PLAdd()\n";
  if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLADD,utf8_decode($fileName)))) $this->RefreshInfo();
#  if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLADD,$fileName))) $this->RefreshInfo();
  if ( $this->debugging ) echo "mpd->PLAdd() / return\n";
  return $resp;
}

jinzora2/frontend/display.php 파일을 수정한다. 이것은 웹 페이지의 인코딩을 변경한다. 페이지를 eucKR로 하고 싶다면 euc-kr을 넣어주면 된다. 여기에 들어가는 것은 htmlentities() 의 지원여부와는 상관없다.

#  echo '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">'.  "\n";
  echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'.  "\n";

그 외 설정

선택하는 인터페이스에 따라서 기능이 달라지기도 한다.

음악 플레이를 m3u 등의 파일을 내려받을 수 있게 하는 식으로 할 수도 있고 웹 브라우저에 윈도 미디어 플레이어를 내장시키거나 플래시 미디어 재생기들을 내장시킬 수도 있다. 이것 모두 웹 페이지의 설정 인터페이스를 통하여 가능하다.

앨범 표지나 태그 관리 등의 설정을 할 수 있다.