경고 : 이 방법은 정확한 해결책이 아닐 수 있다. 꼭 필요한 경우에만 적용하자.

roundcube 를 쓰면서 좀 불편한 점이 한글메일이 간혹 깨지는 경우였다.
깨지는 경우는 roundcube 가 이상있는 것이 아니라, 보내는 쪽에서 메일의 헤더에 charset 을 지정하지 않은 경우이다. 대부분 메일 규칙을 지키지 않는 아주 불량한 메일이라고 봐도 된다.

그래도 간혹 봐야 하는 경우가 생기니. 정부(관공서)메일에서도 심심찮게 발견된다.
간단하게나마 몇 부분(파일2개)을 수정해서 한글을 볼 수 있게 해보자.

1) config/main.inc.php ( 라인 수는 다를 수 있다. )
497    //$rcmail_config['default_charset'] = 'ISO-8859-1';
498    $rcmail_config['default_charset'] = 'EUC-KR';
기본 ISO-8859-1 으로 지정된 것을 EUC-KR 로 지정했다.(위처럼 주석처리하거나 바꿔준다)

2) program/include/rcube_imap.php
2369 라인 정도 ( _set_part_filename 함수 내 )
if( $part->charset == 'us-ascii' ) $part->charset = 'euc-kr';

 // decode filename
if (!empty($filename_mime)) {
    $part->filename = rcube_imap::decode_mime_string($filename_mime,
    $part->charset ? $part->charset : ($this->struct_charset ? $this->struct_charset :
    rc_detect_encoding($filename_mime, $this->default_charset)));
}
else if (!empty($filename_encoded)) {
    // decode filename according to RFC 2231, Section 4
    if (preg_match("/^([^']*)'[^']*'(.*)$/", $filename_encoded, $fmatches)) {
    $filename_charset = $fmatches[1];
    $filename_encoded = $fmatches[2];
    }
    $part->filename = rcube_charset_convert(urldecode($filename_encoded), $filename_charset);
}


2449 라인 정도.( &get_message_part 함수내 )
if ($body && $o_part->charset
    && preg_match('/^(text|message)$/', $o_part->ctype_primary)
) {
    if( $o_part->charset == 'us-ascii' ) $o_part->charset = 'euc-kr';
    $body = rcube_charset_convert($body, $o_part->charset);
}

imap 으로부터 charset이 지정되지 않으면 us-ascii 로 지정되는데, 이런 것들을 euc-kr 메일로 가정하는 것이다. roundcube 는 내부적으로 UTF-8 로 변환한다.
더 하부적으로 내려가서 바꿔줄수도 있을 듯 한데. 일단 여기까지.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번 roundcube 0.3 버전 을 설치했었는데, 그동안 버전업그레이드 되었다.

업그레이드 방법을 간단히 정리한다.

1. http://roundcube.net/download
여기서 새버전을 다운로드 한다.

2. 압축을 풀고. 다음 파일,디렉토리들을 복사한다
index.php
bin/
SQL/
installer/
plugins/
program/
skins/

3. 웹메일주소/installer/ 로 접속해서 3단계의 test config 메뉴를 클릭해 설정을 확인한다.
DB 스키마 가 변경되고, 변경된 설정값을 수정한다.
config/ 의 main.inc.php , db.inc.php

DB 스키마는 SQL/mysql.upgrade.sql 을 참조해서 변경한다.
자신의 버전을 확인하고, 그 버전 윗부분은 제거하고
mysql roundcube < mysql.upgrade.sql
등의 명령으로 변경된 DB 스키마를 적용한다.

다시 test config 를 해보면 모두 ok 인 것을 확인한다.


ps. 아직 버전이 0.5 이긴 해도 꽤 완성도가 높다.
 다만 한글관련해서 몇가지 오류가 발생하는 부분도 있다.
 그런 부분을 수정해서 정리해야 겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번에 squirrelmail 을 사용하는 방법을 짧게나마 설명했었다.
이번에는 roundcube 를 써보자. (http://roundcube.net)

먼저 다운로드 하자.
http://roundcube.net/download  에서 최신버전을 다운받는다.(현재 0.3 stable)
다운로드하고 서버에 올리거나, 다운로드 주소를 찾아서 서버에서 wget 으로 직접 내려받는다.
# wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.3-stable/roundcubemail-0.3-stable.tar.gz?use_mirror=jaist
다운후에 압축을 풀고(tar xvzf ...tag.gz ) 적당한 위치에 설치한다.
참고로, squirrelmail 이 사용하던  /usr/share 로 위치를 정했다.
정확한 위치는 /usr/share/roundcube
# tar xvzf roundcubemail-0.3-stable.tar.gz
# chown root.root roundcubemail-0.3-stable
# cp roundcubemail-0.3-stable /usr/share/roundcube
apache 설정도 squirrelmail 방식으로 처리했다.

/etc/httpd/conf.d 에 roundcube.conf  파일을 만들고, 내용은 다음과 같이 입력했다.
Alias /roundcube /usr/share/roundcube
웹서버를 재실행해주면 다음부터  mymail.com/roundcube  로 접속할 수 있다.


DB 설정을 해준다.
라운드큐브 는 다람쥐메일과는 다르게 설정등을 저장하기 위해 DB 를 사용한다.
mysql , postgresql 등을 사용할 수 있다.
별도의 DB 를 만들어주거나, 자신이 사용하던 DB 설정을 사용할 수 있다.

별도로 만든다면 다음처럼 만들어 준다.
mysql> create databases roundcube;
mysql> GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost'  IDENTIFIED BY '계정암호' WITH GRANT OPTION ;
mysql> FLUSH PRIVILEGES;


다음과 같은 테이블을 사용하니, 사용하던 DB 인 경우 테이블명이 겹치지 않나 주의한다.
| cache              
| contacts           
| identities         
| messages       
| session            
| users              
설정값은 아래의 자동설정시 값을 입력한다.


기본설정을 해보자.
자동설정은 mymail.com/roundcube/installer  접속해서 단계적으로 설정한다.

사전패키지,extension 등을 체크한다.
추가 패키지가 필요한 경우 설치해준다.
yum install php-gd php-mysql php-mcrypt
dom 패키지는 php-xml 을 설치한다.
yum install php-xml
php 를 업그레이드하는것을 권장한다.


IMAP 설정 부분은
$rcmail_config['default_host'] = 'localhost';
정도로 입력해준다.

SMTP 부분도
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_auth_type'] = 'PLAIN';
정도를 주의해 준다.(smtp_auth_type 은 직접 main.inc.php 를 수정한다.

언어설정 하는 부분은 (ko_KR) 으로 지정해준다.
$rcmail_config['language'] = 'ko_KR';

기타 자세한 설정은 다음을 참조한다.
http://trac.roundcube.net/wiki/Howto_Config


설정을 마친후에는

해당 설정파일을 복사하거나 다운로드 해서 config/ 디렉토리에 넣어준다.
(main.inc.php , db.inc.php)


그리고 다음단계에서 설정을 체크해서 이상이 없는지 확인한다.
DB 접속이 이상없는지 확인하고, 기본 DB schema 를 생성해준다.

SMTP , IMAP 의 설정을 확인해 본다.

설정파일까지 복사/테스트 한 후 웹메일에 접속해본다. ( mymail.com/roundcube )

완료. 로그인하고 사용하자.
로그인 화면이 반긴다. 심플하다 못해 썰렁하지만... 로그인하면.
제법 그럴듯한 웹메일 인터페이스 화면을 볼 수 있다.

버전이 0.3 버전밖(?)에 안되서 큰 기대를 안했는데, 꽤 쓸만한 완성도를 보인다.
써보고 괜찮으면, 다람쥐메일은 작별을 고해야 할 듯 하다. ^^


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,