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
:
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:
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 comoexemplo.com
para que, dado o nome de usuáriouser1
, o Postfix use o endereçouser1@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@
epostmaster@
. 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ãomail.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:
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:
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
:
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
:
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:
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:
Reinicie o processo do Postfix para garantir que todas as suas alterações tenham sido aplicadas:
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:
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:
Para ler a variável em sua sessão atual, execute o comando source
no arquivo /etc/profile.d/mail.sh
:
Com isso completo, instale o cliente de e-mail s-nail
com o APT:
Antes de executar o cliente, há algumas configurações que você precisa ajustar. Abra o arquivo /etc/s-nail.rc
em seu editor:
No final do arquivo, adicione as seguintes opções:
. . .
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 vaziaset folder=Maildir
: define o diretórioMaildir
para a variável internafolder
set record=+sent
: cria um arquivo mboxsent
para armazenar e-mails enviados dentro do diretório definido como a variávelfolder
, 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:
Nota: Você pode obter a seguinte resposta:
OutputCan'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
:
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
:
Na sua console, você verá uma caixa de entrada rudimentar com a mensagem init
aguardando:
Outputs-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
:
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
:
Para voltar ao terminal, digite q
e então ENTER
:
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:
Dentro, insira algum texto que deseja enviar:
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:
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:
Do cliente de email, visualize as mensagens enviadas digitando:
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.