Como Instalar e Configurar o Postfix no Ubuntu 22.04

Introdução

O Postfix é um popular Agente de Transferência de Correio (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 o s-nail, um Agente de Usuário de Correio (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 alguma funcionalidade básica de e-mail. Você não terá um servidor de e-mail completo ao final deste guia, mas terá alguns dos componentes fundamentais de uma configuração desse tipo para ajudá-lo a começar.

Pré-requisitos

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

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 possui 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 de pacotes local do 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 propósitos deste tutorial, use as seguintes informações para preencher seus prompts:

  • Tipo geral de configuração de correio?: Para isso, escolha Internet Site 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, suponha que o nome do host do seu servidor seja mail.exemplo.com. Você provavelmente desejará definir o nome do correio do sistema como exemplo.com para que, dado o nome de usuário user1, o Postfix use o endereço user1@exemplo.com.
  • Destinatário do correio do root e postmaster: Esta é a conta Linux para a qual será encaminhado o correio endereçado a root@ e postmaster@. 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 aceitará. Se 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.
  • 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 o seu servidor de correio está configurado para retransmitir mensagens. O padrão funcionará para a maioria dos cenários. Se optar por modificá-lo, no entanto, 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 desabilita 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 a serem usados: Escolha se deseja restringir a versão do IP que o Postfix suporta. Para os fins deste tutorial, escolha todos.

Para ser explícito, estes são os ajustes usados neste guia:

  • Tipo geral de configuração de correio?: Site da Internet
  • Nome do correio do sistema: exemplo.com (não mail.exemplo.com)
  • Destinatário do correio root e postmaster: O nome de usuário da sua conta principal do Linux (sammy em nossos exemplos)
  • Outros destinos para aceitar correio para: $myhostname, exemplo.com, mail.exemplo.com, localhost.exemplo.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 a serem usados: todos

Nota: Se precisar de voltar para alterar estas definições, pode fazê-lo digitando:

  1. sudo dpkg-reconfigure postfix

As sugestões serão preenchidas automaticamente com as suas respostas anteriores.

Ao ser solicitado para reiniciar os serviços, aceite as predefinições e escolha OK.

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

Passo 2 — Alteração da Configuração do Postfix

Agora pode ajustar algumas configurações para as quais o processo de instalação do pacote não lhe pediu. Muitas das configurações do Postfix são definidas no arquivo /etc/postfix/main.cf. Em vez de editar este arquivo diretamente, pode usar o comando postconf do Postfix para consultar ou definir configurações 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, vamos usar 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 está coberta neste guia é o formato mbox, que armazena todas as mensagens dentro de 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 pessoal do 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árias para contas de sistema Linux. Execute o seguinte comando, que mapeia a localização da tabela para um arquivo de banco de dados de 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 no 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 editor de texto de sua preferência; neste exemplo, usaremos nano:

  1. sudo nano /etc/postfix/virtual

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

Por exemplo, se você deseja aceitar e-mails em contact@example.com e admin@example.com e deseja que esses e-mails sejam entregues ao usuário Linux sammy, você pode 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 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.

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 correio 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 correio entregue, este passo irá orientá-lo através do processo de instalação do pacote s-nail. Este é uma variante rica em recursos do cliente xmail BSD que pode lidar corretamente com o formato Maildir.

Antes de instalar o cliente, porém, 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 correio para o seu usuário.

Para garantir que a variável MAIL seja configurada independentemente de como você acessa sua conta — seja através de ssh, su, su - ou sudo, por exemplo — você precisará configurar a variável no arquivo /etc/bash.bashrc e adicioná-la a um arquivo dentro de /etc/profile.d para garantir que ela seja configurada 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, execute o comando source no arquivo /etc/profile.d/mail.sh:

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

Com isso completo, 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 em 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 seja aberto 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 definido como a 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 e-mail 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 obter 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 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: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:

Agora que a estrutura do diretório 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 à 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 possui um estado de R, indicando que 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 teste final, 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 que enviou na etapa anterior.

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

  1. nano ~/test_message

Dentro, insira algum texto que deseja enviar:

~/test_message
Hello,

This is a test.  Please confirm receipt!

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

Em seguida, use o comando cat para redirecionar a mensagem para o processo s-nail. Você pode fazer isso com o seguinte exemplo, que utiliza estas 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 dos que você definiu no arquivo /etc/postfix/virtual. Para ilustrar, o seguinte comando usa [email protected]

Também, certifique-se de alterar user@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 para o endereço de email para o qual enviou a mensagem. Você verá sua mensagem esperando lá quase imediatamente.

Nota: Se a mensagem não estiver na sua caixa de entrada, ela pode ter sido entregue na 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 email, visualize as mensagens enviadas digitando:

  1. file +sent

Você verá a 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 o correio enviado usando os mesmos comandos que usa para o correio recebido.

Conclusão

Agora você tem o Postfix configurado no seu servidor Ubuntu 22.04. Gerenciar servidores de email 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.

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