웹메일 설정 · 4 min read · Dec 25, 2025

SquirrelMail에서 RoundCube로 변경하기 - ISPConfig3 서버에서

SquirrelMail에서 RoundCube로 변경하기 - ISPConfig3 서버에서

이 튜토리얼은 The Perfect Server - CentOS 5.4 x86_64 [ISPConfig 3]를 설치한 후 SquirrelMail 웹메일 클라이언트를 선호하지 않는 분들을 위해 작성되었습니다. SquirrelMail을 더 시각적으로 매력적이고 관리하기 쉬운 RoundCube로 교체하는 방법에 대한 가이드를 제공합니다.

중요! 저는 시도해보지 않았지만… SquirrelMail 설치 방법은 최근 CentOS 5.x Perfect Server Howtos에서 변경되지 않았습니다. 이 튜토리얼은 이전 버전의 CentOS 및 다른 리눅스 배포판에도 유효하다고 생각합니다. 시스템에서 사실상 아무것도 변경되지 않습니다.

1단계.

RoundCube를 다운로드하고 압축을 풀고 불필요한 파일을 제거한 후 설치 폴더를 준비합니다. roundcubemail-0.3.1을 마지막으로 사용 가능한 버전으로 교체하세요.

cd /usr/share  
wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.3.1/roundcubemail-0.3.1.tar.gz?use_mirror=ignum  
tar -vxf roundcubemail-0.3.1.tar.gz  
rm -fr roundcubemail-0.3.1.tar.gz  
cd roundcubemail-0.3.1  
rm -fr installer  
chmod 755 temp logs  
cd config  
cp db.inc.php.dist db.inc.php  
cp main.inc.php.dist main.inc.php

2단계.

이제 RoundCube용 데이터베이스를 생성해야 합니다. 저는 ISPConfig를 사용하여 데이터베이스를 생성했습니다. ISPConfig 데이터베이스 목록에 표시되기를 원하기 때문입니다. 이것은 제 데이터베이스 샘플입니다:

데이터베이스 이름: roundcubedb  
데이터베이스 사용자: roundcubeuser  
데이터베이스 비밀번호: 12345

보안을 위해 이 값을 변경하세요.

3단계.

RoundCube를 수동으로 설치해야 합니다. RoundCube 설치 프로그램을 사용하면 PHP 버전 오류가 발생하고 설치가 계속되지 않습니다. db.inc.php 파일을 편집하고 다음 줄을 찾아 ISPConfig에서 생성한 데이터로 수정합니다.

vi db.inc.php

다음 줄을 변경하세요:

[...]  
$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';  
[...]  

다음과 같이:

[...]  
$rcmail_config['db_dsnw'] = 'mysql://roundcubeuser:12345@localhost/roundcubedb';  
[...]  

main.inc.php 파일에서도 이러한 설정을 변경하세요:

vi main.inc.php

다음 줄을 변경하세요:

[...]  
$rcmail_config['message_cache_lifetime'] = '10d';  
[...]  
$rcmail_config['default_host'] = '';  
[...]  
$rcmail_config['smtp_server'] = '';  
[...]  
$rcmail_config['session_lifetime'] = 10;  
[...]  
$rcmail_config['create_default_folders'] = FALSE;  
[...]  

다음과 같이:

[...]  
$rcmail_config['message_cache_lifetime'] = '30m';  
[...]  
$rcmail_config['default_host'] = 'localhost';  
[...]  
$rcmail_config['smtp_server'] = '%h';  
[...]  
$rcmail_config['session_lifetime'] = 30;  
[...]  
$rcmail_config['create_default_folders'] = TRUE;  
[...]  

4단계.

이제 RoundCube 데이터베이스에 테이블을 수동으로 생성해야 합니다. roundcubemail-0.3.1/SQL/ 폴더에서 mysql.initial.sql 파일을 찾아 그 내용을 복사합니다:

-- RoundCube Webmail 초기 데이터베이스 구조
/*!40014  SET FOREIGN_KEY_CHECKS=0 */;
-- 테이블 구조 `session`에 대한
CREATE TABLE `session` (
 `sess_id` varchar(40) NOT NULL,
 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `ip` varchar(40) NOT NULL,
 `vars` mediumtext NOT NULL,
 PRIMARY KEY(`sess_id`),
 INDEX `changed_index` (`changed`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- 테이블 구조 `users`에 대한
CREATE TABLE `users` (
 `user_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `username` varchar(128) NOT NULL,
 `mail_host` varchar(128) NOT NULL,
 `alias` varchar(128) NOT NULL,
 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `last_login` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `language` varchar(5),
 `preferences` text,
 PRIMARY KEY(`user_id`),
 INDEX `username_index` (`username`),
 INDEX `alias_index` (`alias`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- 테이블 구조 `messages`에 대한
CREATE TABLE `messages` (
 `message_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
 `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
 `del` tinyint(1) NOT NULL DEFAULT '0',
 `cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `idx` int(11) UNSIGNED NOT NULL DEFAULT '0',
 `uid` int(11) UNSIGNED NOT NULL DEFAULT '0',
 `subject` varchar(255) NOT NULL,
 `from` varchar(255) NOT NULL,
 `to` varchar(255) NOT NULL,
 `cc` varchar(255) NOT NULL,
 `date` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `size` int(11) UNSIGNED NOT NULL DEFAULT '0',
 `headers` text NOT NULL,
 `structure` text,
 PRIMARY KEY(`message_id`),
 INDEX `created_index` (`created`),
 INDEX `index_index` (`user_id`, `cache_key`, `idx`),
 UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`),
 CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
   /*!40008
     ON DELETE CASCADE
     ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- 테이블 구조 `cache`에 대한
CREATE TABLE `cache` (
 `cache_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL ,
 `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `data` longtext NOT NULL,
 `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
 PRIMARY KEY(`cache_id`),
 INDEX `created_index` (`created`),
 INDEX `user_cache_index` (`user_id`,`cache_key`),
 CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
   /*!40008
     ON DELETE CASCADE
     ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- 테이블 구조 `contacts`에 대한
CREATE TABLE `contacts` (
 `contact_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
 `del` tinyint(1) NOT NULL DEFAULT '0',
 `name` varchar(128) NOT NULL,
 `email` varchar(128) NOT NULL,
 `firstname` varchar(128) NOT NULL,
 `surname` varchar(128) NOT NULL,
 `vcard` text NULL,
 `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
 PRIMARY KEY(`contact_id`),
 INDEX `user_contacts_index` (`user_id`,`email`),
 CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
   /*!40008
     ON DELETE CASCADE
     ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-- 테이블 구조 `identities`에 대한
CREATE TABLE `identities` (
 `identity_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `del` tinyint(1) NOT NULL DEFAULT '0',
 `standard` tinyint(1) NOT NULL DEFAULT '0',
 `name` varchar(128) NOT NULL,
 `organization` varchar(128) NOT NULL DEFAULT '',
 `email` varchar(128) NOT NULL,
 `reply-to` varchar(128) NOT NULL DEFAULT '',
 `bcc` varchar(128) NOT NULL DEFAULT '',
 `signature` text,
 `html_signature` tinyint(1) NOT NULL DEFAULT '0',
 `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
 PRIMARY KEY(`identity_id`),
 CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
   /*!40008
     ON DELETE CASCADE
     ON UPDATE CASCADE */
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;

이제 http://www.yourdomain.tld:8080/phpmyadmin로 가서 MySQL 사용자 이름과 비밀번호를 입력합니다. RoundCube 데이터베이스 “roundcubedb”를 선택하고 SQL 탭으로 이동하여 텍스트 상자에 mysql.initial.sql에서 복사한 텍스트를 붙여넣고 쿼리를 실행합니다. RoundCube Webmail을 성공적으로 설치했습니다.

5단계.

RoundCube를 기본 웹메일로 설정하고 싶습니다. SquirrelMail은 사용하지 않으며, 고객이 어떤 변경도 겪지 않기를 원합니다. 다음과 같이 진행합니다: 이 단계는 각자가 필요에 맞게 조정할 수 있습니다. SquirrelMail을 유지하고 RoundCube에 대한 새로운 별칭을 생성할 수 있습니다.

cd /usr/share  
mv squirrelmail squirrelmail.bak  
mv roundcubemail-0.3.1 squirrelmail

6단계.

마지막으로 http://www.yourdomain.tld:8080/webmail로 가서 로그인하여 이 귀여운 웹메일을 즐기세요.

정보:

  • RoundCube에 대한 더 많은 정보: http://www.roundcube.net
  • Falko의 Howto The Perfect Server - CentOS 5.4 x86_64 [ISPConfig 3]

특별 감사:

  • Falko. 당신의 Perfect Server Howtos는 제가 리눅스 서버를 시작하는 데 많은 도움이 되었습니다.
  • 제 여자친구 Naty. 그녀가 텍스트 번역을 해주었습니다.
  • HowtoForge 팀에게 훌륭한 작업에 감사드립니다.
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.