Roundcube 설치 및 연동하기
Roundcube는 웹 기반의 이메일 클라이언트로 사용자가 웹 브라우저를 통해 메일을 송수신하고 관리할 수 있게 해 줍니다.
이미 만들어진 풍부한 기능과 플러그인들이 있어 확장성이 높습니다.
이와 유사한 프로그램에는
Outlook, Gmail, Thunderbird, Apple Mail, Zimbra 등이 있습니다.
설치환경
centos7 - apache2.4, mysql5.5, php8.2
ubuntu22.04 - apache2.4, mysql8, php8.1
1. Roundcube설치
php의 버전별로 roundcube의 버전도 달라집니다. 해당 사항은 라운드큐브의 릴리즈 정보를 직접 확인하셔야 합니다.
Roundcube Webmail News
This is the second service release to update the new stable version 1.6. It provides a bunch of small fixes and improvements after getting your feedback from the 1.6.0 and 1.6.1 release. See the full changelog in the release notes on the Github download pa
roundcube.net
php8.1 이상이므로 1.6.6을 설치하겠습니다.
# 압출파일 다운로드 및 압출 해제
cd /usr/local/src
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz
tar zxvf roundcubemail-1.6.6-complete.tar.gz
# 웹 DocumentRoot 생성
mkdir -p /home/postmaster
cp -arpR /usr/local/src/APM_Setup/roundcubemail-1.6.6 /home/postmaster
mv /home/postmaster/roundcubemail-1.6.6 /home/postmaster/webmail
chmod 755 -R /home/postmaster
DocumentRoot는 서비스 환경에 따라 바꿔주시면 됩니다.
2. vhost 등록
환경에 맞춰 설정해 주시면 됩니다.
# centos
<VirtualHost *:80>
DocumentRoot "/home/postmaster/webmail"
ServerName mail.domain.com
ErrorLog "/usr/local/apache/logs/mail_error_log"
CustomLog "/usr/local/apache/logs/mail_access_log" combined
</VirtualHost>
# ubuntu
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mail.domain.com
DocumentRoot /home/postmaster/webmail
ErrorLog ${APACHE_LOG_DIR}/mail-error.log
CustomLog ${APACHE_LOG_DIR}/mail-access.log combined
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/fullchain.pem
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
</IfModule>
centos는 httpd.conf에 기본설정이 되어있고, ubuntu에는 안되어있어 기본 형식의 차이가 있습니다. 참고해 주시기 바랍니다.
3. mysql
db생성 및 계정 생성, 권한 부여
# MySQL 8미만
create database roundcubemail;
grant all privileges on roundcubemail.* to 'roundcube'@'%' identified by 'passwd';
grant all privileges on roundcubemail.* to 'roundcube'@'localhost' identified by 'passwd';
flush privileges;
# MySQL 8이상
create database roundcubemail;
create user 'roundcube'@'localhost' identified by 'passwd';
create user 'roundcube'@'%' identified by 'passwd';
grant all privileges on roundcubemail.* to 'roundcube'@'%' ;
grant all privileges on roundcubemail.* to 'roundcube'@'localhost';
flush privileges;
생성된 db에 설정 쿼리 실행하기
cd /home/postmaster/webmail/SQL
mysql -u root -p roundcubemail < mysql.initial.sql
에러발생 트러블 슈팅
ERROR 1071 (42000) at line 51: Specified key was too long; max key length is 767 bytes
vi /etc/my.cnf
[mysqld]
# 설정 메뉴에 추가 또는 변경
innodb_file_format=Barracuda
innodb_file_per_table=on
innodb_large_prefix=1
innodb_file_format_max=Barracuda
만약 이렇게 해도 설정값이 안 바뀐다면
# 설정값 확인
show global variables like "innodb_file_per_table";
# 설정값 변경
set global innodb_file_per_table = on;
위의 명령어를 활용하여 직접 바꿔주시면 됩니다.
4. roundcube 설정
vhost로 설정한 domain.com/installer로 접속합니다.
centos7 일 경우 앞에 진행했던 apache 소스 설치대로 진행하셨다면
vi /usr/local/apache/conf/php.ini
에서 extension의 주석을 해제해주시기만 하면 됩니다.
ubuntu는 각 모듈들을 설치해야 합니다.
apt install -y php-dom php-xml php-intl php-curl php-ldap php-gd php-imagick php-xmlwriter php-zip
vi /etc/php/8.1/apache2/php.ini
# 이후 extension에 주석된거 해제
이후 완료된 페이지입니다.
하단 좌측 next를 클릭하면 수정을 ui환경으로 쉽게 하는 페이지가 나옵니다.
3번에 진행했던 작업으로 db를 생성하고, 테이블이 만들어졌기 때문에 id, passwd를 입력하여 db를 연동해 주시면 됩니다.
IMAP, SMTP 연결
IMAP(s)를 설정할 때, 143 포트로 연결을 하고 만약 STARTTLS로 접속을 원한다면 앞에 tls://를 붙이면 됩니다.
993 포트로 연동 시 계속 에러가 나는데 해결을 못했습니다...
그래도 이렇게 설정을 하면 143 포트로 해도 imap 테스트 로그를 보면 STARTTLS로 접속하는 것을 확인했습니다.
SMTP도 마찬가지입니다,
이제 최하단 왼편에 UPDATE CONFIG를 클릭하면
roundcube의 conf를 생성하고, save in /tmp를 눌러 conf파일을 저장합니다.
저장된 conf파일을 roundcube의 conf파일 디렉터리에 넣어주고
cp -arp /tmp/config.inc.php /home/postmaster/webmail/config/
바로 밑에 있는 CONTINUE를 클릭합니다.
테스트단계
테스트 전 logs파일과 temp파일의 권한이 있는지, DB와 연동이 잘 되어있는지, 테스트 파일 유형을 감지합니다.
파일 수정 권한이 없다면
cd /home/postmaster/webmail
chmod 707 logs temp
파일 유형 감지 테스트가 안되었다면
ll /usr/local/apache/conf/mime.types
vi /home/postmaster/webmail/config/config.inc.php
$config['mime_types'] = '/usr/local/apache/conf/mime.types';
를 작성하여 f5를 눌러주시면 적용이 됩니다.
smtp와 imap 테스트 시작 전
apache, mysql, php연동 또는 fpm프락시, senmail, dovecot의 기능이 정상적으로 작동하는지 확인하고 진행합니다.
test를 진행 후 OK사인을 받으면 다음단계로 진행하면 됩니다.
smtp가 안된다면 smtp의 로그를 확인하고, login방식을 바꾸려면
vi /home/postmaster/webmail/config/config.inc.php
# smtp 로그인 방식 변경
$config['smtp_auth_type'] = 'PLAIN';
# imap tls적용
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
),
);
# 로그와 디버깅 파일 생성
$config['imap_log'] = true;
$config['imap_debug'] = true;
를 활용하여 환경에 맞게 수정해 주시면 됩니다.
마지막으로 해당 installer의 페이지를 삭제합니다.
rm -rf /home/postmaster/webmail/installer/
5. 접속
이제 domain.com으로 접속하여 mail계정의 정보로 로그인하면 마무리입니다.
틀린 부분이 있거나 진행하시다 모르는 부분이 있다면 댓글을 남겨주세요!
감사합니다.