Tutorial

Como instalar e configurar o Postfix no Ubuntu 18.04

Published on January 9, 2020
Português
Como instalar e configurar o Postfix no Ubuntu 18.04

Introdução

O Postfix é um Agente de Transferência de E-mail (MTA) de código aberto popular que pode ser usado para rotear e entregar e-mails em um sistema Linux. Estima-se que cerca de 25% dos servidores públicos de e-mail na internet executem o Postfix.

Neste guia, vamos ensinar como colocar o Postfix para funcionar rapidamente em um servidor Ubuntu 18.04.

Pré-requisitos

Para acompanhar este guia, será necessário ter acesso a um usuário não raiz com privilégios sudo. Você pode seguir nosso Guia de configuração inicial do servidor Ubuntu 18.04 para criar o usuário necessário.

Para configurar corretamente o Postfix, será necessário um Nome de Domínio Completamente Qualificado (FQDN) apontando para seu servidor Ubuntu 18.04. É possível encontrar ajuda para configurar seu nome de domínio com o DigitalOcean seguindo este guia. Se quiser aceitar e-mails, será necessário garantir que você tenha também um registro MX apontando para seu servidor de e-mail.

Para a finalidade deste tutorial, vamos considerar que você está configurando um host que tem o FQDN do mail.example.com.

Passo 1 — Instalar o Postfix

O Postfix está incluído nos repositórios padrão do Ubuntu, então a instalação é simples.

Para começar, atualize o cache de pacotes local apt e, em seguida, instale o software. Vamos passar a variável de ambiente DEBIAN_PRIORITY=low para nosso comando de instalação para responder a alguns prompts adicionais:

  1. sudo apt update
  2. sudo DEBIAN_PRIORITY=low apt install postfix

Use as informações a seguir para preencher os seus prompts corretamente para seu ambiente:

  • General type of mail configuration?: para isso, vamos escolher Internet Site, uma vez que isso corresponde às nossas necessidades de infraestrutura.
  • System mail name: este é o domínio base usado na construção de um endereço de e-mail válido quando apenas a parte da conta do endereço é fornecida. Por exemplo, o nome de host do nosso servidor é mail.example.com, mas provavelmente queremos definir o nome de e-mail do sistema para example.com, de maneira que, considerando o nome de usuário user1, o Postfix irá usar o endereço user1@example.com.
  • Root and postmaster mail recipient: esta é a conta Linux em que serão encaminhados e-mails destinados a root@ e postmaster@. Use sua conta principal para isso. No nosso caso, sammy.
  • Other destinations to accept mail for: define os destinos de e-mail que essa instância do Postfix aceitará. Se precisar adicionar quaisquer outros domínios que este servidor será responsável por receber, adicione-os aqui. Caso contrário, o padrão deve funcionar bem.
  • Force synchronous updates on mail queue?: uma vez que você provavelmente está usando um sistema de arquivos registrados em diário, aceite a opção **No **aqui.
  • Local networks: esta é uma lista das redes para as quais seu servidor de e-mail está configurado para retransmitir as mensagens. A rede padrão deve funcionar para a maioria dos cenários. Se escolher modificá-la, certifique-se de ser bastante restritivo em relação ao alcance da rede.
  • Mailbox size limit: isso pode ser usado para limitar o tamanho das mensagens. Definindo-o para “0” desativa qualquer restrição de tamanho.
  • Local address extension character: este é o caractere que pode ser usado para separar a parte regular do endereço de uma extensão (usado para criar pseudônimos dinâmicos).
  • Internet protocols to use: escolha se vai restringir a versão de IP que o Postfix suporta. Vamos escolher “all” para nossos fins.

Para deixar bem claro, apresentamos a seguir as configurações que vamos usar neste guia:

  • General type of mail configuration?: Internet Site
  • System mail name: example.com (não mail.example.com)
  • Root and postmaster mail recipient: sammy
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com e localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 127.0.0.0/8[ ::ffff:127.0.0.0]/104[ ::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: all

Se, em algum momento, você precisar voltar para reajustar essas configurações, será possível fazer isso digitando:

  1. sudo dpkg-reconfigure postfix

Os prompts estarão pré-preenchidos com suas respostas anteriores.

Quando tiver terminado, poderemos, então, fazer outras configurações para organizar nosso sistema como quisermos.

Passo 2 — Ajustar a configuração do Postfix

Em seguida, podemos ajustar algumas configurações sobre as quais o pacote não nos solicitou nada.

Para começar, podemos definir a caixa de e-mail. Vamos usar o formato Maildir, que separa mensagens em arquivos individuais que depois são movidos entre os diretórios com base na ação do usuário. A outra opção é usar o formato** mbox** (que não vamos cobrir aqui) que armazena todas as mensagens em um único arquivo.

Vamos definir a variável home_mailbox como Maildir/, o que criará uma estrutura de diretórios sob esse nome, dentro do diretório home do usuário. O comando postconf pode ser usado para consultar ou definir as configurações. Configure a home_mailbox digitando:

  1. sudo postconf -e 'home_mailbox= Maildir/'

Em seguida, podemos definir a localização da tabela virtual_alias_maps. Essa tabela mapeia contas de e-mail arbitrárias para contas do sistema Linux. Criaremos essa tabela em /etc/postfix/virtual. Mais uma vez, é possível usar o comando postconf:

  1. sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Passo 3 — Mapear endereços de email para as contas do Linux

Em seguida, podemos configurar o arquivo de mapas virtuais. Abra o arquivo no seu editor de texto:

  1. sudo nano /etc/postfix/virtual

A tabela de mapa de pseudônimo virtual usa um formato muito simples. À esquerda, você pode listar quaisquer endereços para os quais deseja aceitar e-mails. Depois disso, separados por um espaço em branco, digite o usuário Linux para o qual gostaria que esse e-mail fosse entregue.

Por exemplo, se quiser aceitar e-mails nos endereços contact@example.com e admin@example.com e que esses e-mails sejam entregues ao usuário Linux sammy, você pode configurar seu arquivo dessa forma:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

Após mapear todos os endereços para as contas apropriadas do servidor, salve e feche o arquivo.

Podemos aplicar o mapeamento digitando:

  1. sudo postmap /etc/postfix/virtual

Reinicie o processo do Postfix para ter certeza de que todas as alterações foram aplicadas:

  1. sudo systemctl restart postfix

Passo 4 — Ajustar o Firewall

Se estiver executando o firewall UFW, como configurado no guia de configuração inicial do servidor, será necessário conceder uma exceção para o Postfix.

É possível permitir conexões ao serviço digitando:

  1. sudo ufw allow Postfix

O componente do servidor de correio eletrônico Postfix está instalado e pronto. Em seguida, vamos configurar um cliente que possa lidar com o e-mail que o Postfix irá processar.

Passo 5 — Configurando o ambiente para corresponder à localização do e-mail

Antes de instalar um cliente, devemos garantir que nossa variável de ambiente MAIL esteja configurada corretamente. O cliente irá inspecionar essa variável para descobrir onde procurar o e-mail do usuário.

Para que a variável seja definida independentemente da forma como você acessa sua conta (através de ssh, su, su -, sudo, etc) será necessário definir a variável em alguns locais diferentes. Vamos adicioná-la a /etc/bash.bashrc e a um arquivo dentro de /etc/profile.d para garantir que cada usuário tenha essa variável configurada.

Para adicionar a variável a esses arquivos, digite:

  1. echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Para ler a variável na sua sessão atual, você pode obter o arquivo /etc/profile.d/mail.sh:

  1. source /etc/profile.d/mail.sh

Passo 6 — Instalar e configurar o cliente de e-mail

Para interagir com o e-mail que está sendo entregue, vamos instalar o pacote s-nail. Esta é uma variante do cliente BSD xmail, que é rico em recursos, pode lidar com o formato Maildir corretamente e que, de maneira geral, é compatível com versões anteriores. A versão GNU do mail tem algumas limitações como, por exemplo, sempre salvar mensagens de leitura no formato mbox, independentemente do formato de origem.

Para instalar o pacote s-nail, digite:

  1. sudo apt install s-nail

Devemos ajustar algumas configurações. Abra o arquivo /etc/s-nail.rc no seu editor:

  1. sudo nano /etc/s-nail.rc

Ao final do arquivo, adicione as seguintes opções:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Isso permitirá que o cliente abra, mesmo com uma caixa de entrada vazia. Isso também irá definir o diretório Maildir para a variável interna folder e, depois, usará essa variável para criarumarquivo mbox sent dentro dela para armazenar os e-mails enviados.

Salve e feche o arquivo quando você terminar.

Passo 7 — Inicializar o Maildir e testar o cliente

Agora, podemos testar o cliente.

Inicializando a estrutura do diretório

A maneira mais fácil de criar a estrutura do Maildir dentro do nosso diretório home é enviando um e-mail para nós mesmos. Podemos fazer isso com o comando s-nail. Uma vez que o arquivo sent estará disponível apenas após a criação do Maildir, devemos desativar a gravação no arquivo em relação ao nosso e-mail inicial. Podemos fazer isso passando adicionando a opção -Snorecord.

Envie o e-mail transmitindo uma string para o comando s-nail. Ajuste o comando para marcar seu usuário Linux como o destinatário:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

Você pode obter a seguinte resposta:

Output
Can't canonicalize "/home/sammy/Maildir"

Isso é normal e pode apenas aparecer ao enviar essa primeira mensagem. Podemos verificar e garantir que o diretório foi criado procurando nosso diretório ~/Maildir:

  1. ls -R ~/Maildir

Você deve ver que a estrutura do diretório foi criada e que um novo arquivo de mensagem está no diretório ~/Maildir/new:

Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

Parece que nosso e-mail foi entregue.

Gerenciando o e-mail com o cliente

Use o cliente para verificar seu e-mail:

  1. s-nail

Você deve ver sua nova mensagem à espera:

Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com Wed Dec 31 19:00 14/369 init

Apenas clicar no ENTER deve ser suficiente para mostrar sua mensagem:

Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Wed Dec 31 19:00:00 1969 Date: Fri, 13 May 2016 18:07:49 -0400 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

Você pode voltar para sua lista de mensagens digitando h e, depois, pressionando a tecla ENTER:

  1. h
Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >R 1 sammy@example.com Wed Dec 31 19:00 14/369 init

Uma vez que essa mensagem não é muito útil, podemos excluí-la digitando d e, em seguida, pressionando a tecla ENTER:

  1. d

Saia e volte para o terminal digitando q e, depois, pressionando a tecla ENTER:

  1. q

Enviando e-mails com o cliente

É possível testar o envio de e-mails digitando uma mensagem em um editor de texto:

  1. nano ~/test_message

Dentro, digite algum texto que você gostaria de enviar:

~/test_message
Hello,

This is a test.  Please confirm receipt!

Ao usar o comando cat, podemos transmitir a mensagem para o processo s-nail. Isso irá enviar a mensagem como seu usuário Linux por padrão. Você pode ajustar o campo “De” com o sinalizador -r se quiser modificar esse valor para outra coisa:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com

As opções acima são:

  • -s: a linha de assunto do e-mail
  • -r: uma alteração opcional no campo “De:” do e-mail. Por padrão, o usuário Linux com o qual você estiver logado será usado para preencher este campo. A opção -r permite que você altere isso.
  • user@email.com: a conta para a qual enviar o e-mail. Substitua essa opção por uma conta válida à qual você tenha acesso.

Você pode ver suas mensagens enviadas dentro do seu cliente s-nail. Inicie o cliente interativo novamente digitando:

  1. s-nail

Depois disso, veja suas mensagens enviadas digitando:

  1. file +sent

Você pode gerenciar os e-mails enviados usando os mesmos comandos que você usa para os e-mails recebidos.

Conclusão

Agora, você deve ter o Postfix configurado no seu servidor Ubuntu 18.04. O gerenciamento de servidores de e-mail pode ser uma tarefa difícil para administradores iniciantes, mas com esta configuração, você deverá ter as funcionalidades básicas de e-mails MTA para começar.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel