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/