Uma versão anterior deste tutorial foi escrita por Justin Ellingwood.
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, você irá aprender como instalar e configurar o Postfix em um servidor Ubuntu 20.04. Em seguida, você irá testar se o Postfix é capaz de encaminhar e-mail corretamente instalando o s-nail
, um Mail User Agent (MUA), também conhecido como um cliente de e-mail.
Observe que o objetivo deste tutorial é ajudá-lo a colocar o Postfix funcionando rapidamente com apenas algumas funcionalidades básicas de e-mail. Você não terá um servidor de e-mail completo ao final deste guia, mas você terá alguns dos componentes fundamentais dessa configuração para ajudá-lo a começar.
Para seguir este guia, você precisará do seguinte:
sudo
e um firewall configurado com UFW. Siga nosso guia de configuração inicial do servidor Ubuntu 20.04 para configurar isto.Observe que este tutorial assume que você está configurando um host que tenha 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.
O Postfix está incluído nos repositórios padrão do Ubuntu, assim você pode instalá-lo com o APT.
Para começar, atualize seu cache de pacotes apt
local:
- sudo apt update
Em seguida, instale o pacote postfix
com o seguinte comando. Observe que aqui passamos a variável de ambiente DEBIAN_PRIORITY=low
neste comando de instalação. Isso fará com que o processo de instalação solicite que você configure algumas opções adicionais:
- sudo DEBIAN_PRIORITY=low apt install postfix
O 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:
mail.example.com
. Você provavelmente desejará definir o nome do correio do sistema como example.com
para que, dado o usuário user1
, o Postfix usará o endereço user1@example.com
.root@
e postmaster@
. Use sua conta principal para isso. Neste caso de exemplo, sammy.0
desativa qualquer restrição de tamanho.+
irá funcionar para este tutorial.Para ser explícito, estas são as configurações usadas neste guia:
example.com
(e não mail.example.com
)$myhostname, example.com, mail.example.com, localhost.example.com, localhost
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
0
+
Nota: Se você precisar retornar para alterar essas configurações, poderá fazê-lo digitando:
- sudo dpkg-reconfigure postfix
Os prompts estarão pré-preenchidos com suas respostas anteriores.
Quando o processo de instalação terminar, você está pronto para fazer algumas atualizações nas configurações do seu Postfix.
Agora você pode ajustar algumas configurações que o processo de instalação do pacote não solicitou. Muitas definições de configuração do Postfix estã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 itens 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, usaremos o formato Maildir, que separa mensagens em arquivos individuais que são então movidos entre diretórios baseados 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
para Maildir/
. Mais tarde, você criará uma estrutura de diretórios nesse nome dentro do diretório home do usuário. Configure a home_mailbox
digitando:
- 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 do sistema Linux. Execute o seguinte comando, que mapeia a localização da tabela para um arquivo hash de banco de dados chamado /etc/postfix/virtual
:
- sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
Agora que você definiu a localização do arquivo de mapas virtuais 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 em seu sistema Linux. Crie o arquivo com seu editor de texto preferido; neste exemplo, vamos usar o nano
:
- sudo nano /etc/postfix/virtual
Liste quaisquer endereços para os quais você deseja aceitar e-mail, seguido por um espaço em branco e o usuário do Linux para o qual você gostaria que o e-mail fosse entregue.
Por exemplo, se você quiser aceitar e-mails para contact@example.com
e admin@example.com
e que esses e-mails sejam entregues ao usuário Linux sammy, você poderia 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. Se você usou o nano
, faça isso pressionando as teclas CTRL + X
, Y
e depois ENTER
.
Aplique 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
Supondo que você tenha seguido os pré-requisitos do guia de configuração inicial do servidor, você terá configurado um firewall com o UFW. Este firewall irá bloquear conexões externas aos 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.
É possível permitir conexões ao serviço digitando:
- 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 que você possa instalar um cliente e usá-lo para interagir com o e-mail sendo entregue ao seu servidor, você precisará fazer algumas alterações na configuração do seu servidor Ubuntu.
Para interagir com o e-mail que está sendo entregue, este passo irá conduzi-lo através do processo de instalação do pacote s-nail
. Esta é uma variante rica em recursos do cliente BSD xmail
, que pode lidar com o formato Maildir corretamente.
Antes de instalar o cliente, porém, seria prudente certificar-se de que sua variável de ambiente MAIL
esteja definida corretamente. O s-nail
irá procurar esta variável para descobrir onde encontrar e-mail para seu usuário.
Para garantir que a variável MAIL
esteja definida, independentemente de como você acesse sua conta — seja através do 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 certificar-se de que ela está definida para todos os usuários por padrão.
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 em sua sessão atual, faça um source no arquivo /etc/profile.d/mail.sh
:
- source /etc/profile.d/mail.sh
Uma vez feito isso, instale o cliente de e-mail s-nail
com o APT:
- 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:
- sudo nano /etc/s-nail.rc
No final do arquivo, adicione as seguintes opções:
. . .
set emptystart
set folder=Maildir
set record=+sent
Aqui está o que estas linhas fazem:
set emptystart
: permite que o cliente abra mesmo com uma caixa de entrada vaziaset 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 que for definido como a variável folder
, neste caso Maildir
Salve e feche o arquivo quando você terminar. Agora você está pronto para inicializar a estrutura Maildir do seu sistema.
Uma maneira rápida de criar a estrutura Maildir dentro do seu diretório home é enviar um e-mail para você mesmo com o comando s-nail
. Como o arquivo sent
estará disponível apenas após a criação do Maildir, você deve desativar a gravação nele para este e-mail inicial. Faça isso passando 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
Nota: você pode obter a seguinte resposta:
OutputCan't canonicalize "/home/sammy/Maildir"
Isso é normal e pode apenas aparecer ao enviar essa primeira mensagem.
Você pode verificar para se certificar que o diretório foi criado procurando pelo seu diretório ~/Maildir
:
- 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:
1463177269.Vfd01I40e4dM691221.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.
Para abrir o cliente, execute o comando s-nail
:
- s-nail
Em seu console, você verá uma caixa de entrada rudimentar com a mensagem init
esperando:
Outputs-nail version v14.9.15. Type `?' for help
"/home/sammy/Maildir": 1 message 1 new
>N 1 sammy@example.com 2020-05-19 15:40 14/392 init
Pressione ENTER
para exibir a mensagem:
Output[-- Message 1 -- 14 lines, 369 bytes --]:
From sammy@example.com Tue May 19 15:40:48 2020
Date: Tue, 19 May 2020 15:40:48 +0000
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
init
Você pode voltar para a lista de mensagens digitando h
, e depois ENTER
:
- h
Output>R 1 sammy@example.com 2020-05-19 15:40 14/392 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 depois ENTER
:
- d
Para voltar ao terminal, digite q
e depois ENTER
:
- q
Como um teste final, verifique se o s-nail
é capaz de enviar mensagens de e-mail corretamente. Para fazer isso, você pode fazer um pipe do conteúdo de um arquivo de texto para o processo do s-nail
, como você fez com a mensagem init
do passo anterior.
Comece escrevendo uma mensagem de teste 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!
Salve e feche o arquivo depois de escrever sua mensagem.
A seguir, use o comando cat
para fazer um pipe da mensagem para o processo do s-nail
. Você pode fazer isto com o seguinte exemplo, que usa essas opções:
-s
: isso define a linha de assunto da mensagem de 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
lhe permite substituir isto com um endereço válido, como um daqueles que você definiu no arquivo /etc/postfix/virtual
. Para ilustrar, o seguinte comando usa contact@example.com
Além disso, certifique-se de alterar user@email.com
para um endereço de e-mail válido que você tenha acesso:
- cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com
Em seguida, navegue até a caixa de entrada do endereço de e-mail para o qual você enviou a mensagem. Você verá sua mensagem logo em seguida.
Nota: se a mensagem não estiver em sua caixa de entrada, ela pode ter sido entregue na sua pasta de Spam.
Você pode ver suas mensagens enviadas dentro do seu cliente s-nail
. Inicie o cliente interativo novamente:
- s-nail
No cliente de email, visualize suas mensagens enviadas digitando:
- file +sent
Você verá um resultado como esse:
Output+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line
Você pode gerenciar os e-mails enviados usando os mesmos comandos que você usa para os e-mails recebidos.
Agora você tem o Postfix configurado em seu servidor Ubuntu 20.04. O gerenciamento de 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 email MTA suficiente 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!