Tutorial

Como instalar e configurar o Postfix no Ubuntu 20.04

Published on July 16, 2020
Português
Como instalar e configurar o Postfix no Ubuntu 20.04

Uma versão anterior deste tutorial foi escrita por Justin Ellingwood.

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, você irá aprender como instalar e configurar o Postfix em um servidor Ubuntu 20.04. Em seguida, você irá testar se o Postfix é capaz de encaminhar e-mail corretamente instalando o s-nail, um Mail User Agent (MUA), também conhecido como um cliente de e-mail.

Observe que o objetivo deste tutorial é ajudá-lo a colocar o Postfix funcionando rapidamente com apenas algumas funcionalidades básicas de e-mail. Você não terá um servidor de e-mail completo ao final deste guia, mas você terá alguns dos componentes fundamentais dessa configuração para ajudá-lo a começar.

Pré-requisitos

Para seguir este guia, você precisará do seguinte:

  • Um servidor executando Ubuntu 20.04 para funcionar como seu servidor de e-mail do Postfix. O servidor deve ter um usuário não-root com privilégios sudo e um firewall configurado com UFW. Siga nosso guia de configuração inicial do servidor Ubuntu 20.04 para configurar isto.
  • Um nome de domínio totalmente qualificado apontado para o seu servidor Ubuntu 20.04. Você pode encontrar ajuda para configurar seu nome de domínio com a DigitalOcean seguindo nossa documentação de rede sobre domínios e DNS. Esteja ciente de que se você planeja acessar e-mails de um local externo, você também precisará certificar-se de que tem um registro MX apontando para seu servidor de e-mail.

Observe que este tutorial assume que você está configurando um host que tenha o FQDN de mail.example.com. Sempre que necessário, certifique-se de alterar example.com ou mail.example.com para refletir seu próprio FQDN.

Passo 1 — Instalando o Postfix

O Postfix está incluído nos repositórios padrão do Ubuntu, assim você pode instalá-lo com o APT.

Para começar, atualize seu cache de pacotes apt local:

  1. sudo apt update

Em seguida, instale o pacote postfix com o seguinte comando. Observe que aqui passamos a variável de ambiente DEBIAN_PRIORITY=low neste comando de instalação. Isso fará com que o processo de instalação solicite que você configure algumas opções adicionais:

  1. sudo DEBIAN_PRIORITY=low apt install postfix

O processo de instalação abrirá uma série de prompts interativos. Para os propósitos deste tutorial, use as seguintes informações para preencher seus prompts:

  • General type of mail configuration?: para isto, escolha Internet Site uma vez que isso atende à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, digamos que o nome de host do seu servidor é mail.example.com. Você provavelmente desejará definir o nome do correio do sistema como example.com para que, dado o usuário user1, o Postfix 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. Neste caso de exemplo, sammy.
  • Other destinations to accept mail for: define os destinos de e-mail que essa instância do Postfix aceitará. Se você precisar adicionar outros domínios pelos quais este servidor será responsável por receber, adicione-os aqui. Caso contrário, o padrão será suficiente.
  • 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. O padrão deve funcionar para a maioria dos cenários. Se você optar por modificá-la, certifique-se de ser muito restritivo em relação à faixa 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). O padrão, + irá funcionar para este tutorial.
  • Internet protocols to use: escolha se vai restringir a versão de IP que o Postfix suporta. Para os fins deste tutorial, escolha all.

Para ser explícito, estas são as configurações usadas neste guia:

  • General type of mail configuration?: Internet Site
  • System mail name: example.com (e não mail.example.com)
  • Root and postmaster mail recipient: o nome de usuário da sua conta principal do Linux (sammy em nossos exemplos)
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, 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

Nota: Se você precisar retornar para alterar essas configurações, poderá fazê-lo digitando:

  1. sudo dpkg-reconfigure postfix

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

Quando o processo de instalação terminar, você está pronto para fazer algumas atualizações nas configurações do seu Postfix.

Passo 2 — Alterando a configuração do Postfix

Agora você pode ajustar algumas configurações que o processo de instalação do pacote não solicitou. Muitas definições de configuração do Postfix estão definidas no arquivo /etc/postfix/main.cf. Em vez de editar este arquivo diretamente, você pode usar o comando postconf do Postfix, para consultar ou definir itens de configuração.

Para começar, defina a localização para a caixa de correio do seu usuário não-root do Ubuntu. Neste guia, usaremos o formato Maildir, que separa mensagens em arquivos individuais que são então movidos entre diretórios baseados na ação do usuário. A opção alternativa que não está coberta neste guia é o formato mbox, que armazena todas as mensagens dentro de um único arquivo.

Defina a variável home_mailbox para Maildir/. Mais tarde, você criará uma estrutura de diretórios nesse nome dentro do diretório home do usuário. Configure a home_mailbox digitando:

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

Em seguida, defina a localização da tabela virtual_alias_maps, que mapeia contas de e-mail arbitrárias para contas do sistema Linux. Execute o seguinte comando, que mapeia a localização da tabela para um arquivo hash de banco de dados chamado /etc/postfix/virtual:

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

Agora que você definiu a localização do arquivo de mapas virtuais em seu arquivo main.cf, você pode criar o próprio arquivo e começar a mapear contas de e-mail para contas de usuário em seu sistema Linux. Crie o arquivo com seu editor de texto preferido; neste exemplo, vamos usar o nano:

  1. sudo nano /etc/postfix/virtual

Liste quaisquer endereços para os quais você deseja aceitar e-mail, seguido por um espaço em branco e o usuário do Linux para o qual você gostaria que o e-mail fosse entregue.

Por exemplo, se você quiser aceitar e-mails para contact@example.com e admin@example.com e que esses e-mails sejam entregues ao usuário Linux sammy, você poderia 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. Se você usou o nano, faça isso pressionando as teclas CTRL + X, Y e depois ENTER.

Aplique 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

Supondo que você tenha seguido os pré-requisitos do guia de configuração inicial do servidor, você terá configurado um firewall com o UFW. Este firewall irá bloquear conexões externas aos serviços no seu servidor por padrão, a menos que essas conexões sejam explicitamente permitidas, então você terá que adicionar uma regra de firewall para permitir uma exceção para o Postfix.

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

  1. sudo ufw allow Postfix

Com isso, o Postfix está configurado e pronto para aceitar conexões externas. No entanto, você ainda não está pronto para testá-lo com um cliente de e-mail. Antes que você possa instalar um cliente e usá-lo para interagir com o e-mail sendo entregue ao seu servidor, você precisará fazer algumas alterações na configuração do seu servidor Ubuntu.

Passo 3 — Instalando o cliente de e-mail e inicializando a estrutura do Maildir

Para interagir com o e-mail que está sendo entregue, este passo irá conduzi-lo através do processo de instalação do pacote s-nail . Esta é uma variante rica em recursos do cliente BSD xmail, que pode lidar com o formato Maildir corretamente.

Antes de instalar o cliente, porém, seria prudente certificar-se de que sua variável de ambiente MAIL esteja definida corretamente. O s-nail irá procurar esta variável para descobrir onde encontrar e-mail para seu usuário.

Para garantir que a variável MAIL esteja definida, independentemente de como você acesse sua conta — seja através do ssh, su, su -, ou sudo, por exemplo — você precisará definir a variável no arquivo /etc/bash.bashrc e adicioná-la a um arquivo dentro de /etc/profile.d para certificar-se de que ela está definida para todos os usuários por padrão.

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 em sua sessão atual, faça um source no arquivo /etc/profile.d/mail.sh:

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

Uma vez feito isso, instale o cliente de e-mail s-nail com o APT:

  1. sudo apt install s-nail

Antes de executar o cliente, há algumas configurações que você precisa ajustar. Abra o arquivo /etc/s-nail.rc no seu editor:

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

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

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

Aqui está o que estas linhas fazem:

  • set emptystart: permite que o cliente abra mesmo com uma caixa de entrada vazia
  • set folder=Maildir: define o diretório Maildir para a variável interna folder
  • set record =+sent cria um arquivo mbox sent para armazenar e-mails enviados dentro do diretório que for definido como a variável folder, neste caso Maildir

Salve e feche o arquivo quando você terminar. Agora você está pronto para inicializar a estrutura Maildir do seu sistema.

Uma maneira rápida de criar a estrutura Maildir dentro do seu diretório home é enviar um e-mail para você mesmo com o comando s-nail. Como o arquivo sent estará disponível apenas após a criação do Maildir, você deve desativar a gravação nele para este e-mail inicial. Faça isso passando 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

Nota: você pode obter a seguinte resposta:

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

Isso é normal e pode apenas aparecer ao enviar essa primeira mensagem.

Você pode verificar para se certificar que o diretório foi criado procurando pelo seu diretório ~/Maildir:

  1. ls -R ~/Maildir

Você verá que a estrutura de diretórios 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:

Agora que a estrutura de diretórios foi criada, você está pronto para testar o cliente s-nail visualizando a mensagem init que você enviou e enviando uma mensagem para um endereço de e-mail externo.

Passo 5 — Testando o cliente

Para abrir o cliente, execute o comando s-nail:

  1. s-nail

Em seu console, você verá uma caixa de entrada rudimentar com a mensagem init esperando:

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

Pressione ENTER para exibir a mensagem:

Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

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

  1. h
Output
>R 1 sammy@example.com 2020-05-19 15:40 14/392 init

Observe que a mensagem agora tem um estado de R, indicando que ela foi lida.

Como esta mensagem não é muito útil, você pode excluí-la pressionando d, e depois ENTER:

  1. d

Para voltar ao terminal, digite q e depois ENTER:

  1. q

Como um teste final, verifique se o s-nail é capaz de enviar mensagens de e-mail corretamente. Para fazer isso, você pode fazer um pipe do conteúdo de um arquivo de texto para o processo do s-nail, como você fez com a mensagem init do passo anterior.

Comece escrevendo uma mensagem de teste 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!

Salve e feche o arquivo depois de escrever sua mensagem.

A seguir, use o comando cat para fazer um pipe da mensagem para o processo do s-nail. Você pode fazer isto com o seguinte exemplo, que usa essas opções:

  • -s: isso define a linha de assunto da mensagem de 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 lhe permite substituir isto com um endereço válido, como um daqueles que você definiu no arquivo /etc/postfix/virtual. Para ilustrar, o seguinte comando usa contact@example.com

Além disso, certifique-se de alterar user@email.com para um endereço de e-mail válido que você tenha acesso:

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

Em seguida, navegue até a caixa de entrada do endereço de e-mail para o qual você enviou a mensagem. Você verá sua mensagem logo em seguida.

Nota: se a mensagem não estiver em sua caixa de entrada, ela pode ter sido entregue na sua pasta de Spam.

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

  1. s-nail

No cliente de email, visualize suas mensagens enviadas digitando:

  1. file +sent

Você verá um resultado como esse:

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

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

Conclusão

Agora você tem o Postfix configurado em seu servidor Ubuntu 20.04. O gerenciamento de servidores de e-mail pode ser uma tarefa difícil para novos administradores de sistema, mas com esta configuração, você deve ter funcionalidade de email MTA suficiente 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

Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean


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