Roundcube é um cliente de e-mail baseado em navegador IMAP de código aberto. Ele ganhou popularidade por suportar ACLs e utilizar AJAX (Asynchronous JavaScript and XML). Ele possui excelentes recursos e funcionalidades de ponta a ponta, como gerenciamento de e-mail, MIME suporte e manipulação de pastas, para citar alguns. Além disso, o Roundcube oferece pesquisa de mensagens, verificação ortográfica, calendários e gerenciamento de contatos de forma integrada. Acima de tudo, possui um repositório de plugins robusto e opções adicionais de personalização em comparação com outros clientes populares baseados em navegador.
O Roundcube é um MUA. Ao contrário do MTA, você precisará de um serviço que gerencie seu e-mail, de preferência usando seu servidor de e-mail. Confira nosso tutorial de Configuração do Servidor de E-mail para adicionar o servidor de e-mail de sua escolha.
Quando você envia um e-mail, o MUA o transfere para o seu servidor MTA usando SMTP. Após alguns saltos, o MTA receptor recebe o e-mail e o transfere para o seu MDA usando IMAP. Por fim, o destinatário visualiza o e-mail usando o MUA.
Vamos entender esses termos:
- MUA: Um mail user agent é uma interface que permite a interação do usuário para visualizar e enviar e-mails.
- MTA: Um mail transfer agent transfere e-mails do remetente para o destinatário.
- SMTP: O Simple Mail Transfer Protocol é um protocolo que o MUA usa para enviar e-mails para o MTA.
- MDA: Todos os e-mails enviados do MTA são recebidos e armazenados no mail delivery agent.
- IMAP: O Internet Message Access Protocol é um protocolo que os MDAs usam para entregar e-mails ao MUA.
Neste tutorial, nós vamos guiar você pelos passos de instalação de um cliente de webmail com o Roundcube no Ubuntu 20.04.
Vamos começar!
Pré-requisitos
Para acompanhar este tutorial, você precisará do seguinte:
- A versão mais recente do Ubuntu instalado no seu sistema.
- Os usuários do sistema devem ter privilégios sudo e um firewall.
- Além disso, você pode aproveitar o iptables para configurar firewalls no seu sistema.
- Uma pilha LAMP.
- Configure isso seguindo o Como Configurar a Pilha LAMP
- Um servidor de e-mail baseado em IMAP.
Passo 1: Instalar Extensões e Dependências
Antes de começarmos, vamos atualizar os repositórios para evitar conflitos de software:
|
1 |
sudo apt update |
Em seguida, instalaremos as dependências do Roundcube e configuraremos o PHP. Use o seguinte comando para instalar as extensões e bibliotecas do PHP:
|
1 |
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip unzip git composer |
Por padrão, algumas das bibliotecas do PHP estão desativadas. Precisamos ativar essas bibliotecas navegando pelo arquivo do servidor’ php.ini localizado em /etc/php/7.0/apache2/php.ini. Abra o arquivo php.ini usando o editor de texto nano:
|
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
Ao contrário das opções de comentário mais comuns que começam com uma hashtag ( #), usamos um ponto e vírgula ( ;) para comentar e descomentar linhas. Adicione um ponto e vírgula no início para comentar uma linha. Da mesma forma, remova o ponto e vírgula para descomentar uma linha.
Vamos olhar para a seção que contém linhas comentadas começando com extension=. Remova os pontos e vírgulas para descomentar php_mbstring.dll e php_xmlrpc.dll extensões:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . ;extension=php_interbase.dll ;extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_exif.dll ; Deve ser após mbstring pois ela depende dela ;extension=php_mysqli.dll . . . ;extension=php_sqlite3.dll ;extension=php_tidy.dll extension=php_xmlrpc.dll ;extension=php_xsl.dll . . . |
Além disso, adicione o extension=dom.so no final do bloco de extensões:
|
1 2 3 4 5 |
. . . extension=php_xmlrpc.dll ;extension=php_xsl.dll extension=dom.so . . . |
- Modificar Arquivos:
- Altere o date.timezone:
Vá para a opção de configurações, navegue até date.timezone, e remova o comentário. Em seguida, adicione seu fuso horário usando aspas. Confira a página de fuso horário do PHP para ver como o fuso horário formatado se parece no arquivo php.ini . Por exemplo, se você for da Europa, seu arquivo será parecido com este:
|
1 2 3 4 5 6 |
. . . [Date] ; Define o fuso horário padrão usado pelas funções de data ; http://php.net/date.timezone date.timezone = "Europe/Moscow" . . . |
-
- Modifique o arquivo upload_max_filesize :
Em seguida, navegue até a configuração upload_max_filesize . Por padrão, você verá o limite máximo definido como 2MB. Com base nas suas necessidades, você pode aumentar o tamanho máximo do arquivo para qualquer valor. No entanto, a maioria dos servidores de e-mail limita o tamanho total do anexo em até 10MB. Neste guia, manteremos o tamanho máximo em 13MB para que vários usuários adicionem anexos ao mesmo tempo:
|
1 2 3 4 5 |
. . . ; Tamanho máximo permitido para arquivos enviados. ; http://php.net/upload-max-filesize upload_max_filesize = 13M . . . |
-
- Modifique o arquivo post_max_size :
Agora, navegue até a busca por post_max_size. Ao contrário da configuração upload_max_filesize que se aplica a anexos, post_max_size é aplicado ao tamanho de todo o e-mail (incluindo anexos). Vamos definir nosso post_max_size com um valor mais alto para evitar impasses (deadlocks):
|
1 2 3 4 5 6 7 |
. . . ; Tamanho máximo de dados POST que o PHP irá aceitar. ; Seu valor pode ser 0 para desativar o limite. Ele é ignorado se a leitura de dados POST ; estiver desativada através de enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 20M . . . |
-
- Defina o valor de func_overload :
Finalmente, procure por mbstring.func_overload = 0 e remova o comentário. Além disso, certifique-se de que seu valor esteja definido como nulo para que ele suporte funções de string multibyte:
|
1 2 3 4 |
. . . . . . mbstring.func_overload = 0 . . . |
Salve todas as modificações e feche o arquivo. Nosso servidor está configurado com a pilha LAMP, as dependências do Roundcube e a configuração do PHP necessária. No próximo passo, faremos o download do software Roundcube, sua instalação e configuração.
Passo 2: Baixar o Roundcube
Acesse a página de download do Roundcube, escolha a seção Versão estável e navegue até o Pacote completo. Em seguida, clique com o botão direito no botão Download e selecione Copiar endereço do link. Usando o endereço com wget, baixe o arquivo tarball do Roundcube no servidor:
|
1 |
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz |
Depois disso, você precisará descompactar o arquivo do Roundcube:
|
1 |
wget tar -xvzf roundcubemail-1.5.2-complete.tar.gz |
Os argumentos usados podem parecer confusos, especialmente se você for completamente iniciante. Aqui está uma explicação do que cada flag significa:
- x: Significa extrair.
-
v: Significa detalhado (verbose).
- Informa ao tar para exibir o caminho e os nomes dos arquivos extraídos.
-
z: Informa ao tar para remover o wrapper
tar e descompactar o arquivo usando gzip.
- A extensão do arquivo gzip compactado terá .gz no final.
- f: Significa arquivo (file).
Omita a barra final / no diretório porque estamos movendo e renomeando todo o diretório, e não apenas o seu conteúdo. Agora, vamos mover o diretório descompactado para /var/www e renomeá-lo como roundcube:
|
1 |
sudo mv roundcubemail-1.5.2 /var/www/roundcube |
Defina as permissões para o Apache criar e editar os arquivos de configuração e de logs. Em seguida, altere o proprietário e o grupo para www-data. Além disso, certifique-se de permitir as permissões de leitura e gravação para o proprietário e o grupo:
|
1 |
sudo chown -R www-data:www-data /var/www/roundcube/ |
|
1 |
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/ |
Embora tenhamos baixado o código do Roundcube e definido as permissões necessárias, nossa instalação ainda está incompleta. A conexão do Roundcube ao nosso banco de dados via GUI do Roundcube ainda precisa ser feita. Antes de prosseguirmos, precisamos atualizar o Apache e sua configuração para informar a localização base do Roundcube.
Passo 3: Configuração e Instalação do Apache
Neste passo, editaremos o arquivo de host virtual para configurar o Apache. Usando Apache virtual hosting, hospedaremos vários sites em um único servidor. Mesmo que o Apache esteja hospedando um único site, é menos confuso e mais simples usar um arquivo de configuração de host virtual em comparação com a edição da configuração do Apache. Para adicionar uma camada extra de segurança, considere securing Apache with Let’s Encrypt.
Cada .conf arquivo no /etc/apache2/sites-available/ representa um site diferente. Vamos criar um arquivo de host virtual aqui para o Roundcube e informar ao Apache para disponibilizá-lo para o navegador.
Primeiro, copie o arquivo de configuração padrão para usá-lo como ponto de partida para o novo arquivo:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf |
Abra o arquivo usando o nano editor de texto:
|
1 |
sudo nano /etc/apache2/sites-available/roundcube.conf |
Há várias alterações que precisaremos modificar. Vamos passar por cada uma delas e, em seguida, fornecer o arquivo completo para copiar e colar.
Primeiro, altere as seguintes diretivas no host VirtualBlock existente:
-
ServerName: Informa ao Apache para escolher o domínio.
- Se você estiver usando um único servidor, então este ServerName será o endereço IP ou nome de domínio do seu servidor.
-
DocumentRoot: Quando o tráfego chega, ele define para onde enviá-lo.
- Em nosso tutorial, enviaremos o tráfego para o Roundcube em /var/www/roundcube.
- ServerAdmin: Se surgir um problema com o Apache, o ServerAdmin especifica um endereço de e-mail de contato.
-
ErrorLog e CustomLog: Define onde salvar os logs de conexões bem-sucedidas e logs de erros para este site.
- Use nomes específicos para definir os logs de erros para que, se houver algum problema específico do site, ele seja detectado sem esforço.
Em seguida, você adicionará um novo bloco Directory que informa ao Apache o que fazer com o diretório do Roundcube. O Directory consiste em duas palavras, onde a primeira palavra em cada linha é o nome da configuração seguido pelas opções de configuração reais.
- Options -Indexes: Informa ao Apache para exibir um aviso se encontrar um arquivo index.html ou index.php ausente. Por padrão, ele exibe o conteúdo do diretório.
- AllowOverride All: Informa ao Apache que, se um arquivo local .htaccess for detectado, ele deve substituir as configurações globais.
- Order allow,deny: Instrui o Apache a corresponder o acesso do cliente ao site e negar os não correspondidos.
- allow from all: Define o tipo de clientes permitidos.
Depois de fazer essas alterações, você verá o arquivo assim:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName seu_ip_ou_dominio_do_servidor DocumentRoot /var/www/roundcube ServerAdmin paul@demo.com ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined <Directory /var/www/roundcube> Options -Indexes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> |
Salve todas as alterações e feche o arquivo. Agora, vamos solicitar ao Apache que pare de hospedar o site padrão:
|
1 |
sudo a2dissite 000-default |
Depois disso, instruiremos o Apache a começar a hospedar o site do Roundcube. Ao ativar o site, não inclua o .conf porque o a2ensite requer o nome do arquivo sem extensão:
|
1 |
sudo a2ensite roundcube |
Em seguida, ative o the mod_rewrite módulo do Apache:
|
1 |
sudo a2enmod rewrite |
Finalmente, reinicie o Apache para permitir o acesso à instalação do Roundcube:
|
1 |
sudo apache2ctl restart |
No último passo, precisamos configurar o banco de dados, para que o Roundcube possa armazenar e gerenciar seus dados específicos do aplicativo.
Passo 4: Configuração e Ajustes do MySQL
Tente acessar seu servidor usando o endereço IP ou nome de domínio. Você verá um erro de configuração aparecer na página. Aqui, o Roundcube verifica um arquivo gerado durante a configuração, mas nossa configuração está incompleta. Antes de definirmos nossa configuração, vamos preparar nosso banco de dados.
- Conectar ao MySQL: Vamos nos conectar ao shell interativo do MySQL usando o nome de usuário e a senha:
Depois de executar o comando acima, você será solicitado a se autenticar com a senha root que criou ao instalar o MySQL.1mysql -u root -p - Criar Banco de Dados e Usuário: Agora que você está logado com sucesso, vamos criar um banco de dados e um usuário de banco de dados. Depois disso, daremos permissões ao usuário para executar comandos em nosso novo banco de dados.
- Criar o Banco de Dados: Use o seguinte comando para criar um banco de dados chamado
roundcubemail. Em seguida, forneça opções do banco de dados, como o conjunto de caracteres a ser usado
utf8:
O MySQL oferece segurança robusta e proteção avançada. Ele define um usuário pelo nome e pela origem da conexão. O comando acima cria um usuário chamado roundcube e define o usuário para se conectar a partir de localhost.1mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; - Renomear o Banco de Dados: Vamos renomear o usuário e modificar nossa senha:
1mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password'; - Definir Permissões: Permita aos usuários do roundcube todas as permissões no banco de dados
roundcubemail e tabelas:
Salve suas alterações e saia do shell interativo do MySQL:1mysql> GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';
12mysql> FLUSH PRIVILEGES;mysql> EXIT;
Nosso próximo passo é configurar a estrutura do banco de dados que ajuda o Roundcube a salvar todas as informações. O Roundcube vem com um arquivo de banco de dados que configura os dados automaticamente, o que exigiria esforços árduos para configurar manualmente.
Usando o seguinte comando, o MySQL usará nosso usuário recém-criado para ler um arquivo /var/www/roundcube/SQL/mysql.initial.sql. Além disso, ele aplicará a configuração ao banco de dados roundcubemail:
|
1 |
mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql |
Agora, você será solicitado a inserir a senha do usuário roundcube. Nossa configuração de banco de dados prepara o uso do Roundcube e nos permite verificar as permissões corretas. Se todas as etapas forem concluídas com sucesso, não haverá feedback e você retornará ao prompt de comando. Na próxima etapa, informaremos ao Roundcube nossas configurações de e-mail e concluiremos a instalação.
Passo 5: Configuração e Ajustes do Roundcube
Se você tentar acessar sua instalação do Roundcube agora, receberá uma página de erro. Acesse http://your_server_ip_or_domain/installer para concluir a instalação.
Se a configuração for feita corretamente, você verá um verde OK à direita de cada item de linha. No entanto, você pode não ver o OK verde nas configurações opcionais de LDAP no MySQL. Se você vir a mensagem NÃO DISPONÍVEL ao lado de qualquer outra linha, você terá que instalar essas dependências indisponíveis. Se você esqueceu de baixar alguma das dependências, você pode navegar até a URL e baixá-la imediatamente.
Assim que a configuração estiver concluída, role para baixo e clique no botão AVANÇAR. Vamos passar pela geração do arquivo de configuração do Roundcube. Confira as partes do formulário que precisamos modificar.
- Configuração Geral
Há algumas personalizações e algumas configurações gerais que modificaremos na seção de configuração Geral:
- ip_check: É uma opção de configuração de segurança e verifica o IP do cliente na autorização da sessão.
- product_name: Renomeie o nome do produto como desejar. Este nome mapeia “Roundcube” no texto e é substituído por este nome.
- support_url: Suporte na instalação do Roundcube. Se você não tiver um site de help desk dedicado, prefira usar um endereço de e-mail como walker:paul@demo.com.
- skin_logo: Substitua o logotipo do Roundcube por skin_logo. Para habilitar o HTTPS, escolha uma imagem de URL HTTPS (178px por 47px).
Deixe as outras configurações com seus valores padrão.
- Logging & Depuração: Vamos com as opções padrão.
- Configurando o Banco de Dados: Em vez de usar seu e-mail explicitamente, o Roundcube usa o MySQL para armazenar as informações para executar o cliente web. Aqui, precisamos informar ao Roundcube para acessar o banco de dados que configuramos na Etapa 4. Use as credenciais do banco de dados que criamos anteriormente:
- Banco de dados: MySQL
- Servidor: localhost
- Nome do banco de dados: roundcubemail
- Usuário: roundcube
- Senha:
demo12345@
- Use a senha que você definiu que configuramos na Etapa 4.
- Db_prefix: Isso é opcional, a menos que você esteja usando um banco de dados compartilhado com outros aplicativos.
- Modifying IMAP: Vamos definir as configurações de IMAP e SMTP para o seu servidor de e-mail. Como este tutorial foca no uso do Gmail como exemplo, usaremos as configurações do Gmail em nossas configurações de IMAP. No entanto, se você optar por outros provedores de serviços como Yahoo ou Outlook, precisará usar suas respectivas configurações. Muitos provedores de e-mail suportam conexões com ou sem criptografia. Normalize o uso de URLs e portas SSL IMAP/SMTP para evitar o uso de conexões não seguras.
- default_host: ssl://imap.gmail.com
- default_port: 993
- auto_create_user:
Sim ☑
- Se isso estiver desmarcado, o Roundcube não criará um usuário em seu próprio banco de dados e impedirá que você faça login.
- Campos *_mbox: Mantenha os valores padrão.
- Você pode atualizar isso mais tarde na interface do usuário do Roundcube.
- Modificando o SMTP: O servidor SMTP é uma parte integrante do e-mail que é usada para enviar e-mails. Semelhante à seção do servidor IMAP, usaremos a URL e a porta SSL. Se você não tem experiência no uso de servidores SMTP, siga as melhores práticas de SMTP para saber mais sobre esses tipos de servidores. Aqui estamos usando o Gmail como nosso exemplo:
- campo smtp_server: ssl://smtp.gmail.com
- campo smtp_port: 465
- SMTP e IMAP são dois serviços diferentes, portanto, ambos precisam de um nome de usuário e senha. No entanto, o Roundcube nos permite usar as credenciais do IMAP, então não há necessidade de recriá-las. Deixe os campos sob smtp_user/smtp_pass em branco e marque a caixa ao lado de Usar o nome de usuário e a senha atuais do IMAP para autenticação SMTP.
- smtp_log: Sim ☑
- Modificando as Configurações de Exibição & Preferências do Usuário: Vamos com as configurações de exibição e preferências do usuário padrão. Se você optar por personalizar sua instalação do Roundcube, clique no link RFC1766 na página de configuração e atualize o campo language manualmente.
- Plugins: O Roundcube oferece suporte a plugins que adicionam segurança extra. Os plugins são opcionais, no entanto, você pode aproveitá-los para facilitar seu trabalho. Vamos dar uma olhada na lista dos plugins mais usados:
- archive: Este plugin fornece um botão Arquivar que é semelhante ao funcionamento do Gmail.
- emoticons: Isso permite o uso de emoticons em e-mails.
- enigma: Torna fácil o uso de criptografia de e-mail GPG.
- filesystem_attachments: Permite salvar anexos no servidor Roundcube temporariamente ao salvar um rascunho de e-mail.
- hide_blockquote: Este plugin oculta a parte citada dos e-mails respondidos para manter a interface limpa.
- identity_select: Permite ao usuário selecionar múltiplos endereços de e-mail ao redigir um e-mail.
- markasjunk: Este plugin permite marcar um e-mail como spam e movê-lo para a pasta Spam.
- newmail_notifier: Alerta você sobre novos e-mails usando o sistema de notificação do navegador.
Clique no botão UPDATE CONFIG para salvar suas configurações. No último passo, testaremos a configuração do Roundcube para garantir que tudo esteja funcionando bem.
Passo 6: Testar a Configuração do Roundcube
Assim que atualizar a configuração, a página será atualizada e uma caixa de informações amarela aparecerá no topo da página dizendo que O arquivo de configuração foi salvo com sucesso no RCMAIL_CONFIG_DIR diretório da sua instalação do Roundcube.
Em seguida, clique no botão CONTINUE para testar sua configuração. De forma semelhante à página de verificação de dependências, você verá um marcador OK verde em cada linha, desde que não haja erros. Se vir algum erro, volte e verifique novamente as suas entradas.
Insira o seu nome de usuário e senha de IMAP e SMTP nas seções Test SMTP config e Test IMAP config respectivamente para testar o restante da configuração. Da mesma forma, clique em Send test email e Check login. Se você seguiu todos os passos corretamente, a página será atualizada e você verá o OK verde sob a seção testada.
Depois de verificar que as conexões SMTP e IMAP estão funcionando bem, o próximo passo é remover o diretório do instalador usando SSH. Remover o diretório do instalador é uma maneira segura de evitar que outros gerem uma nova configuração e substituam as configurações corretas:
|
1 |
sudo rm -rf /var/www/roundcube/installer/ |
Finalmente, você pode acessar a instância do Roundcube usando o IP do seu servidor e verificar seu e-mail.
Conclusão
Neste tutorial, aprendemos a instalar um cliente de webmail usando o Roundcube no Ubuntu 20.04. Além das etapas discutidas acima, existem outras opções de segurança, como suporte a HTTPS e criptografia GPG, que você deve considerar adicionar. Assuma a responsabilidade de proteger seus servidores usando medidas de segurança robustas.
Além disso, existem muitos outros materiais de aprendizado sobre Redis e PHP que você pode acessar em nossos blogs:
- Como Instalar e Proteger o Redis no Ubuntu 18.04
- Instalando o phpBB no Ubuntu 20.04
- Instalando e Protegendo o phpMyAdmin on Ubuntu 18.04
- Implantar uma Aplicação PHP em um Cluster Kubernetes com Ubuntu 18.04
Boa Computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.