Ir para o conteúdo principal

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

·1852 palavras·9 minutos
carbonio aws email ec2 zimbra
Alfredo Castro
Autor
Alfredo Castro
AWS Solutions Architect | AWS x3 | LPI x2 | CompTIA Linux+
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:

IMAGEM 01

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

IMAGEM 02
IMAGEM 03
IMAGEM 04
IMAGEM 05

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”.

IMAGEM 01

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

IMAGEM 02

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

IMAGEM 03

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”.

IMAGEM 04

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

IMAGEM 05

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

IMAGEM 06

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.

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

IMAGEM 07

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

IMAGEM 01

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

hostnamectl set-hostname mail

IMAGEM 02

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

IMAGEM 03

Reinicie a máquina utilizando o comando abaixo:

reboot

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

IMAGEM 04
IMAGEM 05

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

IMAGEM 06

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

carbonio-bootstrap

IMAGEM 07

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

IMAGEM 08

Digite “6” para entrar no menu “TimeZone”:

IMAGEM 09

Digite o número corresponde ao seu timezone, irei configurar o timezone de “America/Sao_Paulo” número “43”:

IMAGEM 10
IMAGEM 11

Retorne ao menu principal digitando “r”:

IMAGEM 12

Confirme as configurações digitando “y”:

IMAGEM 13

Aguarde até que ele exiba a mensagem “Configuration complete”, e em seguida tecle “ENTER”:

IMAGEM 14

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

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):

IMAGEM 15

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

IMAGEM 16
IMAGEM 17

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

IMAGEM 18

Execute um Stop/Start utilizando os comandos abaixo:

su - zextras
zmcontrol stop
zmcontrol start

IMAGEM 19

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

IMAGEM 20

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

IMAGEM 01

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

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:

IMAGEM 02

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

IMAGEM 03

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

IMAGEM 01

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"

IMAGEM 02

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"

IMAGEM 03

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

IMAGEM 04

Clique em “Domains” no menu lateral esquerdo:

IMAGEM 05

Selecione o domínio desejado:

IMAGEM 06

Clique em “Virtual Hosts & Certificates”:

IMAGEM 07

Digite a URL que você configurou em seu servidor de mail e clique em “ADD”:

IMAGEM 08

Clique em “SAVE”:

IMAGEM 09

Clique em “UPLOAD AND VERIFY CERTIFICATE”:

IMAGEM 10

Altere “Certificate Type” para “I want to use a Let’s Encrypt (longChain) certificate” e em seguida clique em “GENERATE CERTIFICATE”:

IMAGEM 11

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.

IMAGEM 12

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:

IMAGEM 13
IMAGEM 14
IMAGEM 15

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

su - zextras -c "zmcontrol restart"

IMAGEM 16

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