DEV Community

Cover image for Instalando e Configurando o Servidor de E-mail Carbonio CE na AWS (Substituto do Zimbra)
Alfredo Castro
Alfredo Castro

Posted on

Instalando e Configurando o Servidor de E-mail Carbonio CE na AWS (Substituto do Zimbra)

A segurança em um servidor de e-mail é de extrema importância para qualquer organização ou empresa. Os servidores de e-mail lidam com uma quantidade significativa de informações sensíveis e confidenciais, incluindo comunicações internas e externas, documentos anexados, dados de contato e muito mais. Portanto, garantir a segurança desses dados é essencial para proteger a privacidade dos usuários e a integridade das informações da organização.

A Synacor anunciou que, a partir de dezembro de 2023, não fornecerá mais suporte nem atualizações de segurança para o Zimbra Open Source. Isso significa que a versão 8.8.15 será a última Open Source disponível. Manter uma versão de um servidor de e-mail sem suporte ou sem atualizações de segurança pode acarretar diversos riscos, especialmente vulnerabilidades de segurança não corrigidas que podem ser exploradas por hackers. Como é de conhecimento geral, o e-mail representa uma das principais portas de entrada para esse tipo de ataque, e um sistema de e-mail vulnerável pode deixar as empresas expostas a sérias consequências.

A Zextras resolveu disponibilizar e manter a sua própria versão chamada Carbonio CE, e é sobre ele que iremos falar hoje. O passo a passo abaixo irei demonstrar como instalar e configurar o servidor de e-mail Carbonio CE em uma instância EC2 na AWS.

Ambiente:

Uma instância EC2 com um Elastic IP.

Também é necessário possuir um registro DNS.

Sistema Operacional CPU RAM HD Versão do E-mail
Ubuntu 20.04 LTS 4vCPU 16GB 50GB Carbonio Release 24.3.0

Portas externas (0.0.0.0/0):

  • 80 (HTTP)
  • 443 (HTTPs)
  • 25 (SMTP)
  • 465 (SMTPs)
  • 587 (SMTP)
  • 143 (IMAP)
  • 993 (IMAPs)
  • 110 (POP3)
  • 995 (POP3s)

Porta interna (VPN/IP Static):

  • 6071 (Administração)

Etapa 01 - Criando os registro DNS

Antes de tudo, vamos definir e criar a URL que iremos utilizar para o servidor de e-mail.

Irei utilizar o domínio alfredocastro.com.br, defini a URL mail.alfredocastro.com.br para o portal web do Carbonio CE.

Acesse o seu gerenciador de registros DNS do seu domínio e crie os registro abaixo de acordo com o seu cenário:

Tipo Registro Valor Observação
A mail 52.XX.XXX.216 Elastic IP atribuído à EC2
MX @ 10 mail.alfredocastro.com.br URL definida para o servidro de e-mail
TXT @ v=spf1 ip4:52.XX.XXX.216/32 -all Elastic IP atribuído à EC2
TXT _dmarc v=DMARC1; p=none; sp=quarantine; rua=mailto:admin@alfredocastro.com.br E-mail para envio de recebimento de relatórios de conformidade DMARC

Veja um exemplo:
Image description

Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
Image description
Image description
Image description
Image description

Etapa 02 - Solicitando a remoção de restrição da porta 25 SMTP do Elastic IP

Obs: Antes de criar um registro DNS reverso, você deve definir um registro DNS de encaminhamento correspondente (registro tipo A) que aponte para seu endereço Elastic IP (feito na etapa anterior).

Criando um registro DNS reverso.

Acesse a console AWS e procure pelo serviço "EC2".

No menu lateral a esquerda, clique em "Elastic IPs".
Image description

Selecione o Elastic IP e clique em Actions > Update reverse DNS.
Image description

Digite a URL criada na etapa anterior para o servidor de e-mail. Em seguida escreva update e clique no botão "Update".
Image description

Acesse a URL abaixo e preencha o formulário para solicitar a liberação da porta 25 (SMTP).

https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

Email address: email para receber o contato da AWS

Use case description: Descrição do motivo que você quer a liberação da porta SMTP

Elastic IP address: O endereço IP atachado na instância EC2

Reverse DNS record: A URL que você definiu para o DNS Reverso

Em seguida clique em "Submit".
Image description

Você irá receber um e-mail de confirmação da solicitação.
Image description

Caso sua solicitação seja aprovada, você irá receber outro email confirmando.
Image description

Utilizei o seguinte texto para solicitar a liberação:

I request the release of the SMTP port for sending emails through the provided EIP below. We will use an EC2 with this EIP to set up a business email server.
To ensure that the EC2 is not used for sending unwanted emails, the following measures will be implemented:
* Email Authentication: Implementation of SPF (Sender Policy Framework) and DKIM (DomainKeys Identified Mail) authentication to verify the authenticity of sent emails.
* Constant Monitoring: Implementation of monitoring tools to identify any suspicious activity or abnormal email volume.
* Responsible Use Policies: Establishment of internal policies to ensure that email sending is done responsibly and in compliance with applicable laws and regulations.
Enter fullscreen mode Exit fullscreen mode

Para realizar um teste, acesse sua instância EC2 e execute um telnet em algum servidor de e-mail na porta 25. No exemplo abaixo utilizei o servidor do Gmail.

telnet smtp.gmail.com 25
Enter fullscreen mode Exit fullscreen mode

Image description

Etapa 03 - Instalando e configurando o Carbonio CE

Primeiro vamos atualizar a lista de pacotes disponíveis nos repositórios. Execute o seguinte comando:

apt-get update
Enter fullscreen mode Exit fullscreen mode

Image description

Agora vamos alterar o hostname da máquina. Execute o seguinte comando:

hostnamectl set-hostname mail
Enter fullscreen mode Exit fullscreen mode

Image description

Precisamos atualizar o arquivo /etc/hosts com o IP da máquina seguido do FQDN e o hostname. Execute o primeiro comando para descobrir o seu IP, em seguida altere o segundo comando conforme o seu ambiente:

hostname -I
echo "10.0.2.133 mail.alfredocastro.com.br mail" >> /etc/hosts
Enter fullscreen mode Exit fullscreen mode

Image description

Reinicie a máquina utilizando o comando abaixo:

reboot
Enter fullscreen mode Exit fullscreen mode

Execute os comandos abaixo para adicionar o repositório da Zextras:

NOTA: Acesse a página do Carbonio Community Edition e preencha o formulário. Você receberá um e-mail com instruções de como adicionar o repositório, parecido com os comandos abaixo:

cd /tmp
wget https://repo.zextras.io/inst_repo_ubuntu.sh
chmod +x inst_repo_ubuntu.sh
./inst_repo_ubuntu.sh
Enter fullscreen mode Exit fullscreen mode

Image description
Image description

Agora execute o comando abaixo para realizar a instalação do Carbonio CE:

apt-get install service-discover-server \
carbonio-directory-server \
carbonio-proxy \
carbonio-webui \
carbonio-files-ui \
carbonio-admin-login-ui \
carbonio-mta \
carbonio-appserver \
carbonio-user-management \
carbonio-files-ce \
carbonio-files-db \
carbonio-storages-ce \
carbonio-preview-ce \
carbonio-docs-connector-ce \
carbonio-docs-editor \
carbonio-admin-ui \
carbonio-admin-console-ui \
postgresql-12 -y
Enter fullscreen mode Exit fullscreen mode

Image description

Execute o seguinte comando para realizar a configuração inicial do Carbonio CE:

carbonio-bootstrap
Enter fullscreen mode Exit fullscreen mode

Image description

Vamos realizar a alteração do timezone do Carbonio CE, digite "1" para entrar no menu "Common Configuration":
Image description

Digite "6" para entrar no menu "TimeZone":
Image description

Digite o número corresponde ao seu timezone, irei configurar o timezone de "America/Sao_Paulo" número "43":
Image description
Image description

Retorne ao menu principal digitando "r":
Image description

Confirme as configurações digitando "y":
Image description

Aguarde até que ele exiba a mensagem "Configuration complete", e em seguida tecle "ENTER":
Image description

Agora vamos configurar o Carbonio Mesh, ele é necessário para permitir a comunicação entre o Carbonio e seus componentes. Execute o comando abaixo para realizar a configuração de forma interativa:

service-discover setup-wizard
Enter fullscreen mode Exit fullscreen mode

Primeiro ele irá solicitar o seu endereço IP seguido da máscara de rede, no meu exemplo será o 10.0.2.133/20. Em seguida irá solicitar uma senha para o Carbonio Mesh que é usado para configurações e gerenciamento, repita a senha novamente (por segurança, ele não irá mostrar os caracteres):
Image description

Obs: Caso tenha perdido a senha, você pode encotrar ela no arquivo /var/lib/service-discover/password (acessível apenas pelo usuário root).

Para concluir a instalação do Carbonio Mesh, execute o seguinte comando (será solicitada a senha, digite a senha definida na etapa anterior):

pending-setups -a
Enter fullscreen mode Exit fullscreen mode

Image description
Image description

Execute os comandos abaixo para realizar a criação da Role, da Database e para o banco de dados inicial de arquivos para o Carbonio CE:

NOTA: Altere DB_ADM_PWD para uma senha de sua escolha, no primeiro e no terceiro comando.

su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password 'DB_ADM_PWD';\""
su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm owner carbonio_adm;\""
PGPASSWORD=DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
Enter fullscreen mode Exit fullscreen mode

Image description

Execute um Stop/Start utilizando os comandos abaixo:

su - zextras
zmcontrol stop
zmcontrol start
Enter fullscreen mode Exit fullscreen mode

Image description

Execute o comando abaixo para definir uma senha para o usuário Global Admin (usuário administrador da console Carbonio CE acessível na porta 6071):

NOTA: Altere a informação do domínio conforme o seu ambiente e altere para uma senha de sua escolha.

su - zextras
carbonio prov setpassword zextras@alfredocastro.com.br YOURPASSWORD
Enter fullscreen mode Exit fullscreen mode

Image description

NOTA: Execute o comando logado com o usuário zextras (su - zextras).

Etapa 04 - Configurando o DKIM

DKIM, ou DomainKeys Identified Mail, é um método de autenticação de emails. Ele ajuda a verificar a autenticidade do remetente e a integridade da mensagem de email. Quando um servidor de email usa DKIM, ele adiciona uma assinatura criptográfica aos cabeçalhos do email enviado. Essa assinatura é gerada usando uma chave privada específica do domínio do remetente.

Quando o email é recebido pelo servidor de destino, o servidor verifica essa assinatura usando a chave pública disponível no registro DNS do domínio do remetente. Se a assinatura corresponder aos dados do cabeçalho do email, isso indica que o email não foi alterado após ter sido enviado pelo remetente autenticado.

Essencialmente, DKIM ajuda a combater o spoofing de email e a garantir que os emails sejam autenticados como legítimos. Isso pode ajudar a reduzir a probabilidade de que emails falsificados ou maliciosos sejam entregues na caixa de entrada do destinatário.

Para configurarmos, execute o seguinte comando para gerar o registro DNS:

NOTA: Altere o domínio conforme o seu ambiente.

su - zextras
/opt/zextras/libexec/zmdkimkeyutil -a -d alfredocastro.com.br
Enter fullscreen mode Exit fullscreen mode

Image description

No exemplo acima, foi gerado o seguinte registro para ser criado no DNS:

Tipo: TXT

Registro: 9EEEDFAE-FC33-11EE-9B42-EAD105BED053._domainkey

Valor: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5IYCXNy92oQdyTDrXAIfDFz/fHzmNdeqhgSeErR/m0SYDguQKeb7c19zr4imctX2a6HdzV1W5c8w90jvbvKYGUuBOBhSA/APx0DEa+DxV59+D173PE/iKpDuAIBajWyXT+oVH9JX6iCg33Jk4ghEakZ4jz+NsSkVJ3rwUIHvBWnfb7BNF5MPnQ18O9YHvS3POdldIdIme/JHCuew3k/biXIhZxVE9zg2YXwq1AjxCo24jqtDIUhG26koAeSguDDXremk3hyzEG4qKLnF47gdbDSijBBllAMV3CVzqBhBuVOV3gNA1ifGtiAUXH3YHQJeYFqy2yld8oZlqFozuSXzFQIDAQAB
Enter fullscreen mode Exit fullscreen mode

Acesse o seu gerenciador de registros DNS do seu domínio e crie o registro acima de acordo com o seu cenário:

Veja um exemplo:
Image description

Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
Image description

Etapa 05 - Configurando um Certificado SSL Let's Encrypt no Carbonio CE via Console

A Zextras introduziu uma maneira simplificada e aprimorada de configurar certificados SSL Let's Encrypt através da Console Web. Com esta atualização, você agora pode facilmente implementar certificados para um único domínio ou vários domínios.

Para configurar o Let's Encrypt, você precisa ter o pacote certbot, execute o seguinte comando para verificar se ele está instalado:

dpkg -l | grep carbonio-certbot
Enter fullscreen mode Exit fullscreen mode

Image description

Verifique o modo zimbraReverseProxyMailMode do seu servidor. Por padrão é definido como https, execute o seguinte comando:

NOTA: Altere a URL conforme o seu ambiente

su - zextras -c "carbonio prov gs mail.alfredocastro.com.br | grep -i zimbraReverseProxyMailMode"
Enter fullscreen mode Exit fullscreen mode

Image description

Para que o certbot funcione, precisamos alterar o modo zimbraReverseProxyMailMode de https para redirect, execute os comandos abaixo para realizar a alteração:

NOTA: Altere a URL conforme o seu ambiente

su - zextras -c "carbonio prov ms mail.alfredocastro.com.br zimbraReverseProxyMailMode redirect"
su - zextras -c "zmconfigdctl restart"
su - zextras -c "carbonio prov gs mail.alfredocastro.com.br | grep -i zimbraReverseProxyMailMode"
Enter fullscreen mode Exit fullscreen mode

Image description

Faça login no Console de administração do Carbonio CE, utilize o usuário zextras@alfredocastro.com.br:

NOTA: https://mail.alfredocastro.com.br:6071/ - altere a URL conforme o seu ambiente

Image description

Clique em "Domains" no menu lateral esquerdo:
Image description

Selecione o domínio desejado:
Image description

Clique em "Virtual Hosts & Certificates":
Image description

Digite a URL que você configurou em seu servidor de mail e clique em "ADD":
Image description

Clique em "SAVE":
Image description

Clique em "UPLOAD AND VERIFY CERTIFICATE":
Image description

Altere "Certificate Type" para "I want to use a Let's Encrypt (longChain) certificate" e em seguida clique em "GENERATE CERTIFICATE":
Image description

Você verá uma notificação em verde escrito "The System is processing your certificate generation request. It will send the result to the Global and Domain notification recipients.", o Carbonio CE irá solicitar o certificado.
Image description

Se tudo ocorrer bem você irá receber dois e-mails com a conclusão da solicitação, acesse a URL do seu servidor de e-mail e faça login com o usuário zextras@alfredocastro.com.br:
Image description
Image description
Image description

Para finalizar, execute o comando abaixo para reiniciar o Carbonio CE e finalizar a instalação do Certificado SSL:

su - zextras -c "zmcontrol restart"
Enter fullscreen mode Exit fullscreen mode

Image description

Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.

https://alfredocastro.com.br/posts/instalando-e-configurando-o-servidor-de-e-mail-carbonio-ce-na-aws-substituto-do-zimbra/

Top comments (0)