Talvez você tenha um site, que precise enviar e-mails aos usuários, ou talvez queira armazenar seus e-mails em seu próprio servidor para proteger sua privacidade.
No entanto, criar seu próprio servidor de e-mail pode ser um problema, pois existem tantos componentes de software que você precisa instalar e configurar corretamente.
Para facilitar essa jornada, estou criando uma série de tutoriais sobre como criar seu próprio servidor de e-mail no Ubuntu.
Eu sei que isso parece ser uma tarefa muito assustadora. No entanto, com base no que você deseja alcançar, pode não ser necessário seguir todos eles. Meus artigos são fáceis de seguir; portanto, se você dedicar algum tempo a isso, terá um servidor de email em funcionamento.
Dica : Se você não deseja criar um servidor de e-mail do zero, que é um processo longo e tedioso, use o iRedMail para configurar rápida e facilmente um servidor de e-mail completo .
Este artigo é parte 1 desta série de tutoriais. Neste artigo, mostrarei como configurar um servidor SMTP Postfix muito básico, também conhecido como MTA (agente de transporte de mensagens).
Depois de concluir este artigo, você poderá enviar e receber emails com seu próprio domínio de email no seu próprio servidor de email. Este tutorial foi testado no servidor Ubuntu 20.04 e Ubuntu 18.04.
Sobre o Postfix
O Postfix é um MTA (agente de transporte de mensagens) de ponta, também conhecido como servidor SMTP, que serve a dois propósitos.
- É responsável pelo transporte de mensagens de email de um cliente de email / agente de usuário de email (MUA) para um servidor SMTP remoto.
- Também é usado para aceitar e-mails de outros servidores SMTP.
O Postfix foi desenvolvido por Wietse Venema, especialista em Unix e segurança. É fácil de usar, projetado com segurança e modularidade em mente, com cada módulo sendo executado no nível de privilégio mais baixo possível necessário para realizar o trabalho. O Postfix se integra perfeitamente ao Unix / Linux e não fornece funcionalidades que o Unix / Linux já fornece. É confiável em condições simples e estressantes.
O Postfix foi originalmente projetado como um substituto para o Sendmail – o servidor SMTP tradicional no Unix.
Em comparação, o Postfix é mais seguro e fácil de configurar. É compatível com o Sendmail, portanto, se você desinstalar o Sendmail e substituí-lo pelo Postfix, os scripts e programas existentes continuarão funcionando perfeitamente.
Neste tutorial, você aprenderá como configurar o Postfix para um único domínio.
Pré-requisitos
Para enviar emails do seu servidor, a porta 25 (de saída) deve estar aberta. Muitos ISPs e provedores de hospedagem, como o DigitalOcean, bloqueiam a porta 25 para controlar o spam. Talvez você tenha que entrar em contato para solicitar o desbloqueio.
Depois de ter um servidor, instale o Ubuntu nele e siga as instruções abaixo.
Você também precisa de um nome de domínio. Para isso recomendamos a Hostgator.
O que fazer antes de instalar o Postfix
Para melhorar o desempenho do Postfix e tirar o máximo proveito do Postfix, você precisa configurar corretamente o servidor Ubuntu.
Definir um nome de host correto para o servidor Ubuntu
Por padrão, o Postfix usa o nome do host do servidor para se identificar ao se comunicar com outros MTAs. O nome do host pode ter duas formas: uma única palavra e FQDN.
A forma de palavra única é usada principalmente em computadores pessoais. Seu computador de casa Linux pode ser nomeado linux, debian, ubuntu, etc. FQDN (Fully Qualified Domain Name) é comumente usado em servidores de Internet e devemos usar FQDN em nossos servidores de e-mail. Consiste em duas partes: um nome de nó e um nome de domínio. Por exemplo:
mail.seudominio.com
mail é o nome do nó, seudominio.com é o nome do domínio.
O FQDN aparecerá no banner smtpd. Alguns MTAs rejeitam mensagens se o seu Postfix não fornecer FQDN no banner smtpd. Alguns MTAs até consultam o DNS para ver se o FQDN no banner smtpd resolve para o IP do seu servidor de email .
Digite o seguinte comando para ver o formulário FQDN do seu nome de host.
hostname -f
Se o seu servidor Ubuntu ainda não possui um FQDN, você pode configurá-lo com hostnamectl .
sudo hostnamectl set-hostname your-fqdn
Um FQDN comum para servidor de e-mail é mail.seudominio.com. Você precisa fazer logoff e logon novamente para ver essa alteração no prompt de comando.
Configurar registros DNS para seu servidor de email
Você precisa acessar o serviço de hospedagem DNS (geralmente o registrador de domínio ) para configurar os registros DNS
Registro MX
Um registro MX informa a outros MTAs que seu servidor de email mail.seudominio.com é responsável pela entrega de email para seu nome de domínio.
Registro MX @ mail.seudominio.com
Um nome comum para o host MX é mail.seudominio.com. Você pode especificar mais de um registro MX e definir prioridade para seus servidores de e-mail. Um número menor significa prioridade mais alta. Aqui, usamos apenas um registro MX e definimos 0 como o valor da prioridade. (0 – 65355)
Observe que, ao criar o registro MX, você deve inserir @ ou seu nome de domínio no topo do campo, como abaixo. Um nome de domínio principal é um nome de domínio sem nenhum subdomínio.
Uma gravação
Um registro A mapeia um FQDN para um endereço IP.
mail.seudominio.com <endereço IP>
Registro AAAA
Se o seu servidor usa o endereço IPv6, também é uma boa ideia adicionar um registro AAAA para mail.seudominio.com .
mail.seudominio.com <endereço IPv6>
Dica: Se você usa o serviço DNS do Cloudflare, não deve ativar o recurso CDN ao criar um registro A e AAAA mail.seudominio.com. O Cloudflare não suporta proxy SMTP.
Registro PTR
Um registro de ponteiro, ou registro PTR, mapeia um endereço IP para um FQDN. É a contrapartida do registro A e é usada para pesquisa reversa de DNS (rDNS).
A resolução reversa do endereço IP com registro PTR pode ajudar a bloquear spammers. Muitos MTAs aceitam email apenas se o servidor for realmente responsável por um determinado domínio.
Definitivamente, você deve definir um registro PTR para o servidor de e-mail, para que seus e-mails tenham uma chance maior de chegar à caixa de entrada do destinatário, em vez da pasta de spam.
Para verificar o registro PTR em busca de um endereço IP, você pode usar o seguinte comando.
dig -x <IP> +short
ou
host <IP>
Como você obtém o endereço IP do seu provedor de hospedagem, não do registrador de domínio, você deve definir o registro PTR para o seu endereço IP no painel de controle do seu provedor de hospedagem. Seu valor deve ser o nome do host do seu servidor de email: mail.seudominio.com.
Se o seu servidor usar o endereço IPv6, adicione também o registro PTR ao seu endereço IPv6.
Você pode editar o registro DNS reverso dos endereços IPv4 e IPv6.
Depois de tudo o que foi dito acima, vamos brincar com o Postfix.
Instalando o Postfix
No seu servidor ubuntu, execute os dois comandos a seguir.
sudo apt-get update sudo apt-get install postfix -y
Você será solicitado a selecionar um tipo para a configuração de email. Normalmente, você vai querer escolher o segundo tipo: Internet Site.
- No configuration significa que o processo de instalação não configurará nenhum parâmetro.
- Internet Site significa usar o Postfix para enviar emails para outros MTAs e receber emails de outros MTAs.
- Internet with smarthost significa usar o postfix para receber emails de outros MTAs, mas usar outro host inteligente para retransmitir emails para o destinatário.
- Satellite system significa usar host inteligente para enviar e receber email.
- Local only significa que os e-mails são transmitidos apenas entre contas de usuário local.
Em seguida, digite seu nome de domínio para o nome do e-mail do sistema, ou seja, o nome do domínio após o símbolo @.
Por exemplo, um endereço de email contato@seudominio.com, então digite seudominio.com e o nome do e-mail do sistema. Este nome de domínio será anexado aos endereços que não possuem um nome de domínio especificado.
Uma vez instalado, o Postfix será iniciado automaticamente e um arquivo será gerado em /etc/postfix/main.cf. Agora podemos verificar a versão do Postfix com este comando:
postconf mail_version
No Ubuntu 18.04, a versão do Postfix é 3.3.0 e o Ubuntu 20.04 é fornecido com a versão 3.4.10.
mail_version = 3.4.10
O utilitário netstat nos diz que o processo mestre do Postfix está escutando na porta TCP 25. (Se o servidor Ubuntu não tiver o comando netstat, você poderá executar o comando sudo apt install net-tools para instalá-lo.)
sudo netstat -lnpt
O Postfix é enviado com muitos binários sob o diretório /usr/sbin/, como pode ser visto com o seguinte comando.
dpkg -L postfix | grep /usr/sbin/
Resultado:
/usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postfix-add-filter /usr/sbin/postfix-add-policy /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/posttls-finger /usr/sbin/qmqp-sink /usr/sbin/qmqp-source /usr/sbin/qshape /usr/sbin/rmail /usr/sbin/sendmail /usr/sbin/smtp-sink /usr/sbin/smtp-source
Porta 25 aberta (entrada) no Firewall
O Ubuntu não habilita um firewall por padrão. Se você ativou o firewall UFW, precisará abrir a porta 25 (entrada) com o seguinte comando, para que o Postfix possa receber emails de outros servidores SMTP.
sudo ufw allow 25/tcp
Em seguida, podemos usar nmap para verificar portas abertas em nosso servidor. Execute o seguinte comando em um computador separado, como o seu computador pessoal. (Suponho que você esteja lendo este tutorial em um computador Linux.) Substitua your-server-ip pelo IP real.
sudo nmap your-server-ip
Você pode ver na captura de tela acima que a porta TCP 25 está aberta no meu servidor.
nmap pode ser instalado no Linux com um dos seguintes comandos, dependendo da distribuição do Linux.
sudo apt install nmap sudo yum install nmap sudo zypper install nmap sudo pacman -S nmap
Verificando se a porta 25 (de saída) está bloqueada
Execute o seguinte comando no servidor de email para verificar se a porta 25 (de saída) está bloqueada.
telnet gmail-smtp-in.l.google.com 25
Se não estiver bloqueado, você verá mensagens como abaixo, indicando que uma conexão foi estabelecida com sucesso. (Dica: digite quit e pressione Enter para fechar a conexão.)
Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp
Se a porta 25 (saída) estiver bloqueada, você verá algo como:
Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out
Nesse caso, seu Postfix não pode enviar e-mails para outros servidores SMTP. Peça ao seu ISP / provedor de hospedagem para abri-lo para você. Se eles recusarem sua solicitação, você precisará configurar o SMTP para ignorar o bloqueio da porta 25 .
Enviando email de teste
De fato, agora podemos enviar e receber email a partir da linha de comando. Se o seu servidor Ubuntu tiver uma conta de usuário chamada user 1, o endereço de e-mail desse usuário é user1@seudominio.com.
Você pode enviar um email para o usuário root root@seudominio.com. E também pode enviar e-mails para o Gmail, e-mail do Yahoo ou qualquer outro serviço de e-mail.
Ao instalar o Postfix, um binário do sendmail é colocado em /usr/sbin/sendmail, compatível com o servidor SMTP tradicional do Sendmail. Você pode usar o binário sendmail do Postfix para enviar um email de teste para sua conta do Gmail da seguinte forma:
echo "test email" | sendmail your-account@gmail.com
Nesse comando simples, o sendmail lê uma mensagem da entrada padrão e cria “email de teste” como o corpo da mensagem e envia a mensagem para sua conta do Gmail. Você poderá receber este e-mail de teste na sua caixa de entrada do Gmail (ou pasta de spam).
Você pode ver que, embora não tenhamos especificado o endereço de origem, o Postfix anexa automaticamente um nome de domínio para o endereço de origem. Isso porque adicionamos nosso nome de domínio no nome de e-mail do sistema ao instalar o Postfix.
Além disso, você pode tentar responder a este email de teste para verificar se o Postfix pode receber mensagens de email. É provável que os e-mails enviados do seu domínio sejam rotulados como spam. Não se preocupe com isso agora. Resolveremos esse problema nas partes posteriores desta série de tutoriais.
A caixa de entrada de cada usuário está localizada no arquivo /var/spool/mail/<username> ou /var/mail/<username>. Se você não souber onde procurar a caixa de entrada, use este comando.
postconf mail_spool_directory
O log de e-mail do Postfix é armazenado em /var/log/mail.log.
Usando o programa de email para enviar e ler email
Agora vamos instalar um MUA da linha de comando (agente do usuário de email).
sudo apt-get install mailutils
Para enviar email, digite
mail username@gmail.com
user@mail:~$ mail username@gmail.com Cc: Subject: 2nd test email I'm sending this email using the mail program.
Digite a linha de assunto e o texto do corpo. Para saber mail que você terminou de escrever, pressione Ctrl+D e mail enviará essa mensagem para você.
Para ler e-mails recebidos, basta digitar mail.
Veja como usar o mail programa para gerenciar sua caixa de e-mail.
- Para ler a primeira mensagem de email, digite 1. Se apenas partes da mensagem forem exibidas, pressione Enter para mostrar a parte restante da mensagem.
- Para exibir cabeçalhos de mensagens a partir da mensagem 1, digite h.
- Para mostrar a última tela cheia de mensagens, digite h$ ou z.
- Para ler a próxima mensagem de email, digite n.
- Para excluir a mensagem 1, digite d 1.
- Para excluir as mensagens 1, 2 e 3, digite d 1 2 3.
- Para excluir mensagens de 1 a 10, digite d 1-10.
- Para reproduzir a mensagem 1, digite reply 1.
- Para sair do e-mail, digite q.
As mensagens que foram abertas serão movidas de /var/mail/<username> para o arquivo /home/<username>/mbox . Isso significa que outros clientes de email não podem ler essas mensagens.
Para impedir que isso aconteça, digite em x seguido de q para sair do e-mail.
Como aumentar o limite de tamanho do anexo
Por padrão, o anexo não pode ser maior que 10 MB, o que é indicado pelo parâmetro message_size_limit:
postconf | grep message_size_limit
Resultado:
message_size_limit = 10240000
Este parâmetro define o limite de tamanho para emails originados no seu próprio servidor de email e para emails que chegam ao seu servidor.
Para permitir o anexo de tamanho de 50 MB, execute o seguinte comando.
sudo postconf -e message_size_limit=52428800
Quando o comando postconf é chamado com a opção -e (edit), ele tenta encontrar o parâmetro ( message_size_limit) no arquivo de configuração principal do Postfix ( /etc/postfix/main.cf) e altera o valor. Se o parâmetro não puder ser encontrado, ele adiciona o parâmetro no final do arquivo.
Observe que message_size_limit não deve ser maior que o mailbox_size_limit, cujo valor padrão é 51200000 bytes (cerca de 48 MB) no pacote Postfix upstream. No Ubuntu, o valor padrão é definido como 0, como pode ser visto com:
postconf | grep mailbox_size_limit
Resultado:
mailbox_size_limit = 0
Isso significa que a caixa de e-mail não tem limite de tamanho.
Reinicie o Postfix para que as alterações entrem em vigor.
sudo systemctl restart postfix
Ao enviar um email com anexos grandes do servidor de email, você também deve ter cuidado com o limite de tamanho de anexo do servidor de recebimento. Por exemplo, você não pode enviar um anexo com mais de 25 MB para um endereço do Gmail.
Definindo o nome do host do Postfix
Por padrão, o servidor SMTP do Postfix usa o nome do host do sistema operacional. No entanto, o nome do host do sistema operacional pode mudar, portanto, é uma boa prática definir o nome do host diretamente no arquivo de configuração do Postfix.
Abra o arquivo de configuração principal do Postfix com um editor de texto de linha de comando, como o Nano.
sudo nano /etc/postfix/main.cf
Encontre o parâmetro myhostname e defina mail.seudominio.com como o valor. (Nota: você não deve usar o domínio apex seudominio.com como myhostname.)
myhostname = mail.seudominio.com
Salve e feche o arquivo. (Para salvar um arquivo no editor de texto Nano, pressione e Ctrl+O, em seguida, pressione Enter para confirmar. Para sair, pressione Ctrl+X.)
Reinicie o Postfix para que a alteração seja efetivada.
sudo systemctl restart postfix
Criando alias de email
Existem certos aliases necessários que você deve configurar ao operar seu servidor de e-mail em um ambiente de produção. Você pode adicionar um alias de email no arquivo /etc/aliases, que é um arquivo de tabela de pesquisa Postfix especial, usando um formato compatível com o Sendmail.
sudo nano /etc/aliases
Por padrão, existem apenas duas linhas neste arquivo.
# See man 5 aliases for format postmaster: root
A primeira linha é um comentário. A segunda linha é a única definição de um alias neste arquivo. O lado esquerdo é o nome alternativo. O lado direito é o destino final da mensagem de email.
Portanto, os e-mails para postmaster@seudominio.com serão entregues para root@seudominio.com . O endereço de email do postmaster é exigido pela RFC 2142.
Normalmente, não usamos o endereço de email raiz. Em vez disso, o postmaster pode usar um nome de login normal para acessar e-mails. Então você pode adicionar a seguinte linha. Substitua username pelo seu nome de usuário real.
root: username
Dessa forma, os e-mails para postmaster@seudominio.com serão entregues para nomedeusuario@seudominio.com . Agora você pode salvar e fechar o arquivo. Em seguida, reconstrua o banco de dados de alias com o comando newaliases.
sudo newaliases
Usando apenas IPv4
Por padrão, o Postfix usa os protocolos IPv4 e IPv6, como pode ser visto em:
postconf inet_protocols
Resultado:
inet_protocols = all
Se o seu servidor de email não tiver um endereço IPv6 público, é melhor desabilitar o IPv6 no Postfix para evitar conexões IPv6 desnecessárias. Simplesmente execute o seguinte comando para desativar o IPv6 no Postfix.
sudo postconf -e "inet_protocols = ipv4"
Em seguida, reinicie o Postfix.
sudo systemctl restart postfix
Próxima Etapa
Parabéns! Agora você tem um servidor de email Postfix básico em funcionamento. Você pode enviar e-mails em texto sem formatação e ler e-mails recebidos usando a linha de comando.