108.3 Básico sobre e-mail
Vamos entender como funciona o sistema de email de forma básica, sem se aprofundar ou subir um sistema de email.
Vamos entender algumas nomeclaturas muito importante para o entendimento básico do funcionamento de email.
Mail User Agent - MUA
É o cliente de email do usuário, é por ele que o usuário vai enviar, receber e gerenciar os emails. Exemplos de MUA incluem: Thunderbird, Outlook, Gmail entre outros.
O clinte (MUA) vai gerar a mensagem e então enviar ela para o MTA, e ele quem vai se encarregar de entregar as mensagens para o servidor de email correto.
Mail Transport Agent - MTA
É o servidor de email, ele é responsável por enviar e receber os emails, sempre garantindo que eles sejam entregues. Exemplos de MTA incluem: Postfix, Sendmailm, Qmail, Exim, Microsoft Exchange entre outros.
Mail Delivery Agent - MDA
Após o MTA enviar a mensagem para o servidor e email correto, o MTA do destinatário vai enviar essa mensagem para um MDA, ele vai verificar se essa mensagem não é um spam, um vírus, vai verificar se pode enviar (as vezes existem restrições como impedir anexos que tenham .iso), ele também faz o encaminhamento para outros emails, por exemplo, quando existem aliases de email. Exemplos de MDA incluem: Procmail, Fetchmail, Courier, Dovecot, Maildrop, Postdrop e etc.
Simple Mail Tranfer Protocol - SMTP
É o protocolo usado entre os MTA, servidores de email, é por meio desse protocolo que ele enviam mensagens uns para os outros. A porta padrão é a 25.
Open Relay
Quando um servidor SMTP (servidor de email) é configurado de forma que ele permita que qualquer usuário da Internet o use para enviar e-mails, ele é chamado de Open Relay.
Nesse caso esse servidor será certamente utilizado para usos maliciosos, principalmente para envio de e-mails de SPAM e/ou Phishing.
Cabe ao administrador realizar as devidas configurações para que isso não ocorra. Essas configurações entram apenas no programa da certificação LPIC-2. Para a LPIC-1 basta conhecer o termo "Open Relay".
Mailutils
Para a LPIc-1, basta usarmos um servidor de email interno, isso significa que nosso servidor de email não vai se comunicar com outro servidor de email fora da rede e para isso, todos os usuários do mail server devem se conectar ao servidor para ter acesso ao email, geralmente isso é feito por ssh.
O pacote mailutils vai instalar um conjunto de ferramentas para trabalhar com o email, incluindo o postfix
e comandos como o mail
.
# Instlando o mailutils:
$ sudo apt install mailutils
Quanto estiver instalando o postfix, será feito algumas peguntas, segue uma explicação sobre a primeira pergunta:
1° - Tipo de servidor de email
Será perguntado o tipo de configuração geral para o servidor, normalmente temos 5 opções:
Opção | Descrição |
---|---|
No configuration | Não vai ocorrer a configuração inicial. |
Internet Site | Esse tipo é para um servidor de email que vai enviar e receber mensagens diretamente, é o tipo mais comum. |
Internet with smarthost | Recebe mensagens normalmente, mas é outra máquina que vai enviar as mensagens, opção conhecida como relayhost . |
Satellite System | A opção mais limitada que temos para o funcionamento do servidor de email. Envia email através de outra máquina e não recebe mensagens de emails, muito útil para monitorar servidores na rede interna que precisam enviar notificações por email. |
Local Only | Usada apenas em redes de terminais leves, os emails são trocados entre os usuário na mesma máquina, é como um email, mas fica somente nesse máquina, não sai para a Internet. |
Para a LPI, Local Only
é o suficiente, mas vamos fazer alguns testes a mais, então escolha Internet Site
.
2° - Nome de domínio
Aqui voce deve inserie apenas o domínio que você possui. Se for teste, pode apenas usar o nome da máquina, mas para padronizar vamos colocar o nome linux
.
Finalizado a instalação, já temos o servidor postfix rodando com algumas configurações básicas:
$ ps aux | grep -i postfix
root 3051 0.0 0.2 38032 4472 ? Ss 11:34 0:00 /usr/lib/postfix/sbin/master -w
postfix 3052 0.0 0.3 38300 6196 ? S 11:34 0:00 pickup -l -t unix -u -c
postfix 3053 0.0 0.3 38352 6212 ? S 11:34 0:00 qmgr -l -t unix -u
vagrant 4248 0.0 0.0 10756 728 pts/0 S+ 11:34 0:00 grep --color=auto -i postfix
O comando mail
é um MUA muito simples, mas muito simples mesmo, por ele vamos enviar mensagens e ler mensagens também.
# Enviando mensagem:
$ mail -s "Assunto" user@domain
# Para enviar um email para um usuário local, rode assim:
$ mail -s "Assunto" user
#### Para finalizar a mensagem e enviar, digite 'Ctrl+d'.
# Um modo mais pratico é enviar assim:
$ echo "conteudo" | mail -s "Assunto" user
### Como estou usando uma máquina com vagrant, o nome do usuário é 'vagrant', então um email de teste no meu caso seria assim:
$ echo "Olá, você consegue ler isso?" | mail -s "Teste de email" vagrant
Para ler a mensagem, basta digitar mail
sem argumentos e você será redirecionado para a caixa de entrada do email.
# Lendo emails:
$ mail
"/var/mail/vagrant": 1 message 1 new
>N 1 vagrant Tue Jun 15 11:40 13/539 Teste de email
?
# Para abrir esse email, basta digitar o número da mensagem, nesse caso, o número 1.
$ mail
"/var/mail/vagrant": 1 message 1 new
>N 1 vagrant Tue Jun 15 11:40 13/539 Teste de email
? 1
Return-Path: <vagrant@ubuntu2004.localdomain>
X-Original-To: vagrant@ubuntu2004.localdomain
Delivered-To: vagrant@ubuntu2004.localdomain
Received: by ubuntu2004.localdomain (Postfix, from userid 1000)
id 8FF814204C5; Tue, 15 Jun 2021 11:40:46 -0300 (-03)
Subject: Teste de email
To: <vagrant@ubuntu2004.localdomain>
X-Mailer: mail (GNU Mailutils 3.7)
Message-Id: <20210615144046.8FF814204C5@ubuntu2004.localdomain>
Date: Tue, 15 Jun 2021 11:40:46 -0300 (-03)
From: vagrant <vagrant@ubuntu2004.localdomain>
Olá, você consegue ler isso?
As mensagens de cada usuário ficam em /var/mail/
contendo o nome do usuário, se esse caminho não existir, já que ele é um link, o caminho absoluto é /var/spool/mail/
.
Fazer o forward de emails
Uma forma de fazer um redirecionamento de email é criar um arquivo na home do usuário chamada .forward
e dentro dele vamos colocar para quem o email deva ser redirecionado, assim toda vez que ele receber um email, esse email vai ser enviado para outra conta.
Essa é uma forma simples, mas não é a mais prática nem usual, a forma correta mesmo seria usando um MDA, mas para a LPI, você deve conhecer essa maneira.
Aplicando o Aliases
Uma prática muito comum para enviar um email de um remetente para outro, (onde esse primeito remetente não precisa de fato existir) ou para vários outros é usando aliases de email.
# Verificando os aliases existentes:
$ cat /etc/aliases
# See man 5 aliases for format
postmaster: root
# Tudo que for enviado para 'postmaster' será entregue para o root.
Sempre que alterar esse arquivo aliases, você deve rodar o comando newaliases
para aplicar as mudanças.
Por exemplo:
$ cat /etc/aliases
# See man 5 aliases for format
postmaster: root
adm: user1,joao,roberto,cleber
Quando for enviado um email para adm
, todos os administradores vão receber esse email.
Fila de email
Antes de enviar um email, o servidor de email guarda as mensagens numa fila, para poder então ser enviada, até mesmo em caso de problemas, com o email na fila, o servidor pode enviar assim que possível.
Para ver essa fila, usamos o comando mailq
ou sendmail -bp
. Outro comando importante é o postqueue -f
, ele vai tentar reenviar os emails que questão na fila.