Tutorial

Como instalar e configurar o Postfix no Ubuntu 20.04

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

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

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

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

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

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

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

  • 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

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:

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

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

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

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

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

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

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

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

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

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

  • d

Para voltar ao terminal, digite q e depois ENTER:

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

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

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

  • s-nail

No cliente de email, visualize suas mensagens enviadas digitando:

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

0 Comments

Creative Commons License