admin write
blogblogblogbloglocation loglocation logtag listtag listguest bookguest book
rss feed

RoundCube Webmail

2008. 4. 16. 12:35
RoundCube Webmail은 오픈소스중 알려져 있는 많은 웹메일 중에 하나이다.

나 또한 최근까지 다람쥐 메일이라고 불리우는 Squirrel Mail을 사용했는데,
오랫동안 개발되어 온 만큼 많은 플러그인이 존재하기 때문에 여러 기능이 있다는 강점이 있으나
역시 보기좋은 떡이 먹기에도 좋다고.. 90년대틱한 디자인이 영 마음에 안들었었다.

그러다 어느날 우연히 RoundCube 라는 프로그램을 발견했고,
잠깐의 삽질 끝에 깔끔한 디자인의 괜찮은 프로그램을 사용할 수 있게 되었다.
또한 또하나의 강점으로 Ajax를 지원하며, UTF8이 기본으로 지원되고 있다.

그러나 아직 개발이 꾸준히 일어나고 있는 중이라 그런것인지
stable 이라는 딱지에 맞지 않게 버그도 심심치 않게 발견할 수 있었고,
가장 큰 문제점인 euc-kr이 제대로 지원되지 않는다는 문제가 있었다.

한글 문제는 곧 케릭터셋 문제에 있으리라 확신했고, 고쳐보고자 마음먹고 소스를 뒤적뒤적...
그러다가 디폴트 케릭터셋 처리 코드에 버그가 있음을 발견했고,
이 문제를 roundcube.net (http://trac.roundcube.net/ticket/1484991) 에
문제되는 부분과 패치된 부분의 코드를 현재 포팅해놓은 상태이다.

그 외에도 euc-kr을 처리하려면 패치를 조금 더 해야되는데..
생각보다 꽤 많은 코드에 ISO-8859-1 값이 Static으로 박혀 있었다.
물론 몽땅 다 replace 시켜주면 되겠지만.. 나의 귀차니즘이 어디가겠나?-_-
최소한의 패치로 처리할 수 있는 방법을 선택했다.
현재 tini4u.net에서 테스트중이고, 별 문제는 없는것 같은데.. 시간이 지나봐야 알 것 같다.

아래는 euc-kr 처리를 위한 패치부분이다.
FileName: roundcube/program/include/rcube_imap.php

--- Original Code
+++ Patch Code

=> Line number : 217
-  $this->default_charset = $ch;
+  $this->default_charset = $cs;

=> Line number : 2362
- return rcube_charset_convert($input, !empty($fallback) ? $fallback : 'ISO-8859-1');
+ return rcube_charset_convert($input, !empty($fallback) ? $fallback : 'euc-kr');

euc-kr 패치가 적용되기 전 화면
사용자 삽입 이미지


euc-kr 패치가 완료된 후 화면
사용자 삽입 이미지

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 윤용섭
    2008.04.21 15:39
    댓글 주소 수정/삭제 댓글
    한글파일명 첨부해서 메일발송 잘 되던가요?
    저도 몇가지 테스트를 해 보았는데, 이게 제일 큰 문제인것 같아요.(나만 그런가?)
    • 2008.05.03 19:35 신고
      댓글 주소 수정/삭제
      음.. 그러네요
      한글명으로 된 파일 전송이 제대로 이루어지지 않는군요
      시간날때 픽스해봐야겠습니다
  2. 2008.05.08 18:21
    댓글 주소 수정/삭제 댓글
    /program/steps/mail/get.inc

    파일에 아래 부분처럼 수정하면 됩니다~ 대략 107 라인
    UTF8 문제였음! ^^
    수정하는김에 header("Content-Length: {$part->size}";); 도 추가했어요.
    티니님덕에 한글부분은 쉽게 수정했네요. 감사~~


    ///////////////////////////////////////////////////////////
    // Fixed by DongMan

    $charset = $part->charset;
    if($charset == "";) $charset = $IMAP->default_charset;

    $filename = $part->filename;
    if($charset != "UTF-8";) $filename = iconv("UTF-8", $charset, $filename);

    header(sprintf('Content-Disposition: %s; filename="%s";',
    $_GET['_download'] ? 'attachment' : 'inline',
    $filename ? $filename : "kongpy.$ctype_secondary";));
    header("Content-Length: {$part->size}";);

    ///////////////////////////////////////////////////////////
    /*
    header(sprintf('Content-Disposition: %s; filename="%s";',
    $_GET['_download'] ? 'attachment' : 'inline',
    $part->filename ? abbreviate_string($part->filename, 55) : "roundcube.$ctype_secondary";));
    */
  3. 윤용섭
    2008.05.16 12:07
    댓글 주소 수정/삭제 댓글
    감사합니다. 무적가이님 대충해결된 것 같은데, 브비.ppt 라는 파일을 첨부하면 파일명이 제대로 보내지지가 않는 군요. 이 문제도 좀 해결해주시면 고맙겠습니다.
  4. 2008.08.21 06:35
    댓글 주소 수정/삭제 댓글
    http://my.oops.org/120 에 0.1.1 용 패치를 추가해 놓았습니다. 테스트 해 본 결과로는 한글 파일이 잘 처리되는 것 같습니다.

    다만, 전 get.inc 에 따로 패치를 하지 않았습니다. :-) 웹이 UTF-8 이 아닐 경우에 문제가 되는 것이 아닐까 생각중.. (위의 패치를 잠깐 본 소감으로는..)