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 메일 설치를 마치겠습니다

댓글