Email · 9 min read · Sep 08, 2025

Como Instalar o Rainloop Webmail no Ubuntu 22.04

Rainloop é um cliente de email baseado na web e de código aberto escrito em PHP. É rápido, leve e suporta os protocolos SMTP e IMAP.

Este guia ensinará você a instalar o cliente Rainloop em um servidor Ubuntu 22.04.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04.
  • Um nome de domínio apontando para o servidor. Para nosso tutorial, usaremos o domínio rainloop.example.com.
  • Um usuário não-root com privilégios sudo.
  • Certifique-se de que tudo está atualizado. $ sudo apt update && sudo apt upgrade
  • Instale pacotes utilitários básicos. Alguns deles podem já estar instalados. $ sudo apt install wget curl nano unzip -y

Passo 1 - Configurar o Firewall

O primeiro passo antes de instalar o Rainloop é configurar o firewall. Verifique o status do firewall.

$ sudo ufw status

Você deve ver algo como o seguinte.

Status: ativo

Para                         Ação      De
--                         ------      ----
OpenSSH                    PERMITIR   Em qualquer lugar
OpenSSH (v6)               PERMITIR   Em qualquer lugar (v6)

Rainloop precisa das portas HTTP e HTTPS para funcionar.

$ sudo ufw allow http
$ sudo ufw allow https

Abra as portas para as contas de email que você usa.

$ sudo ufw allow 587/tcp
$ sudo ufw allow 993/tcp
$ sudo ufw allow 465/tcp

Verifique o status novamente para confirmar.

$ sudo ufw status
Status: ativo

Para                         Ação      De
--                         ------      ----
OpenSSH                    PERMITIR   Em qualquer lugar
80/tcp                     PERMITIR   Em qualquer lugar
443                        PERMITIR   Em qualquer lugar
587/tcp                    PERMITIR   Em qualquer lugar
993/tcp                    PERMITIR   Em qualquer lugar
465/tcp                    PERMITIR   Em qualquer lugar
OpenSSH (v6)               PERMITIR   Em qualquer lugar (v6)
80/tcp (v6)                PERMITIR   Em qualquer lugar (v6)
443 (v6)                   PERMITIR   Em qualquer lugar (v6)
587/tcp (v6)               PERMITIR   Em qualquer lugar (v6)
993/tcp (v6)               PERMITIR   Em qualquer lugar (v6)
465/tcp (v6)               PERMITIR   Em qualquer lugar (v6)

Passo 2 - Instalar o Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.22.0

Passo 3 - Instalar e Configurar o PHP

O Ubuntu 22.04 vem com o PHP 8.1 por padrão. Mas para o Rainloop funcionar, precisamos instalar o PHP 8.0. O primeiro passo é adicionar o repositório PHP do Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Instale o PHP e as extensões necessárias para o Rainloop.

 $ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli

Verifique a instalação.

$ php --version
PHP 8.0.20 (cli) (built: Jun 25 2022 08:12:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies

Verifique o status do serviço PHP.

$ sudo systemctl status php8.0-fpm
? php8.0-fpm.service - O Gerenciador de Processos FastCGI do PHP 8.0
     Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-04 01:52:55 UTC; 1min 22s ago
       Docs: man:php-fpm8.0(8)
    Process: 12463 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.0/fpm/pool.d/www.conf 80 (code=exited, status=0/SUCCESS)
   Main PID: 12460 (php-fpm8.0)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 2241)
     Memory: 8.7M
        CPU: 89ms
     CGroup: /system.slice/php8.0-fpm.service
             ??12460 "php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)

Abra o arquivo php.ini para edição.

$ sudo nano /etc/php/8.0/fpm/php.ini

Altere os valores das seguintes variáveis para definir o tamanho do anexo de email para 25MB.

upload_max_filesize = 25M
post_max_size = 25M

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Abra o arquivo /etc/php/8.0/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Encontre as linhas user=apache e group=apache no arquivo e altere-as da seguinte forma.

...
; Usuário/grupo Unix dos processos
; Nota: O usuário é obrigatório. Se o grupo não for definido, o grupo do usuário padrão
;       será usado.
; RPM: usuário apache escolhido para fornecer acesso aos mesmos diretórios que httpd
user = nginx
; RPM: Mantenha um grupo permitido para escrever no diretório de logs.
group = nginx
...

Além disso, encontre as linhas listen.owner = www-data e listen.group = www-data e altere-as da seguinte forma.

...
; Defina permissões para o socket unix, se um for usado. No Linux, leitura/escrita
; as permissões devem ser definidas para permitir conexões de um servidor web. Muitos
; sistemas derivados do BSD permitem conexões independentemente das permissões. O proprietário
; e grupo podem ser especificados pelo nome ou pelos seus IDs numéricos.
; Valores Padrão: usuário e grupo são definidos como o usuário em execução
;                 modo é definido como 0660
listen.owner = nginx
listen.group = nginx
...

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Reinicie o serviço PHP-FPM.

$ sudo systemctl restart php8.0-fpm

Passo 4 - Instalar o MySQL

O Ubuntu 22.04 vem com a versão mais recente do MySQL. Você pode instalá-lo com um único comando.

$ sudo apt install mysql-server

Verifique a versão do MySQL.

$ mysql --version
mysql  Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Este passo é necessário para versões do MySQL 8.0.28 e superiores. Entre no Shell do MySQL.

$ sudo mysql

Execute o seguinte comando para definir a senha do seu usuário root. Certifique-se de que tenha uma mistura de números, letras maiúsculas, minúsculas e caracteres especiais.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Saia do shell.

mysql> exit

Execute o script de instalação segura do MySQL.

$ sudo mysql_secure_installation

Primeiro, você será solicitado a inserir sua senha root. Digite-a. Em seguida, você será solicitado a instalar o Componente de Validação de Senhas. Ele verifica a força das senhas usadas no MySQL. Pressione Y para instalá-lo.

Em seguida, você será solicitado a definir o nível da política de validação de senhas. Escolha 2 pois é a mais forte.

Em seguida, pressione N para recusar a alteração da sua senha root. Além disso, pressione Y para remover usuários anônimos, desabilitar logins remotos de root, remover o banco de dados de teste e recarregar as tabelas de privilégios.

Passo 5 - Configurar o MySQL

Faça login no shell do MySQL. Digite sua senha root quando solicitado.

$ sudo mysql -u root -p

Crie um banco de dados para o Rainloop.

mysql> CREATE DATABASE rainloop;

Crie um usuário SQL para acessar o banco de dados. Substitua yourpassword por uma senha de sua escolha.

mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';

Conceda acesso ao rainuser ao banco de dados.

mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';

Recarregue a tabela de privilégios.

mysql> FLUSH PRIVILEGES;

Saia do shell.

mysql> exit

Passo 6 - Instalar o Rainloop

Crie o diretório público para o Rainloop.

$ sudo mkdir /var/www/html/rainloop -p

Baixe a versão mais recente do Rainloop.

$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip

Descompacte o arquivo baixado no diretório público.

$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop

Altere a propriedade do diretório para o Nginx.

$ sudo chown -R nginx:nginx /var/www/html/rainloop

Defina as permissões de leitura e escrita necessárias para o Rainloop.

$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;

Passo 7 - Instalar SSL

Precisamos instalar o Certbot para gerar certificados SSL gratuitos oferecidos pelo Let’s Encrypt.

Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Nós usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute o seguinte comando para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Gere um Certificado SSL para o Rainloop.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d rainloop.example.com

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Abra o arquivo /etc/letsencrypt/renewal/rainloop.example.com.conf para edição.

$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf

Cole o seguinte código no final.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Geramos o certificado SSL usando a opção standalone do Certbot. Ele executa seu servidor web para criar o certificado, o que significa que o Nginx deve ser desligado durante a renovação. Os comandos pre_hook e post_hook são executados antes e depois da renovação para desligar e reiniciar automaticamente o servidor Nginx, não exigindo intervenção manual.

Para verificar se a renovação do SSL está funcionando bem, faça um teste do processo.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo certo. Seu certificado será renovado automaticamente.

Passo 8 - Configurar o Nginx

Abra o arquivo nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Encontre a linha include /etc/nginx/conf.d/*.conf; e cole o seguinte código abaixo dela.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie o arquivo de configuração do Rainloop para o Nginx e abra-o para edição.

$ sudo nano /etc/nginx/conf.d/rainloop.conf

Cole o seguinte código nele.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name rainloop.example.com;
    root /var/www/html/rainloop;

    index index.php;
    client_max_body_size 25M;

    access_log  /var/log/nginx/rainloop.access.log;
    error_log   /var/log/nginx/rainloop.error.log;

    ssl_certificate      /etc/letsencrypt/live/rainloop.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/rainloop.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/rainloop.example.com/chain.pem;
    
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_keep_conn on;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ \.ht {
        deny all;
    }

    location ^~ /data {
        deny all;
    }
}
# forçar HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  rainloop.example.com;
    return 301   https://$host$request_uri;
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique a sintaxe da configuração do Nginx.

$ sudo nginx -t

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Passo 9 - Configurar e Acessar o Rainloop

Abra a página de Administrador do Rainloop através da URL https://rainloop.example.com/?admin e você verá a seguinte tela de login.

Login do Administrador do Rainloop

Digite as seguintes credenciais e pressione enter para fazer login.

Nome de usuário: admin
Senha: 12345

O painel de administração do Rainloop será aberto com um aviso para alterar sua senha padrão.

Aviso de Senha do Administrador do Rainloop

Altere a senha padrão usando o link no painel.

Tela de Alteração de Senha do Rainloop

Digite sua nova senha e clique no botão Atualizar Senha para prosseguir.

O Rainloop usa o MySQL para armazenar informações de contato. Abra a página de Contatos e selecione MySQL no menu suspenso.

Página de Contatos do Rainloop

Digite as credenciais do banco de dados criadas anteriormente.

Detalhes do MySQL do Rainloop

Pressione o botão Testar para verificar a conexão e instalar as tabelas. Se o botão ficar verde, significa que a conexão foi bem-sucedida.

Você pode começar a usar o Rainloop adicionando suas contas de email.

Conclusão

Você instalou o Rainloop com sucesso em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.