본문 바로가기
서버/리눅스

RoundCube 웹메일 설치하기 - nginx, php-fpm, CentOS 7

by 사악신 2016. 5. 27.


먼저, 패키지 설치를 합니다.


yum install roundcubemail


mediawiki, phpmyadmin 등 아파치 기반의 패키지들을 nginx 로 사용하기 위하여, php-fpm 풀에서 www 의 경우 유저와 그룹을 apache 로 지정하여 사용합니다. RoundCube 웹메일도 마찬가지로 www 풀(파일소켓이 아닌 9000번 포트로 지정해뒀는데... 추후 바꿀 예정입니다.)을 사용하도록 nginx 설정 파일을 생성합니다.


vi /etc/nginx/conf.d/roundcube.conf
server {
        listen      80;
        server_name webmail.도메인주소;
        root        /usr/share/roundcubemail;

        # Logs
        access_log  /var/log/roundcubemail/access.log main;
        error_log   /var/log/roundcubemail/error.log;

        # Default location settings
        location / {
                index   index.php;
                try_files $uri $uri/ /index.php?$args;
        }

        # Redirect server error pages to the static page /50x.html
        error_page 500 502 503 504 /50x.html;
                location = /50x.html {
                root /usr/share/nginx/html;
        }
        #error_page  404              /404.html;

        # Pass the PHP scripts to FastCGI server (locally with unix: param to avoid network overhead)
        location ~ \.php$ {
                # Prevent Zero-day exploit
                try_files $uri =404;

                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                #fastcgi_pass    unix:/var/run/php-fpm/www.sock;
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_keep_conn on;
                fastcgi_split_path_info         ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO         $fastcgi_path_info;
                fastcgi_param PATH_TRANSLATED   $document_root$fastcgi_path_info;
                include         fastcgi_params;
        }

        # Deny access to .htaccess files, if Apache's document root
        location ~ /\.ht {
            deny  all;
        }

        # Exclude favicon from the logs to avoid bloating when it's not available
        location /favicon.ico {
                log_not_found   off;
                access_log      off;
        }
}

설정 파일을 생성한 후, 이를 테스트하고 문제가 없으면 nginx 에 적용합니다.

nginx -t
nginx -s reload

PHP의 timezone 이 설정되지 않았다면 지정하고 php-fpm 을 재실행합니다.

vi /etc/php.ini
date.timezone = Asia/Seoul

데이터베이스를 생성합니다.


create database roundcube;

grant all privileges on roundcube.* to 'roundcube'@'localhost' identified by '비밀번호';

flush privileges;


만약, 아마존 RDS 등을 사용한다면 localhost 가 아닌 원격접속이 가능한 값으로 지정하여야합니다.


설치한 패키지를 웹에서 설정할 수 있도록 관련 권한을 허용합니다.

vi /etc/roundcubemail/config.inc.php
$config['enable_installer'] = true;
$config['db_dsnw'] = 'mysql://roundcube:비밀번호@localhost/roundcube'; 

http://webmail.도메인/installer 접속한 후, 관련 내용을 작성하고 설정합니다.



1.5 버전의 roundcubemail 의 경우 php 7 에서 오류가 발생할 수 있습니다. 하여 아직 개발중인 패키지를 설치합니다.


yum --enablerepo=remi-test update roundcubemail


모든 설정이 끝났으면 인스톨을 사용할 수 없도록 false 처리 합니다.


vi /etc/roundcubemail/config.inc.php

$config['enable_installer'] = false; 







메일 발송시, 로그인 후 하지 않을 경우 relay 오류가 발생할 수 있습니다. 이때 아래의 내용을 수정합니다.


vi /etc/roundcubemail/config.inc.php

$config['smtp_user'] = '%u';

$config['smtp_pass'] = '%p';




메일 삭제시 Trash 디렉토리가 존재하지 않아 삭제할 수 없다는 류의 에러 메시지가 나온다면 dovecot 설정을 아래와 같이 수정 및 추가하여 줍니다.(최신 버전에서는 autocreate plugin 을 지원하지 않는다는 오류가 발생함)


vi /etc/dovecot/conf.d/20-imap.conf

mail_plugins = $mail_plugins autocreate


....


plugin {                                                                                                                       

  autocreate = Trash

  autocreate2 = Junk

  autocreate3 = Drafts

  autocreate4 = Sent

  autosubscribe = Trash

  autosubscribe2 = Junk

  autosubscribe3 = Drafts

  autosubscribe4 = Sent

}




디렉토리 자동 생성을 위하여 아래와 같이 설정 파일을 수정합니다.


vi /etc/dovecot/conf.d/15-mailboxes.conf

##

## Mailbox definitions

##


# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.

namespace inbox {


  #mailbox name {

    # auto=create will automatically create this mailbox.

    # auto=subscribe will both create and subscribe to the mailbox.

    #auto = no


    # Space separated list of IMAP SPECIAL-USE attributes as specified by

    # RFC 6154: \All \Archive \Drafts \Flagged \Junk \Sent \Trash

    #special_use =

  #}


  # These mailboxes are widely used and could perhaps be created automatically:

  mailbox Drafts {

    auto = subscribe

    special_use = \Drafts

  }

  mailbox Junk {

    auto = subscribe

    special_use = \Junk

  }

  mailbox Trash {

   auto = subscribe

    special_use = \Trash

  }


  # For \Sent mailboxes there are two widely used names. We'll mark both of

  # them as \Sent. User typically deletes one of them if duplicates are created.

  mailbox Sent {

    auto = subscribe

    special_use = \Sent

  }

  #mailbox "Sent Messages" {

  #  special_use = \Sent

  #}


  # If you have a virtual "All messages" mailbox:

  #mailbox virtual/All {

  #  special_use = \All

  #}


  # If you have a virtual "Flagged" mailbox:

  #mailbox virtual/Flagged {

  #  special_use = \Flagged

  #}

}



dovecot 을 재실행합니다. 그리고 roundcubemail 의 설정파일도 아래와 같이 수정합니다.


vi /etc/roundcubemail/default.inc.php

$config['create_default_folders'] = true;





다람쥐 메일에 비해 UI 등 여러면에서 편리해보이는 웹메일입니다. ^^

반응형

댓글