1 of 12 23/6/2010 22:41 Webmail Roundcubemail em PHP4/PHP5 com skins, LDAP e extras Autor: Paulo Roberto Junior - WoLF <paulorvojr at gmail.com> Data: 03/03/2009 Introdução Toda empresa ou pessoa que deseja implementar um servidor de e-mail um dia vai querer acessar as contas de e-mail através de webmail. Nem sempre o usuário ou você possui um cliente de e-mail instalado no computador. Então os webmails ganharam força no mundo da internet. Existem dezenas de webmails, para todos os gostos, sendo a maioria disseminada para plataforma Linux. Claro que podemos instalar em Windows para competir com o tão famoso OWA (Outlook Web Access). Existem muitos artigos que comentam ou descrevem a instalação do roundcubemail, porém gostaria de apresentar minha versão e ajudar aqueles que possuem servidor Apache com suporte a php4 e não podem ou querem migrar para o novo php5. Motivos? Bom, eu tenho um, algumas aplicações que rodam em meus servidores não dão suporte a php5, e outras sim. Até aí tudo bem, vamos atualizar as aplicações, mas se não houver suporte, se o cliente não desejar atualizar? Se a aplicação for de terceiros isso e muitos outros questionamentos podem ser feitos. Então vou lhes demonstrar a instalação e configuração do roundcubemail em versões que suportem php4, php5, suporte a ldap e alguns extras. Dedos no teclado e Viva \O/ Linux! Requerimentos necessários Primeiramente é necessário um servidor com sistema operacional baseado em Linux ou UNIX, claro que podemos instalar em ambiente Windows, basta criar um servidor XAMPP que contenha Apache + PHP5 + MySQL, mas estamos falando de Linux, então dedos nas teclas... Não vou explicar a instalação de um servidor de e-mail, pois existem centenas de excelentes artigos no VOL e na internet. Apenas vou demonstrar o foco do artigo que é a implementação do webmail. Posso citar bons artigos sobre servidores de email como : Servidor de email com SMTP, POP, IMAP, quota e MySQL Montando um servidor de e-mail completo com Postfix Então necessitamos de:
2 of 12 23/6/2010 22:41 Requisito 1: Sistema operacional Linux baseado no kernel 2.6.x.x de preferência; Requisito 2: Servidor de e-mail (SMTP E POP3, IMAP), de preferência postfix, sendmail, qmail, dovecot...; Requisito 3: Servidor web, de preferência APACHE2 com PHP5 ou PHP4; Requisito 4: Banco de dados MySQL, com PHPMYADMIN (opcional); Requisito 5: Baixar o roundcubemail; Requisito 6: Instalar o roundcubemail e configurar. Instalação do Apache em 2 distribuições Nota: Muitos devem pensar porque informo muitos pacotes, as vezes além do artigo proposto? Muito simples, não sei quais pacotes você já tem ou já atualizou, prefiro ter mais pacotes para oferecer maior compatibilidade do que apresentar erros. E um dia você vai usar esse pacote, neste artigo, ou em outros. Por isso podem instalar pacotes sem problemas. Se realmente não for usar, remova-o. Distribuição Linux Ubuntu e Debians Like Vamos partir do ponto que você já tem um sistema operacional Linux totalmente instalado e funcional, e que usa preferencialmente um gerenciador de pacotes do estilo apt-get. Por via das dúvidas, vamos solicitar uma breve atualização dos repositórios do seu gerenciador de pacotes e do sistema operacional em si. 1. Acesse o terminal de sua preferência; 2. Digite os comandos: $ sudo apt-get update (atualiza sua lista de repositórios) $ sudo apt-get upgrade (atualiza os pacotes que achar necessário) 3. Vamos instalar os pacotes e suas dependências do Apache2 + PHP5 + MySQL: $ sudo apt-get install apache2 python openssl phpmyadmin php5 $ sudo apt-get install php5-gd $ sudo apt-get install php-pear php5-gd php5-xsl curl libcurl3 libcurl3-dev php5-curl $ sudo aptitude install apache2 libapache2-mod-php5 php5 php5-cgi php5-ldap Obs.: Quem enfrentar problemas com o sudo, ele é usado se você não possui conta de root. Caso possua não é necessário usá-lo. Distribuições Red Hat e RPMs LIKE Vamos partir do ponto que você já tem um sistema operacional Linux totalmente instalado e funcional, e que usa gerenciador de pacotes estilo RPM, geralmente presente em distribuições como Red Hat, Fedora, OpenSuSE, CentOS, entre outras. Dica: Faça uma instalação full do sistema operacional, todos os componentes. Friso isso pois é muito chato
3 of 12 23/6/2010 22:41 você desejar instalar um novo servidor e ter problemas com bibliotecas C#, C++, make, mod_php5, entre outros. Instale tudo! RPMs necessários: APACHE2 PHP5 PHP5-GD Todos os pacotes RPM encontram-se nos CDs de instalação, mas caso precise achar na internet eu recomendo o site http://rpm.pbone.net/. Mas se mesmo assim encontrar dúvidas, explicarei o processo de instalação. Desinstale caso exista uma versão do Apache e MySQL: # rpm -e httpd mysql Faça o download e instale os pacotes RPM do MySQL do servidor, não optar por mudar a senha no banco de dados MySQL: # rpm -ivh MySQL-client-5.0.20-0.glibc23.i386.rpm MySQL-server-5.0.20-0.glibc23.i386.rpm MySQL-shared-5.0.20-0.glibc23.i386.rpm # mysql_install_db # /sbin/ldconfig Faça o download, descompacte e instale o código-fonte do Apache2, que pode ser obtido na apache.org: # mv httpd-2.0.55.tar.gz /usr/local/; cd /usr/local/ # tar -xzvf httpd-2.0.55.tar.gz # cd httpd-2.0.55 #./configure --enable-so # make # make install Inicie o Apache: # /usr/local/apache2/bin/apachectl start Teste para verificar se está funcionando. Pelo seu browser preferido acesse: http://ip_do_servidor/ Pare o Apache: # /usr/local/apache2/bin/apachectl stop Baixe, descompacte e instale o php do sourcephp.net: # mv php-4.4.1.tar.gz /usr/local/ # cd /usr/local/ # tar -xzvf php-4.4.1.tar.gz # cd php-4.4.1/ #./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
4 of 12 23/6/2010 22:41 # make # make install Adicione em seu httpd.conf: LoadModule php4_module modules/libphp4.so AddType application/x-httpd-php.php.phtml AddType application/x-httpd-php-source.phps DirectoryIndex index.html index.php Reinicie seu Apache: # /usr/local/apache2/bin/apachectl restart Instalando phpmyadmin Baixe-o pelo SourceForge: phpmyadmin-2.11.9.4-english.tar.gz Descompacte e mova a pasta para seu diretório de documentos do Apache2, em /var/www /html/phpmyadmin. Para testar acesse: http://ip_do_servidor/phpmyadmin Instalando o Roundcubemail Roundcubemail em Apache2 com PHP4 O site do projeto roundcube é: http://roundcube.net/ Se você deseja usar o roundcubemail em um APACHE2 com suporte a php4, terás que utilizar uma versão mais antiga do roundcubemail. Mesmo sendo uma versão antiga, ela não é ruim, e possui as mesmas funcionalidades, eu já testei e uso a meses sem apresentar problemas, ao contrário, só elogios dos usuários. Ela é a versão 0.1 stable, que você pode baixar no SourceForge.net. Passo 1: Abra um terminal e digite: # wget http://sourceforge.net/project/showfiles.php?group_id=139281&package_id=152758& release_id=581504 Passo 2: Descompacte o pacote que você baixou, no mesmo terminal digite: # tar xvfz roundcubemail-0.1.tar.gz Passo 3: Mova a pasta que resultou da descompressão do pacote para sua pasta de documentos do Apache2, dependendo da sua distribuição ela pode variar, mas geralmente fica em /var/www/ (para
5 of 12 23/6/2010 22:41 Ubuntu, Debian etc) e /var/www/html/ (para Fedora, Red Hat) e /usr/local/apache2 (para Slackware e afins). Comandos? # mv roundcubemail /var/www/webmail Passo 4: Dê permissão na pasta e em seus arquivos recursivos: # chmod -R 777 /var/www/webmail Lembre-se, os locais podem variar, pense e verifique onde você descompactou o pacote, onde moveu a pasta, tudo... :) Passo 5: Há diversas formas de fazê-lo, porém eu acho mais fácil pelo uso da ferramenta PHPMYADMIN. Precisamos criar uma database (banco de dados) e inserir através de um script pré-criado algumas tabelas e dados. Conforme disse, existem diversas formas, mas vou apresentar apenas a que gosto e considero fácil. 5.1. Acesse através de seu browser preferido seu phpmyadmin: http://ip_do_servidor/phpmyadmin 5.2. Crie uma database com o nome de "roundcubemail" conforme a imagem abaixo: 5.3. Insira o script SQL para criação das tabelas e dados, para isso clique em IMPORT e selecione o arquivo mysql.initial.sql, localizado na pasta SQL da raiz do roundcubemail, geralmente em /var/www /webmail/sql/mysql.initial.sql, conforme a imagem abaixo: 5.4. Okay, TUDO CERTO! Passo 6: Precisamos agora renomear 2 arquivos, eles são db.inc.php e main.inc.php. Por padrão eles apresentaram o nome de main.inc.php.dist e db.inc.php.dist e ficam localizados na pasta "config" da pasta raiz do roundcubemail.
6 of 12 23/6/2010 22:41 Altere o nome dos arquivos de main.inc.php.dist para main.inc.php e db.inc.php.dist para db.inc.php. Note que só removemos o "dist" de seu nome. Passo 7: Precisamos alterar o arquivo db.inc.php: Procure pela linha: $rcmail_config['db_dsnw'] = e altere para: $rcmail_config['db_dsnw'] = 'mysql://roundcubemail:roundcubemail@localhost/roundcubemail'; repare, a sintaxe: $rcmail_config['db_dsnw'] = 'mysql://usuario_a_conectar_ao_banco:senha_do_banco@servidor_ou_ip /NOME_DO_BANCO'; Passo 8: O mais importante é o arquivo main.inc.php, precisamos editá-lo. Repare que ele possui diversos recursos, teste cada um deles pois vale a pena, mas para o básico, altere as seguintes linhas: $rcmail_config['default_host'] = 'IP_DO_SERVIDOR_DE_EMAIL'; // TCP port used for IMAP connections $rcmail_config['default_port'] = 143; // This domain will be used to form e-mail addresses of new users // Specify an array with 'host' => 'domain' values to support multiple hosts $rcmail_config['mail_domain'] = 'DOMINIO.COM.BR'; // use this host for sending mails. // to use SSL connection, set ssl://smtp.host.com // if left blank, the PHP mail() function is used $rcmail_config['smtp_server'] = 'IP_DO_SERVIDOR_DE_EMAIL'; // SMTP port (default is 25; 465 for SSL) $rcmail_config['smtp_port'] = 25; // SMTP username (if required) if you use %u as the username RoundCube // will use the current username for login $rcmail_config['smtp_user'] = '%u'; // SMTP password (if required) if you use %p as the password RoundCube // will use the current user's password for login $rcmail_config['smtp_pass'] = '%p'; // SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
7 of 12 23/6/2010 22:41 // best server supported one) $rcmail_config['smtp_auth_type'] = 'PLAIN'; // the default locale setting $rcmail_config['locale_string'] = 'pt_br'; Passo 9: Vamos testar se a instalação ocorreu bem, para isso acesse em seu browser preferido o endereço: http://ip_do_servidor/webmail/ Se tudo estiver OK, prossiga com o solicitado, ou seja, clique no botão e renomeie ou remova a pasta installer. Roundcubemail em Apache2 com PHP5 Se você deseja usar o roundcubemail em um APACHE2 com suporte a php5, terás que utilizar a versão atual do roundcubemail: roundcubemail-0.2-stable.tar.gz Passo 1: Abra um terminal e digite: # wget http://sourceforge.net/project/showfiles.php?group_id=139281&package_id=152758& release_id=581504 Passo 2: Descompacte o pacote que você baixou, no mesmo terminal digite: # tar xvfz roundcubemail-0.1.tar.gz Passo 3: Mova a pasta que resultou da descompressão do pacote para sua pasta de documentos do Apache2, dependendo da sua distribuição ela pode variar, mas geralmente fica em /var/www/ (para Ubuntu, Debian etc) e /var/www/html/ (para Fedora, Red Hat) e /usr/local/apache2 (para Slackware e afins). Comandos? # mv roundcubemail /var/www/webmail Passo 4: Dê permissão na pasta e em seus arquivos recursivos, no terminal digite: # chmod -R 777 /var/www/webmail Lembre-se, os locais podem variar, pense e verifique onde você descompactou o pacote, onde moveu a pasta, tudo... :) Passo 5: Há diversas formas de fazê-lo, porém eu acho mais fácil pelo uso da ferramenta PHPMYADMIN. Precisamos criar uma database (banco de dados) e inserir, através de um script pré-criado, algumas tabelas e dados. Conforme disse, existem diversas formas, mas vou apresentar apenas a que gosto e considero fácil. 5.1. Acesse através de seu browser preferido seu phpmyadmin:
8 of 12 23/6/2010 22:41 http://ip_do_servidor/phpmyadmin 5.2. Crie uma database com o nome de "roundcubemail" conforme a imagem abaixo: 5.3. Insira o script SQL para criação das tabelas e dados, para isso clique em IMPORT e selecione o arquivo mysql.initial.sql, localizado na pasta SQL da raiz do roundcubemail, geralmente em /var/www /webmail/sql/mysql.initial.sql, conforme a imagem abaixo: 5.4. Okay, TUDO CERTO! Passo 6: Precisamos agora renomear 2 arquivos, eles são db.inc.php e main.inc.php. Por padrão eles apresentaram o nome de main.inc.php.dist e db.inc.php.dist e ficam localizados na pasta "config" da pasta raiz do roundcubemail. Altere o nome dos arquivos de main.inc.php.dist para main.inc.php e db.inc.php.dist para db.inc.php. Note que só removemos o "dist" do nome do arquivo. Passo 7: Precisamos alterar o arquivo db.inc.php: Procure pela linha: $rcmail_config['db_dsnw'] = e altere para: $rcmail_config['db_dsnw'] = 'mysql://roundcubemail:roundcubemail@localhost/roundcubemail'; Repare a sintaxe: $rcmail_config['db_dsnw'] = 'mysql://usuario_a_conectar_ao_banco:senha_do_banco@servidor_ou_ip /NOME_DO_BANCO'; Passo 8: O mais importante é o arquivo main.inc.php, precisamos editá-lo. Repare que ele possui diversos recursos, teste cada um deles pois vale a pena, mas para o básico altere as seguintes linhas: $rcmail_config['default_host'] = 'IP_DO_SERVIDOR_DE_EMAIL';
9 of 12 23/6/2010 22:41 // TCP port used for IMAP connections $rcmail_config['default_port'] = 143; // This domain will be used to form e-mail addresses of new users // Specify an array with 'host' => 'domain' values to support multiple hosts $rcmail_config['mail_domain'] = 'DOMINIO.COM.BR'; // use this host for sending mails. // to use SSL connection, set ssl://smtp.host.com // if left blank, the PHP mail() function is used $rcmail_config['smtp_server'] = 'IP_DO_SERVIDOR_DE_EMAIL'; // SMTP port (default is 25; 465 for SSL) $rcmail_config['smtp_port'] = 25; // SMTP username (if required) if you use %u as the username RoundCube // will use the current username for login $rcmail_config['smtp_user'] = '%u'; // SMTP password (if required) if you use %p as the password RoundCube // will use the current user's password for login $rcmail_config['smtp_pass'] = '%p'; // SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use // best server supported one) $rcmail_config['smtp_auth_type'] = 'PLAIN'; // the default locale setting $rcmail_config['locale_string'] = 'pt_br'; Passo 9: Vamos testar se a instalação ocorreu bem, para isso acesse em seu browser preferido o endereço: http://ip_do_servidor/webmail/ Se tudo estiver Ok, prossiga com o solicitado, ou seja, clique no botão e renomeie ou remova a pasta installer. Instalando skins e suporte a LDAP Instalando skins Existem muitos skins para o roundcubemail, e instalar eles é bem fácil para todas as versões. Primeiramente baixe o skin, que pode ser encontrado na internet e em fórum sobre roundcubemail.
10 of 12 23/6/2010 22:41 Vou apresentar um exemplo: Baixe o skin em: http://www.roundcubeforum.net/downloads.php?do=file&id=15&act=down Descompacte a pasta na pasta de "skins" do roundcubemail, geralmente localizada em /var/www/webmail /skins/. Próximo passo é alterar o arquivo main.inc.php, geralmente localizado em /var/www/webmail/config /main.inc.php. Altere as seguintes linhas: $rcmail_config['skin'] = 'mvision2_en'; $rcmail_config['list_cols'] = array('subject', 'from', 'date', 'attachment'); $rcmail_config['preview_pane'] = TRUE; $rcmail_config['preview_pane_vertical'] = TRUE; Onde "mvision2_en" corresponde a pasta criada ao descompactar sua skin. Salve, reinicie seu Apache e teste, a template do seu roundcubemail deve mudar. Suporte a LDAP Para adicionar o suporte a LDAP se faz necessário alterar o arquivo main.inc.php, geralmente localizado em /var/www/html/webmail/config/main.inc.php. $rcmail_config['ldap_public']['dominio'] = array( 'name' => 'Dominio.com', 'hosts' => array('ldap.dominio.com'), 'port' => 389, //Porta do seu LDAP 'base_dn' => '', 'bind_dn' => '', 'bind_pass' => '', 'ldap_version' => 3, // Versão do seu LDAP 'search_fields' => array('mail', 'cn'), 'name_field' => 'cn', 'email_field' => 'mail', 'surname_field' => 'sn', 'firstname_field' => 'gn', 'scope' => 'sub', 'filter' => '', 'fuzzy_search' => true); Padronizando alguns parâmetros para usuários Para definir um padrão para alguns recursos e preferências de todos os usuários, se faz necessário alterar o seguinte e tão conhecido arquivo, o main.inc.php, geralmente localizado em /var/www/html/config /main.inc.php.
11 of 12 23/6/2010 22:41 Vou comentar cada linha e sua função: // Mostra no máximo o valor de mensagens por página $rcmail_config['pagesize'] = 30; // use this timezone to display date/time $rcmail_config['timezone'] = intval(date('o'))/100 - date('i'); // Ativa ou desativa o horário de verão $rcmail_config['dst_active'] = (bool)date('i'); // Define se as mensagens são exibidas ou não em HTML $rcmail_config['prefer_html'] = TRUE; // Define se as mensagens a serem escritas serão ou não em HTML $rcmail_config['htmleditor'] = FALSE; // show pretty dates as standard $rcmail_config['prettydate'] = TRUE; // Define a ordenação padrão, por data, tamanho, assunto, basta informar em inglês ( tamanho = size, assunto = subject) $rcmail_config['message_sort_col'] = 'date'; // Define o tipo de ordenação, se em DECRESCENTE OU CRESCENTE, também em inglês $rcmail_config['message_sort_order'] = 'DESC'; // Define tipo o que ocorre em gmail, o famoso RASCUNHO, ou auto-save em tantos segundos $rcmail_config['draft_autosave'] = 100; // Define se ao clicar na mensagem ela será pré-visualizada $rcmail_config['preview_pane'] = TRUE; // Define se a pré-visualização será em vertical $rcmail_config['preview_pane_vertical'] = TRUE; // Define o valor máximo para o número de páginas $rcmail_config['max_pagesize'] = 100; Imagens de exemplo e agradecimentos Imagem sobre o início, a caixa de entrada: Imagem demonstrando a escrita de novas mensagens:
12 of 12 23/6/2010 22:41 Obrigado a todos que acessam e comentam os artigos que já criei e a todos que mantém este site, moderadores e CEOs. Novamente não posso demonstrar um webmail como faço sempre com meus artigos, possibilitando a todos acessarem um teste, igual ao do sistema operacional nas nuvens que criei e mantenho até hoje, com agora mais de 1000 contas de pessoas. Vide: EyeOS - Mini Sistema Operacional nas Nuvens. Obrigado, abraços, apertos de mão, beijos na bochecha do público feminino e \/ \/ /\ \O/ _ /\/ u X http://www.vivaolinux.com.br/artigo/webmail-roundcubemail-em-php4-php5-com-skins-ldap-eextras Voltar para o site