Como instalar e configurar o Postfix no Ubuntu 22.04

Introdução

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

Neste guia, você aprenderá como instalar e configurar o Postfix em um servidor Ubuntu 22.04. Em seguida, você testará se o Postfix é capaz de rotear corretamente e-mails instalando s-nail, um Agente de Usuário de Email (MUA), também conhecido como um cliente de e-mail.

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

Pré-requisitos

Configurar e manter seu próprio servidor de e-mail é complicado e consome muito tempo. Para a maioria dos usuários, é mais prático confiar em um serviço de e-mail pago. Se você está considerando executar seu próprio servidor de e-mail, recomendamos que você revise este artigo sobre por que você pode não querer fazer isso.

Se você tem certeza de que deseja seguir este guia para instalar e configurar o Postfix, então você deve primeiro ter o seguinte:

  • A server running Ubuntu 22.04 to function as your Postfix mail server. This server should have a non-root user with sudo privileges and a firewall configured with UFW. You can follow our Ubuntu 22.04 initial server setup guide to set this up.
  • A Fully Qualified Domain Name pointed at your Ubuntu 22.04 server. You can find help on setting up your domain name with DigitalOcean by following our Domains and DNS Networking documentation. Be aware that if you plan on accessing mail from an external location, you will need to make sure you have an MX record pointing to your mail server as well.

Observe que este tutorial assume que você está configurando um host que tem 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, então você pode instalá-lo com o APT.

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

  1. sudo apt update

Em seguida, instale o pacote postfix com o seguinte comando. Observe que aqui passamos a variável ambiental DEBIAN_PRIORITY=low para este 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

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

  • Tipo geral de configuração de correio?: Para isso, escolha Site da Internet pois isso corresponde às nossas necessidades de infraestrutura.
  • Nome do correio do sistema: Este é o domínio base usado para construir um endereço de e-mail válido quando apenas a parte da conta do endereço é fornecida. Por exemplo, vamos supor que o nome do host do seu servidor seja mail.exemplo.com. Provavelmente você vai querer definir o nome do correio do sistema para exemplo.com para que, dado o nome de usuário user1, o Postfix use o endereço user1@exemplo.com.
  • Destinatário do correio de root e postmaster: Esta é a conta Linux para a qual o correio endereçado a root@ e postmaster@ será encaminhado. Use sua conta principal para isso. Neste exemplo, sammy.
  • Outros destinos para aceitar correio: Isso define os destinos de correio que esta instância do Postfix irá aceitar. Se você precisar adicionar outros domínios para os quais este servidor será responsável por receber, adicione-os aqui. Caso contrário, o padrão será suficiente.
  • Forçar atualizações síncronas na fila de correio?: Como você provavelmente está usando um sistema de arquivos com journaling, aceite Não aqui.
  • Redes locais: Esta é uma lista das redes para as quais seu servidor de correio está configurado para retransmitir mensagens. O padrão funcionará para a maioria dos cenários. Se optar por modificá-lo, certifique-se de ser muito restritivo em relação ao intervalo de rede.
  • Limite de tamanho da caixa de correio: Isso pode ser usado para limitar o tamanho das mensagens. Definir como 0 desativa qualquer restrição de tamanho.
  • Caractere de extensão de endereço local: Este é o caractere que pode ser usado para separar a parte regular do endereço de uma extensão (usada para criar alias dinâmicos). O padrão, +, funcionará para este tutorial.
  • Protocolos de internet para usar: Escolha se deseja restringir a versão do IP que o Postfix suporta. Para os fins deste tutorial, escolha all.

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

  • Tipo geral de configuração de correio?: Site da Internet
  • Nome do correio do sistema: example.com (não mail.example.com)
  • Destinatário do correio do root e postmaster: O nome de usuário da sua conta principal do Linux (sammy em nossos exemplos)
  • Outros destinos para aceitar correio: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Forçar atualizações síncronas na fila de correio?: Não
  • Redes locais: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Limite de tamanho da caixa de correio: 0
  • Caractere de extensão de endereço local: +
  • Protocolos de internet para usar: all

Nota: Se precisar retornar para alterar essas configurações, você pode fazer isso digitando:

  1. sudo dpkg-reconfigure postfix

As solicitações serão pré-preenchidas com suas respostas anteriores.

Ao ser solicitado para reiniciar os serviços, aceite as configurações padrão e escolha OK.

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

Passo 2 — Alterando a Configuração do Postfix

Agora você pode ajustar algumas configurações para as quais o processo de instalação do pacote não solicitou. Muitas das configurações de configuração do Postfix sã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 configurações de configuração.

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

Defina a variável home_mailbox como Maildir/. Mais tarde, você criará uma estrutura de diretórios com esse nome dentro do diretório home do seu usuário. Configure 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ários para contas do sistema Linux. Execute o seguinte comando, que mapeia a localização da tabela para um arquivo de banco de dados hash 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 mapeamento virtual 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 no seu sistema Linux. Crie o arquivo com o seu editor de texto preferido; neste exemplo, usaremos nano:

  1. sudo nano /etc/postfix/virtual

Liste quaisquer endereços para os quais deseja aceitar e-mails, seguido de um espaço em branco e do usuário Linux para o qual deseja que esse e-mail seja entregue.

Por exemplo, se você deseja aceitar e-mails em contact@example.com e admin@example.com e gostaria de ter esses e-mails entregues ao usuário Linux sammy, você poderia configurar seu arquivo assim:

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

Depois de mapear todos os endereços para as contas de servidor apropriadas, salve e feche o arquivo. Se você usou o nano, faça isso pressionando CTRL + X, Y, depois ENTER.

Aplique o mapeamento digitando:

  1. sudo postmap /etc/postfix/virtual

Reinicie o processo do Postfix para garantir que todas as suas alterações tenham sido aplicadas:

  1. sudo systemctl restart postfix

Supondo que você seguiu o guia de configuração inicial do servidor, você terá configurado um firewall com UFW. Este firewall bloqueará conexões externas para serviços em 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.

Você pode permitir conexões para o 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 de poder instalar um cliente e usá-lo para interagir com o e-mail sendo entregue em 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 o guiará pelo processo de instalação do pacote s-nail. Esta é uma variante rica em recursos do cliente xmail BSD que pode lidar corretamente com o formato Maildir.

Antes de instalar o cliente, no entanto, seria prudente garantir que sua variável de ambiente MAIL esteja configurada corretamente. O s-nail procurará por esta variável para descobrir onde encontrar o e-mail para seu usuário.

Para garantir que a variável MAIL seja definida independentemente de como você acessa sua conta – seja através de 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 garantir que ela seja 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 na sua sessão atual, carregue o arquivo /etc/profile.d/mail.sh:

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

Com isso completo, instale o cliente de email s-nail com 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 essas 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 sent mbox para armazenar emails enviados dentro do diretório definido como variável folder, neste caso Maildir

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

A quick way to create the Maildir structure within your home directory is to send yourself an email with the s-nail command. Because the sent file will only be available once the Maildir is created, you should disable writing to it for this initial email. Do this by passing the -Snorecord option.

Envie o email encaminhando 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 receber a seguinte resposta:

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

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

Você pode verificar se o diretório foi criado procurando pelo 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: 1650294586.Vfc01I7e11dM993645.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 4 — Testando o Cliente

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

  1. s-nail

Na sua console, você verá uma caixa de entrada rudimentar com a mensagem init aguardando:

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 [email protected] 2022-04-18 15:09 14/452 init

Pressione ENTER para exibir a mensagem:

Output
[-- Message 1 -- 14 lines, 452 bytes --]: Date: Mon, 18 Apr 2022 15:09:46 +0000 To: [email protected] Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: [email protected] init

Você pode voltar para a lista de mensagens digitando h, e então ENTER:

  1. h
Output
>R 1 [email protected] 2022-04-18 15:09 14/452 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 então ENTER:

  1. d

Para voltar ao terminal, digite q e então ENTER:

  1. q

Como último teste, verifique se o s-nail é capaz de enviar corretamente mensagens de email. Para fazer isso, você pode redirecionar o conteúdo de um arquivo de texto para o processo s-nail, como fez com a mensagem init enviada na etapa anterior.

Comece escrevendo uma mensagem de teste em um editor de texto:

  1. nano ~/test_message

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

~/test_message
Hello,

This is a test.  Please confirm receipt!

Salve e feche o arquivo após escrever sua mensagem.

Então, use o comando cat para redirecionar a mensagem para o processo s-nail. Você pode fazer isso com o seguinte exemplo, que usa essas opções:

  • -s: Isso define a linha de assunto da mensagem de email
  • -r: Uma alteração opcional para o campo “De:” do email. Por padrão, o usuário Linux com o qual você está logado será usado para preencher este campo. A opção -r permite substituir isso por um endereço válido, como um daqueles que você definiu no arquivo /etc/postfix/virtual. Para ilustrar, o comando a seguir usa [email protected]

Também, certifique-se de alterar usuário@email.com para um endereço de email válido ao qual você tenha acesso:

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

Em seguida, navegue até a caixa de entrada do endereço de email para o qual você enviou a mensagem. Você verá sua mensagem esperando lá quase imediatamente.

Observação: Se a mensagem não estiver na sua caixa de entrada, ela pode ter sido entregue à sua pasta de Spam.

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

  1. s-nail

Do cliente de e-mail, visualize suas mensagens enviadas digitando:

  1. file +sent

Você verá uma saída como esta:

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To [email protected] 2022-04-18 15:12 10/211 Test email subject line

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

Conclusão

Agora você tem o Postfix configurado em seu servidor Ubuntu 22.04. Gerenciar 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 e-mail MTA suficiente para começar.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-22-04