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.
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
.
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:
mail.example.com
, mas provavelmente queremos definir o nome de e-mail do sistema para example.com
, de maneira que, considerando o nome de usuário user1
, o Postfix irá usar o endereço user1@example.com
.root@
e postmaster@
. Use sua conta principal para isso. No nosso caso, sammy.Para deixar bem claro, apresentamos a seguir as configurações que vamos usar neste guia:
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.
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'
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
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.
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
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.
Agora, podemos testar o cliente.
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.
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
É 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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.