Mail/RoundCubeMail

Roundcube mail 설정

서버엔지니어 2023. 3. 10.
728x90

Roundcube 란?

RoundcubeMail은 IMAP 클라이언트 기반 응용프로그램으로 다국어 사용자 인터페이지를 지원합니다. 또한 전자메일,주소록,MIME,편지함설정,메세지검색,맞춤법검사등 많은 기능을 제공합니다

PCRE, DOM, Session, JSON, XML, PDO_MYSQL 모듈은 필수적으로 설치가 되어 있어야 하며 PHP를 이용하며 MYSQL 데이터베이스를 필요로 합니다. XHTML과 CSS2를 사용하여 스킨을 만들수 있어 사용자 인터페이스를 완벽히 지원 가능한 웹메일 솔루션 입니다.

설치 환경은 다음과 같습니다

Centos 7 apache 2.4.54

mysql 5.7.41

php-7.2.34

sendmail-8.14.7-6.el7.x86_64

dovecot-2.2.36-6.el7.x86_64

5개가 설치되어 있어야한다.

apache -> mysql -> php -> sendmail -> dovecot -> roundcube mail 이렇게 순서가 되야한다.

하나라도 빠져있으면 안된다.

라운드큐브 버전에 따른 php 버전 요구 사항이다.

Version 1.6

  • Initial release: TBC
  • PHP support: >=7.3 <=8.1

Version 1.5

  • Initial release: 18 October 2021
  • PHP support: >=5.5 <=8.0

Version 1.4

  • Initial release: 09 November 2019
  • PHP support: >=5.4 <=7.4

Version 1.3

  • Initial release: 26 June 2017
  • PHP support: >=5.4 <=7.3

Version 1.2

  • Initial release: 21 May 2016
  • PHP support: >=5.3 <=7.0

Version 1.1

  • Initial release: 07 February 2015
  • PHP support: >=5.3 <=5.6

Version 1.0

  • Initial release: 05 April 2014
  • PHP support: >=5.2 <=5.5

Version 0.9

  • Initial release: 15 April 2013
  • PHP support: >=5.2 <=5.4

Version 0.8

  • Initial release: 06 August 2012
  • PHP support: >=5.2 <=5.4

Version 0.7

  • Initial release: 29 December 2011
  • PHP support: >=5.2 <=5.3

Version 0.6

  • Initial release: 29 September 2011
  • PHP support: >=5.2 <=5.3

Version 0.5

  • Initial release: 12 January 2011
  • PHP support: >=5.2 <=5.3

Version 0.4

  • Initial release: 07 August 2010
  • PHP support: >=5.2 <=5.3

Version 0.3

  • Initial release: 04 September 2009
  • PHP support: >=5.2 <=5.3

Version 0.2

  • Initial release: 30 December 2008
  • PHP support: 5.2

Version 0.1

  • Initial release: 05 March 2008
  • PHP support: 5.2

중요한 설정들

vi /etc/hosts

===============================================================

IP주소(example : 123.123.123.123) naruto.tk

===============================================================

vi /etc/mail/access

===============================================================

Connect:naruto.tk RELAY

===============================================================

vi /etc/mail/virtusertable

===============================================================

guest1234@naruto.tk guest1234

===============================================================

 

vi /etc/mail/local-host-names

===============================================================

naruto.tk

===============================================================

Roundcubemail 설치

 

Roundcubemail 다운로드 및 설정

 

mkdir /usr/local/src/APM_Setup

cd /usr/local/src/APM_Setup

wget https://github.com/roundcube/roundcubemail/releases/download/1.3.9/roundcubemail-1.3.9-complete.tar.gz

tar zxvf roundcubemail-1.3.9-complete.tar.gz

mkdir -p /home/postmaster

압축 푼 roundcube 파일을 웹소스(웹메일 소스) 부분으로 옮겨 줍니다

cp -arpR /usr/local/src/APM_Setup/roundcubemail-1.3.9 /home/postmaster

mv /home/postmaster/roundcubemail-1.3.9 /home/postmaster/webmail

chmod 755 -R /home/postmaster

Apahce Virtualhost 등록

apache의 vhost에등록해줍니다

vi /usr/local/apache/conf/httpd.conf

===============================================================

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

 

<Directory />

AllowOverride All

Require all granted

</Directory>

 

<IfModule dir_module>

DirectoryIndex index.html index.php

</IfModule>

===============================================================

PHP-FPM을 사용안할때

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

===============================================================

<VirtualHost *:80>

DocumentRoot "/home/postmaster/webmail"

ServerName mail.도메인.tk

ErrorLog "/usr/local/apache/logs/dummy-mail.도메인.tk-error_log"

CustomLog "/usr/local/apache/logs/dummy-mail.도메인.tk-access_log" common

</VirtualHost>

===============================================================

PHP-FPM을 사용했을때 

 

===============================================================

<VirtualHost *:80>

DocumentRoot "/home/postmaster/webmail"

ServerName 도메인.tk

<IfModule proxy_fcgi_module>

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9055/home/postmaster/webmail/$1

</IfModule>

ErrorLog "/usr/local/apache/logs/도메인.tk_error_log"

CustomLog "/usr/local/apache/logs/도메인.tk_access_log" common

</VirtualHost>

===============================================================

파란부분은 PHP-FPM을 사용한다면 쓴다.

MySQL DB생성 및 계정 생성,권한부여

 

MySQL 8.0미만 버전

mysql -uroot -p 

mysql> create database roundcubemail;

mysql> grant all privileges on roundcubemail.* to 'roundcube'@'%' identified by 'qwer1234';

mysql> grant all privileges on roundcubemail.* to 'roundcube'@'localhost' identified by 'qwer1234';

mysql> flush privileges;

MySQL 8.0이상 버전

mysql -uroot -p 

mysql> create database roundcubemail;

mysql> create user 'roundcube'@'localhost' identified by '1234';

mysql> create user 'roundcube'@'%' identified by '1234';

mysql> grant all privileges on roundcubemail.* to 'roundcube'@'%' ;

mysql> grant all privileges on roundcubemail.* to 'roundcube'@'localhost';

mysql> flush privileges;

RoundcubeMail 도메인에서 설치

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

===============================================================

도메인/installer 로 접속하여 설치를 시작합니다

접속하게 되면 intl, LDAP ,Imagick 모듈을 찾을 수 없고 allow_url_fopen, date.time.zone NOT OK 로 나오게 됩니다 php 설치 파일을 찾아 intl 과 Ldap 모듈을 설치하겠습니다.

===============================================================

PHP 추가 모듈 설치

intl PHP에 추가모듈설치

cd /usr/local/src/APM_Setup/php-5.5.38/ext/intl

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --enable-intl

make -j 8 && make install

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20121212/

 

mkdir /usr/local/php/modules

cp /usr/local/php/lib/php/extensions/no-debug-zts-20190902/intl.so /usr/local/php/modules/intl.so

 

vi /usr/local/apache/conf/php.ini

===============================================================

설정된 php.ini 파일로 간다. vi ~~~~/php.ini

extension_dir="/usr/local/php-5.5/lib/php/extensions/no-debug-zts-20121212/"

extension="intl.so"

===============================================================

여기서 

ls /usr/local/php/lib/php/extensions/no-debug-zts-20121212/

확인해본다. intl.so가 있는지 확인.

===============================================================

ldap PHP에 추가모듈설치

 

cd /usr/local/src/APM_Setup/php-5.5.38/ext/ldap

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

오류나면 cp -arp /usr/lib64/libldap* /usr/lib/

make && make install

vi /usr/local/apache/conf/php.ini

===============================================================

extension_dir="/usr/local/php-5.5/lib/php/extensions/no-debug-zts-20121212/"

extension=ldap.so //한줄더 추가

===============================================================

여기서 ls /usr/local/php/lib/php/extensions/no-debug-zts-20121212/

확인해본다. ldap.so가 있는지 확인.

cp /usr/local/php/lib/php/extensions/no-debug-zts-20121212/ldap.so /usr/local/php/modules/ldap.so

===============================================================

 

imagick PHP에 추가모듈설치

imagick 은 패키지와 설치 파일을 다운받아야합니다

yum install -y ImageMagick ImageMagick-devel

cd /usr/local/src/APM_Setup

wget https://pecl.php.net/get/imagick-3.7.0.tgz

tar zxvf imagick-3.7.0.tgz

cd imagick-3.7.0

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make -j 8 && make install

vi /usr/local/apache/conf/php.ini

===============================================================

extension_dir="/usr/local/php-5.5/lib/php/extensions/no-debug-zts-20121212/"

extension=imagick.so //한줄더 추가

===============================================================

추가설정(url_fopen, timezone)

vi /usr/local/apache/conf/php.ini

===============================================================

allow_url_fopen =Off ---- > ON

data.timezone = Asia/Seoul

===============================================================

systemctl restart apachectl

===============================================================

Checking available databases에 MySQL : OK 와 SQLite만 OK되어있으면 통과

 

 

모두 ok 를 확인하고 다음으로 넘어갑니다.

 

RoundCubeMail 설정

 

다음은 DB 부분으로 DB 정보와 맞는지 확인하고 패스워드를 적어줍니다

===============================================================

 

===============================================================

IMAP 부분에 도메인을 적어줍니다.

예) 도메인이름.tk (naruto.tk 로 했을때 안되는 경우도 있다.)

 

smtp 부분에 mail.도메인을 입력해줍니다.

예) mail.도메인이름.tk

language 에다가 ko_KR 입력

그리고 Display setting & user prefs 에서 ko_KR 입력

 

Save in /tmp 를 눌러 /tmp 에 저장후 config 폴더에 추가해줍니다

cp -arp /tmp/config.inc.php /home/postmaster/webmail/config/

Continue 를 눌러주면 SMTP 와 IMAP 테스트를 해줍니다

또는 저 빨간박스내용을 전체복사해서

vi /home/postmaster/webmail/config/config.inc.php 에 그대로 붙여넣기해줍니다.

===============================================================

Check if directories are writable

Roundcube may need to write/save files into these directories

/home/postmaster/webmail/temp/: NOT OK

/home/postmaster/webmail/logs/: NOT OK

여기서 NOT OK 일경우

 

cd /home/postmaster/webmail

chmod 707 logs temp

아래의 NOT OK는 Initialize database를 눌러주면 해결됩니다.

cd /home/postmaster/webmail/SQL && mysql -u root -p roundcubemail < mysql.initial.sql

 

Test filetype detection

Fileinfo/mime_content_type configuration: OK

Mimetype to file extension mapping: NOT OK

여기서 NOT OK 일경우

ll /usr/local/apache/conf/mime.types

vi /home/postmaster/webmail/config/config.inc.php

===============================================================

$config['mime_types'] = '/usr/local/apache/conf/mime.types';

 

발송테스트

Test SMTP config 에서 타 도메인으로 시범메일을 보낼 수 있다.

Sender 는 서버에 있는 유저 아이디 ex) user1@서버의도메인, user1@naruto.tk

Recipient는 타 도메인의 이메일주소 ex) test1@test.com

Test IMAP config 에서는

username을 서버에 있는 유저아이디

비밀번호 또한 서버의 있는 유저아이디의 비밀번호를 입력해준다.

IMAP connect: NOT OK(Login failed for guest1 from 14.47.65.154. Could not connect to serudong.tk:143: Connection refused)

이런 문구가 뜬다면 서버에서 dovecot 서비스데몬이 켜져있나 확인하자.

netstat -ntlp

tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 19587/dovecot

tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 19587/dovecot

 

잠깐 Mail,DNS,http,php,sendmail,dovecot 다맞아야 메일이 보내진다.

테스트가 완료가 되었다면 installer 부분을 삭제해줍니다

rm -rf /home/postmaster/webmail/installer/

http:// 도메인 을 입력하면 로그인 창이 뜨게 됩니다

일반계정으로 로그인합니다

로그인시 권한이 없다고 나올시

오류가 발생했습니다.!

작업을 수행할 수 없습니다. 권한이 거부되었습니다.

vi /etc/dovecot/conf.d/10-mail.conf

===============================================================

mail_access_groups = mail

===============================================================

systemctl restart dovecot

/etc/init.d/apachectl stop

/etc/init.d/apachectl start

여기까지 해보고 안된다면 아래를 해보시길 바랍니다.

* 그러나 해당 설정은 보안상 안좋습니다.

chmod -R 755 /var/mail

chmod -R 755 /var/spool/mail

입력하시면 되며 추가로 ptr 레코드 등록 해주셔야 메일 수발신이 원할하게 적용될수있습니다

Roundcube 메일테스트

로그인 후 작성 버튼을 눌러 메일을 보낼수 있습니다

타서버 계정으로 메일이 온것을 확인할 수 있습니다

타서버 계정으로 메일이 보내진것을 확인할 수 있습니다

받은 편지함에 메일이 온것을 확인할수 있습니다 이상으로 roundcube 메일 설치를 마치겠습니다

댓글