Como configurar seu próprio servidor de e-mail
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.
Protocolos para recebimento e envio de e-mails Copiar link
SMTP (Simple Mail Transfer Protocol) Copiar link
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 (Post Office Protocol) Copiar link
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).
IMAP (Internet Message Access Protocol) Copiar link
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).
Por que criar seu próprio servidor de e-mail? Copiar link
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.
Configurando o servidor de e-mail Copiar link
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.
Preparando o servidor Copiar link
Entre no modo superusuário:
sudo suAtualize os pacotes:
apt update && apt upgradeVerifique o nome do host:
hostnameSe não corresponder ao domínio desejado:
hostnamectl set-hostname mail.hostname.comConfigure 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-timezonesAtive o serviço:
systemctl enable chronyAbrir as portas necessárias Copiar link
Use o iptables para liberar:
-
25, 465 — SMTP (envio)
-
110, 995 — POP3 (recebimento)
-
143, 993 — IMAP (recebimento)
- 80, 443 — HTTP/HTTPS (painel web)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPTTorne as regras persistentes:
netfilter-persistent saveInstalando e configurando o Postfix Copiar link
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-mysqlDurante 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 vmailEm seguida, crie o usuário vmail e atribua o diretório inicial a /home/mail:
adduser --home /home/mail -gid 1080 -uid 1080 vmailOnde 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 /homeConfiguração principal do Postfix Copiar link
Edite o arquivo:
nano /etc/postfix/main.cfAdicione:
# 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
Arquivos de mapeamento MySQL Copiar link
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cfAdicione 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.cfAdicionar:
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.cfAdicionar:
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.cfAdicione:
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}
Gerando certificados de segurança Copiar link
Crie o diretório:
mkdir -p /etc/ssl/mailGere 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 postfixInstalando e configurando o Dovecot Copiar link
O Dovecot é um servidor IMAP/POP3 de código aberto.
Instale-o com o suporte MySQL:
apt install dovecot-imapd dovecot-pop3d dovecot-mysqlDefina o local de armazenamento:
nano /etc/dovecot/conf.d/10-mail.confNo 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.confSSL:
nano /etc/dovecot/conf.d/10-ssl.confNeste 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.confAdicione a seguinte linha:
lda_mailbox_autocreate = yesConexão MySQL:
nano /etc/dovecot/dovecot-sql.conf.extdriver = 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.confNeste arquivo, adicione a seguinte linha para escutar em todas as interfaces de rede disponíveis:
listen = *Ative e reinicie:
systemctl enable dovecot && systemctl restart dovecotInstalando e configurando o PostfixAdmin Copiar link
Pré-requisitos: servidor web, PHP e MySQL.
Instale as extensões PHP necessárias:
apt install php-mysql php-mbstring php-imapBaixe o PostfixAdmin:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gzCrie 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 1Em seguida, crie um diretório para armazenar caches de modelos:
mkdir /var/www/html/postfixadmin/templates_cDefina as permissões corretas para o servidor web acessar o diretório PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadminCrie 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.phpO 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.phpAtualize 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.
Criando uma caixa de correio no PostfixAdmin Copiar link
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.
Conclusão Copiar link
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.