Skip to main content

211.3 Gerenciando a Entrega remota de E-mail


POP3/IMAP e Dovecot


Vamos ver como acontece a entrega remota do e-mail, para isso usamos o POP e IMAP. O POP/IMAP é implementado no MDA, ele quem vai trabalhar com esses protocolos.



POP3 - Post Office Protocol


Esse protocolo é útil quando desejamos baixar os e-mails do servidor para o MUA e mantê-los localmente no dispositivo. A remoção das mensagens do servidor não ocorre obrigatoriamente durante o download, pois esse comportamento depende da configuração do cliente POP3.

Como as mensagens podem ficar armazenadas apenas no dispositivo do cliente, é importante manter uma cópia de segurança para evitar a perda de e-mails.

O POP3 utiliza as portas 110 e 995. A porta 110 pode usar criptografia por meio de STARTTLS, enquanto a porta 995 utiliza TLS implícito. Portanto, devem ser utilizadas conexões protegidas por TLS.

Atualmente, os clientes POP3 também podem ser configurados para manter uma cópia das mensagens no servidor.



IMAP


Diferentemente do POP3, o IMAP mantém os e-mails no servidor e sincroniza as mensagens e seus estados com o cliente. Dessa forma, é possível acessar as mesmas caixas postais e mensagens por diferentes dispositivos. Como a cópia principal permanece no servidor, o backup deve ser realizado nele.

O IMAP utiliza as portas 143 e 993. A porta 143 pode usar criptografia por meio de STARTTLS, enquanto a porta 993 utiliza TLS implícito. Portanto, devem ser utilizadas conexões protegidas por TLS.



Integrando Dovecot com POP3/IMAP


Primeiro, vamos começar instalando o Dovecot:

## Em distribuições Red Hat:
$ sudo dnf install -y dovecot

## Em distribuições Debian:
$ sudo apt install -y dovecot-imapd dovecot-pop3d

# dovecot-imapd = Instala os recursos necessários
# para que o Dovecot trabalhe com IMAP;

# dovecot-pop3d = Instala os recursos necessários
# para que o Dovecot trabalhe com POP3.

Agora vamos configurar o Dovecot para trabalhar com esses protocolos. O arquivo principal de configuração é /etc/dovecot/dovecot.conf, que normalmente inclui outros arquivos localizados em /etc/dovecot/conf.d/.

OpçãoDescrição
protocolsProtocolos que o Dovecot disponibilizará.
protocols = imap pop3.
listenEndereços nos quais o Dovecot aguardará conexões. O valor * representa todos os endereços IPv4 e :: todos os endereços IPv6.
listen = *, ::.
login_trusted_networksLista de redes consideradas confiáveis pelo Dovecot. As conexões originadas dessas redes são tratadas como seguras e podem informar o endereço original do cliente.
verbose_proctitlePermite exibir mais informações sobre as conexões ativas na descrição dos processos, visualizada pelo comando ps, como o nome do usuário e o endereço IP.
verbose_proctitle = yes.

Dentro de /etc/dovecot/conf.d/, temos outras configurações do Dovecot, como já foi visto nos tutoriais anteriores. Para configurar esses protocolos, vamos alterar os arquivos 10-auth.conf, 10-mail.conf, 10-master.conf, 20-imap.conf e 20-pop3.conf.

  • 10-auth.conf

    Vamos definir parâmetros de autenticação. A principal opção apresentada aqui é auth_mechanisms, que define os mecanismos de autenticação disponibilizados pelo Dovecot:

    auth_mechanisms = plain login

    Os mecanismos PLAIN e LOGIN transmitem as credenciais de forma que precisam ser protegidas por uma conexão TLS.


  • 10-mail.conf

    Aqui configuramos como o Dovecot localizará e manipulará as caixas postais. O formato e o caminho configurados devem ser compatíveis com o mecanismo utilizado para entregar as mensagens.


  • 10-master.conf

    Aqui podemos definir configurações dos serviços de cada protocolo, como o limite máximo de processos, as portas utilizadas e o uso de TLS. Abaixo está um exemplo com as portas padrão:

    service imap-login {
    inet_listener imap {
    #port = 143
    }
    inet_listener imaps {
    #port = 993
    #ssl = yes
    }
    }

    service pop3-login {
    inet_listener pop3 {
    #port = 110
    }
    inet_listener pop3s {
    #port = 995
    #ssl = yes
    }
    }

  • 20-imap.conf

    Contém configurações específicas do IMAP. Aqui podemos definir opções que serão aplicadas apenas a esse protocolo, como a quantidade máxima de conexões que um mesmo usuário pode realizar a partir do mesmo endereço IP.


  • 20-pop3.conf

    Contém configurações específicas do protocolo POP3.


Abaixo está um exemplo de acesso ao POP3 sem TLS por meio do telnet, apenas para testar o funcionamento do serviço:

$ telnet 192.168.121.227 110
Trying 192.168.121.227...
Connected to 192.168.121.227.
Escape character is '^]'.
+OK [XCLIENT] Dovecot (Ubuntu) ready.

$› user bob
+OK

$› pass 123
+OK Logged in.

$› stat
+OK 6 8190

$› list
+OK 6 messages:
1 2450
2 907
3 717
4 672
5 673
6 2771
.

Podemos fazer via IMAP também:

$ telnet 192.168.121.227 143
Trying 192.168.121.227...
Connected to 192.168.121.227.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN] Dovecot (Ubuntu) ready.
$› . login bob 123
. OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY LITERAL+ NOTIFY SPECIAL-USE] Logged in
$› . list "" "*"
* LIST (\NoInferiors) "/" financeiro
* LIST (\NoInferiors) "/" teste
* LIST (\HasNoChildren) "/" INBOX
. OK List completed (0.002 + 0.000 + 0.001 secs).
$› . status INBOX (messages)
* STATUS INBOX (MESSAGES 6)
. OK Status completed (0.002 + 0.000 + 0.001 secs).
$› . select INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 6 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1668176504] UIDs valid
* OK [UIDNEXT 7] Predicted next UID
. OK [READ-WRITE] Select completed (0.003 + 0.000 + 0.002 secs).



SSL e TLS (POP3S/IMAPS)


Vamos ver como configurar o uso de SSL/TLS no Dovecot para proteger as conexões POP3 e/ou IMAP. Para isso, vamos editar os arquivos 10-ssl.conf e 10-master.conf, localizados dentro de /etc/dovecot/conf.d/.


  • SSL

    Esse arquivo controla o comportamento do SSL/TLS no Dovecot. Veja abaixo algumas das principais opções disponíveis:

    OpçãoDescrição
    sslControla o uso de SSL/TLS. O valor yes habilita seu uso, enquanto required exige que a conexão esteja protegida antes da autenticação.
    ssl = required.
    ssl_keyInforma a localização da chave privada correspondente ao certificado.
    Ex.: ssl_key = </etc/pki/dovecot/private/dovecot.pem.
    ssl_certInforma a localização do certificado apresentado pelo servidor. O arquivo também pode conter os certificados intermediários da cadeia.
    Ex.: ssl_cert = </etc/pki/dovecot/certs/dovecot.pem.
    ssl_caInforma o arquivo que contém os certificados das autoridades certificadoras usados para validar certificados apresentados pelos clientes. Normalmente, é usado em conjunto com ssl_verify_client_cert = yes.
    ssl_min_protocolDefine a versão mínima do protocolo TLS aceita pelo Dovecot.
    ssl_cipher_listDefine a lista de cifras permitidas para conexões TLS 1.2 e anteriores.

    O arquivo definido em ssl_cert contém o certificado público do servidor, incluindo informações como o nome do titular, o emissor, o período de validade e a chave pública.

    Já o ssl_key contém a chave privada correspondente à chave pública do certificado. Ela deve ser mantida em segredo e é utilizada durante o processo de autenticação do servidor e de estabelecimento da conexão TLS.


  • MASTER

    Esse arquivo controla, entre outras configurações, os listeners dos protocolos POP3 e IMAP. Nele, podemos configurar as portas usadas pelas conexões com TLS implícito.

    Porta 993 para IMAPS.

    Porta 995 para POP3S.

    As portas 143 e 110 também podem usar TLS por meio do comando STARTTLS, enquanto as portas 993 e 995 iniciam a conexão diretamente com TLS.



Gerar o KEY/CERT


Podemos gerar o certificado e a chave privada manualmente, seguindo este procedimento, ou usar o script fornecido pelos pacotes do Dovecot. A localização do script depende da distribuição:

## Red Hat:
/usr/libexec/dovecot/mkcert.sh

## Debian/Ubuntu:
/usr/share/dovecot/mkcert.sh

Em distribuições Red Hat, esse script utiliza o arquivo /etc/pki/dovecot/dovecot-openssl.cnf para obter as informações necessárias para criar o certificado.

Em distribuições Debian/Ubuntu, o arquivo correspondente pode ser encontrado em /usr/share/dovecot/dovecot-openssl.cnf.

Podemos testar uma conexão IMAPS com o comando:

$ openssl s_client -connect 127.0.0.1:993


Comandos do Dovecot


Vamos ver alguns dos principais comandos utilizados para administrar o Dovecot:

ComandoDescrição
doveconfExibe a configuração efetiva do Dovecot. O comando doveconf -n mostra apenas as opções que possuem valores diferentes dos padrões.
doveadmFerramenta administrativa geral do Dovecot. Possui diversos subcomandos para gerenciar usuários, caixas postais, autenticação e serviços.
doveadm reloadRecarrega os arquivos de configuração do Dovecot.
doveadm whoMostra os usuários conectados no momento.
doveadm auth test USERNAMETesta a autenticação de um usuário.
doveadm user USERNAMEConsulta a base de usuários e exibe as informações retornadas para o usuário.


Noções de Courier


O Courier é uma alternativa ao Dovecot para fornecer acesso às caixas postais por meio dos protocolos POP3 e IMAP. Atualmente, o Dovecot é mais utilizado, mas a LPIC-2 exige conhecimento sobre a existência e a finalidade do Courier.


Vamos ver como instalá-lo:

## No Debian:
$ sudo apt install -y courier-imap courier-pop

Em distribuições Red Hat, esses pacotes podem não estar disponíveis nos repositórios padrão, sendo necessário utilizar um repositório adicional ou realizar a compilação a partir do código-fonte.


Os arquivos de configuração ficam dentro de /etc/courier. Nesse diretório, temos o arquivo imapd, usado para configurar o serviço IMAP, e o arquivo pop3d, usado para configurar o serviço POP3.



Fontes importantes


https://doc.dovecot.org/admin_manual/ssl/certificate_creation/