Um servidor de e-mail é um sistema responsável por gerenciar o envio e o recebimento correto de mensagens entre o remetente e o destinatário. Por exemplo, quando você envia um e-mail pelo Gmail, está usando o servidor de e-mail do Google.
Um cliente de e-mail, por outro lado, é o programa usado para ler, enviar e armazenar mensagens. Exemplos incluem Microsoft Outlook, Thunderbird e outros.
Choose your server now!
O servidor de saída utiliza o protocolo SMTP (Simple Mail Transfer Protocol).
Ele possui duas funções principais:
Verificar a configuração do remetente e permitir que o dispositivo envie a mensagem.
Transmitir a mensagem e receber o código de resposta.
Os servidores SMTP usam as portas 25 (não criptografada) e 465 (criptografada).
POP3 é um protocolo para receber e-mails. Ele permite que o cliente de e-mail se conecte ao servidor e baixe as mensagens para o dispositivo local, possibilitando acesso offline. Normalmente, as mensagens são removidas do servidor após o download (mas é possível manter uma cópia).
POP3 utiliza as portas 110 (sem criptografia) e 995 (com SSL/TLS).
Assim como o POP3, o IMAP é usado para receber e-mails, mas permite gerenciar as mensagens diretamente no servidor, sem precisar baixá-las. Isso é útil para acessar sua caixa de entrada em vários dispositivos.
IMAP usa as portas 143 (sem criptografia) e 993 (com SSL/TLS).
A resposta mais comum é:
“Para usar meu próprio domínio no endereço de e-mail.”
Isso é verdade, mas não é o único motivo. Você pode usar um domínio personalizado sem precisar configurar um servidor próprio. Muitos provedores permitem vincular seu domínio aos servidores de e-mail deles. A principal vantagem é que eles já fornecem um servidor SMTP configurado, com filtros antispam e certificados prontos. Basta definir corretamente os registros NS (Name Server) — o que é muito mais simples do que montar seu próprio servidor.
Porém, serviços de terceiros têm limitações:
Menos controle: você não define totalmente como o e-mail funciona.
Limites de envio: cada empresa impõe restrições de volume.
Se você envia grandes quantidades (como newsletters ou uso corporativo), isso pode ser um problema.
Se optar por criar seu próprio servidor, será necessário gerenciar:
Cotas e limites de envio
Backups para evitar perda de dados
Listas negras de spam
Permissões de acesso se várias pessoas usarem o mesmo sistema
Ter um servidor próprio oferece controle total, mas requer maior conhecimento técnico e responsabilidade.
Nesta guia, criaremos um servidor em uma máquina na nuvem da Hostman, com Ubuntu 20.04 como sistema operacional.
O servidor oferecerá criptografia, proteção antispam e um painel de administração web para gerenciar contas.
Entre no modo superusuário:
sudo su
Atualize os pacotes:
apt update && apt upgrade
Verifique o nome do host:
hostname
Se não corresponder ao domínio desejado:
hostnamectl set-hostname mail.hostname.com
Configure o fuso horário e sincronização de tempo com chrony:
apt install chrony
timedatectl set-timezone Europe/Athens
Liste os fusos horários:
timedatectl list-timezones
Ative o serviço:
systemctl enable chrony
Use o iptables para liberar:
25, 465 — SMTP (envio)
110, 995 — POP3 (recebimento)
143, 993 — IMAP (recebimento)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPT
Torne as regras persistentes:
netfilter-persistent save
O Postfix é um MTA (Mail Transfer Agent) de código aberto com arquitetura modular. Instale o Postfix e o módulo MySQL:
apt install postfix postfix-mysql
Durante a instalação: selecione Internet Site e informe seu domínio completo (FQDN).
Crie o usuário e grupo responsáveis pelo armazenamento de e-mails:
addgroup -gid 1080 vmail
Em seguida, crie o usuário vmail e atribua o diretório inicial a /home/mail:
adduser --home /home/mail -gid 1080 -uid 1080 vmail
Onde 1080 é o ID do grupo (GID) e o ID do usuário (UID). Se 1080 já estiver em uso, você pode escolher um valor diferente. Verifique se o diretório /home/mail pertence ao usuário e grupo vmail:
ll /home
Edite o arquivo:
nano /etc/postfix/main.cf
Adicione:
# Domains we accept mail for
mydestination = localhost.$mydomain, localhost, localhost.localdomain
# Postfix protocol
inet_protocols = ipv4
# Path to the public certificate
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
# Path to the private certificate
smtpd_tls_key_file = /etc/ssl/mail/private.key
Then, add additional options required for Postfix to function correctly:
# Mail storage location
virtual_mailbox_base = /home/mail
# Path to alias maps
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Domain storage format
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Mailbox storage format
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Minimum virtual user ID
virtual_minimum_uid = 1080
# UID for the main user handling mail
virtual_uid_maps = static:1080
# GID for the group handling mail
virtual_gid_maps = static:1080
# Register Dovecot as the mail delivery agent
virtual_transport = dovecot
# Enable secure authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# Enable TLS encryption for outgoing SMTP connections
smtp_use_tls = yes
# Enable TLS support for incoming connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cf
Adicione o seguinte conteúdo:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Da mesma forma, configure os mapas de domínio:
nano /etc/postfix/mysql_virtual_domains_maps.cf
Adicionar:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
Caixas de correio:
nano /etc/postfix/mysql_virtual_mailbox_maps.cf
Adicionar:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Ajustando o master.cf
nano /etc/postfix/master.cf
Adicione:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Crie o diretório:
mkdir -p /etc/ssl/mail
Gere os certificados:
openssl req -new -x509 -days 1000 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=CY/ST=Limassol/L=Limassol/O=Global Security/OU=IT Department/CN=mail.devnullhost.com"
Ative e reinicie o Postfix:
systemctl enable postfix && systemctl restart postfix
O Dovecot é um servidor IMAP/POP3 de código aberto.
Instale-o com o suporte MySQL:
apt install dovecot-imapd dovecot-pop3d dovecot-mysql
Defina o local de armazenamento:
nano /etc/dovecot/conf.d/10-mail.conf
No arquivo, especifique a estrutura de diretório para armazenar e-mails. Usaremos uma hierarquia de domínio → usuário:
mail_location = maildir:/home/mail/%d/%u/
No mesmo arquivo, configure o método de autenticação:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
Edite o arquivo de configuração de autenticação do Dovecot:
nano /etc/dovecot/conf.d/10-auth.conf
SSL:
nano /etc/dovecot/conf.d/10-ssl.conf
Neste arquivo, adicione o seguinte:
ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key
Criação automática de caixas de correio:
nano /etc/dovecot/conf.d/15-lda.conf
Adicione a seguinte linha:
lda_mailbox_autocreate = yes
Conexão MySQL:
nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfixPa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
Abra o arquivo de configuração principal do Dovecot para configurar a interface do servidor:
nano /etc/dovecot/dovecot.conf
Neste arquivo, adicione a seguinte linha para escutar em todas as interfaces de rede disponíveis:
listen = *
Ative e reinicie:
systemctl enable dovecot && systemctl restart dovecot
Pré-requisitos: servidor web, PHP e MySQL.
Instale as extensões PHP necessárias:
apt install php-mysql php-mbstring php-imap
Baixe o PostfixAdmin:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
Crie um diretório para PostfixAdmin e extraia o conteúdo do arquivo:
mkdir -p /var/www/html/postfixadmin && tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
Em seguida, crie um diretório para armazenar caches de modelos:
mkdir /var/www/html/postfixadmin/templates_c
Defina as permissões corretas para o servidor web acessar o diretório PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadmin
Crie o banco de dados:
mysql -u root
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixPa$$w0rd';
exit;
Edite o arquivo de configuração:
nano /var/www/html/postfixadmin/config.local.php
O conteúdo do arquivo deve ser:
<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_password'] = 'postfixPa$$w0rd';
$CONF['emailcheck_resolve_domain']='NO';
?>
Abra /postfixadmin/public/setup.php, gere o hash da senha, insira-o no arquivo e acesse /postfixadmin/public/login.php.
nano /var/www/html/postfixadmin/config.local.php
Atualize a página /postfixadmin/public/setup.php e faça login com a senha que você usou para gerar o hash. Se tudo estiver configurado corretamente, você deverá ver uma página de verificação de configuração.
Na parte inferior desta página, há um formulário para criar uma conta de administrador. Após criar a conta de administrador com sucesso, acesse /postfixadmin/public/login.php e faça login com as credenciais que você acabou de configurar.
Você será redirecionado para o painel de administração do PostfixAdmin.
No painel:
Domain List → New Domain
Depois Overview → Create Mailbox
Configurações de cliente:
|
Serviço |
Porta |
Segurança |
|
IMAP |
143 |
STARTTLS |
|
POP3 |
110 |
STARTTLS |
|
SMTP |
25 |
STARTTLS |
Login e senha: os definidos na criação da conta.
Nesta guia, aprendemos o que é um servidor de e-mail auto-hospedado e como configurá-lo passo a passo. A principal vantagem é ter controle total: criar caixas ilimitadas, definir aliases e gerenciar usuários.
Tudo isso pode ser implementado em um servidor em nuvem da Hostman, seguindo estas etapas para obter um sistema de e-mail seguro e confiável.