Tutorial
Como instalar e configurar o Postfix no 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 paraexample.com
, de maneira que, considerando o nome de usuáriouser1
, o Postfix irá usar o endereçouser1@example.com
. - Root and postmaster mail recipient: esta é a conta Linux em que serão encaminhados e-mails destinados a
root@
epostmaster@
. 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 contact@example.com
e admin@example.com
e que esses e-mails sejam entregues ao usuário Linux sammy
, você pode configurar seu arquivo dessa forma:
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.
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:
. . .
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 fo
lder e, depois, usará essa variável para criarum
arquivo 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 sammy@example.com 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 sammy@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
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 sammy@example.com 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:
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 user@email.com
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.user@email.com
: 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.