How To Install and Configure Postfix on 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:

  • sudo apt update
  • 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 [email protected].
  • Root and postmaster mail recipient: esta é a conta Linux em que serão encaminhados e-mails destinados a [email protected] e [email protected]. 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:

  • 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:

  • 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:

  • 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:

  • 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 [email protected] e [email protected] e que esses e-mails sejam entregues ao usuário Linux sammy, você pode configurar seu arquivo dessa forma:

/etc/postfix/virtual

[email protected] sammy [email protected] sammy 

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

Podemos aplicar o mapeamento digitando:

  • sudo postmap /etc/postfix/virtual

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

  • 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:

  • 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:

  • 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:

  • 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:

  • sudo apt install s-nail

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

  • 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:

  • echo 'init' | s-nail -s 'init' -Snorecord sammy

Você pode obter a seguinte resposta:

OutputCan'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:

  • 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:

  • s-nail

Você deve ver sua nova mensagem à espera:

Outputs-nail version v14.8.6.  Type ? for help. "/home/sammy/Maildir": 1 message 1 new >N  1 [email protected]     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 [email protected] Wed Dec 31 19:00:00 1969 Date: Fri, 13 May 2016 18:07:49 -0400 To: [email protected] Subject: init Message-Id: <[email protected]> From: [email protected]  init 

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

  • h
Outputs-nail version v14.8.6.  Type ? for help. "/home/sammy/Maildir": 1 message 1 new >R  1 [email protected]     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:

  • d

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

  • q

Enviando e-mails com o cliente

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

  • 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:

  • cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account [email protected]

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.
  • [email protected]: 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:

  • s-nail

Depois disso, veja suas mensagens enviadas digitando:

  • 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.