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 | 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 |
Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
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".
Selecione o Elastic IP e clique em Actions > Update reverse DNS.
Digite a URL criada na etapa anterior para o servidor de e-mail. Em seguida escreva update e clique no botão "Update".
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".
Você irá receber um e-mail de confirmação da solicitação.
Caso sua solicitação seja aprovada, você irá receber outro email confirmando.
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
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
Agora vamos alterar o hostname da máquina. Execute o seguinte comando:
hostnamectl set-hostname mail
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
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
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
Execute o seguinte comando para realizar a configuração inicial do Carbonio CE:
carbonio-bootstrap
Vamos realizar a alteração do timezone do Carbonio CE, digite "1" para entrar no menu "Common Configuration":
Digite "6" para entrar no menu "TimeZone":
Digite o número corresponde ao seu timezone, irei configurar o timezone de "America/Sao_Paulo" número "43":
Retorne ao menu principal digitando "r":
Confirme as configurações digitando "y":
Aguarde até que ele exiba a mensagem "Configuration complete", e em seguida tecle "ENTER":
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):
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
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
Execute um Stop/Start utilizando os comandos abaixo:
su - zextras
zmcontrol stop
zmcontrol start
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
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
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:
Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
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
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"
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"
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
Clique em "Domains" no menu lateral esquerdo:
Clique em "Virtual Hosts & Certificates":
Digite a URL que você configurou em seu servidor de mail e clique em "ADD":
Clique em "UPLOAD AND VERIFY CERTIFICATE":
Altere "Certificate Type" para "I want to use a Let's Encrypt (longChain) certificate" e em seguida clique em "GENERATE CERTIFICATE":
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.
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:
Para finalizar, execute o comando abaixo para reiniciar o Carbonio CE e finalizar a instalação do Certificado SSL:
su - zextras -c "zmcontrol restart"
Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.
Top comments (0)