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


Este protocolo é útil para quando não queremos manter os emails no servidor, sendo assim, ele vai pegar os emails que estão no servidor e vão baixar para o MUA do email cliente e removendo do servidor, mantendo os emails locais no dispositivo que estiver sendo usado.

Essa configuração precisa que um backup seja feito no dispositivo do cliente para evitar perda de emails.

Usa as portas 110 e 995, mas você deve sempre optar pelo uso da 995 porque ela aceita criptografia.

Outra coisa, nos dias de hoje com uso do POP3 podemos desabilitar a função de apagar os emails no lado do servidor.



IMAP


Diferente do POP3 o IMAP mantém os emails no servidor e faz uma sincronização, dessa forma não importa qual dispositivo use para acessar o email, sempre terá seus emails, já o backup deve ser realizado no servidor.

Usa as portas 143 e 993, mas você deve sempre optar pelo uso da 993 porque ela aceita criptografia.



Integrando Dovecot com POP3/IMAP


Primeiro vamos começar fazendo a instalação do Dovecot:

## Em distros RedHat:
$ sudo dnf install dovecot

## Em distros Debian Like:
$ sudo apt install -y dovecot-imapd dovecot-pop3d

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

# dovecot-pop3d = Instala os recursos necessários
# para que o Dovecot consiga trabalhar com POP3;

Agora vamos configurar o dovecot para trabalhar com esses protocolos, as configurações do Dovecot ficam em /etc/dovecot/dovecot.conf. Dentro desse arquivo vamos ter os protocolos que vão ser implementados.

OpçãoDescrição
protocolsProtocolos que o Dovecot vai servir.
protocols = imap pop3.
listenQual interface vai ouvir as requisições, o padrão é em todas.
login_trusted_networksEspecífica a Rede ou IP de quem pode se conectar no IMAP usando senha sem usar a porta com SSL.
verbose-proctitlePermite que sejam exibidas mais informações das conexões ativas na descrição do processo, visto pelo comando ps, por exemplo o nome do usuário e IP.
verbose_proctitle = yes

Dentro de /etc/dovecot/conf.d/ temos mais configurações do Dovecot como já foi visto nos tutoriais passados. Mas para configurar esses protocolos vamos mexer nos arquivos: 10-auth.conf, 10-mail.conf, 10-master.conf, 20-imap.conf e 20-pop3.conf.

  • 10-auth.conf

    Vamos definir paramêtros para a autenticação, o opção principal é a auth_mechanism, com ele vamos definir os mecanismos de aunteticação suportados.

    Existem dois métodos para configurar isso, segue o primeiro:

    auth_mechanism = plain login

    Segue a segunda forma:

    auth default {
    mechanisms = plain login
    }

  • 10-mail.conf

    Aqui temos que configurar como o sistema vai lidar com as Mailboxes, uma recomendação é definir apenas no MDA, caso você tenha isso configurado no MTA recomendo deixar igual em ambos.


  • 10-master.conf

    Aqui podemos definir algumas coisas para o daemon de cada protocolo como limite máximo de processos para cada serviço, as portas que vamos usar para cada protocolo, se usa SSL ou não e etc, segue um exemplo sobre a definição das portas (o exemplo abaixo é o 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

    Configurações específicas para o IMAP, aqui podemos definir coisas que somente se aplicarão para o IMAP, como a quantidade máxima de conexões que um mesmo usuário possa fazer usando o mesmo IP.


  • 20-pop3.conf

    Mesma coisa que o arquivo acima, mas aqui é para o protocolo POP.


Abaixo segue como acessar o POP via telnet:

$ 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 POP 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 fazer o uso de SSL/TLS no Dovecot para usar com o POP3 e/ou IMAPS. Para isso vamos editar os arquivos que estão dentro de /etc/dovecot/conf.d/, os arquivos são: 10-ssl.conf e 10-master.conf.



  • SSL

    Esse arquivo controla o comportamento do SSL/TLS dentro do Dovecot. Veja abaixo as opções que podemos usar nesse arquivo (não vou citar todas que temos disponíveis, apenas as principais):

    OpçãoDescrição
    sslPor padrão vem como no, mas para habilitar temos que deixar como required.
    ssl = required.
    ssl_keyInforma a localização da chave do certificado.
    Ex: ssl_key = </etc/pki/dovecot/private/dovecot.pem.
    ssl_certInforma a localização do certificado.
    Ex: ssl_cert = </etc/pki/dovecot/cert/dovecot.pem.
    ssl_caUsado para usar um CA nosso, isso implica em usar ssl_verify_client_cert=yes.
    ssl_protocolsDefine qual protocolo vamos usar. Usar ! diz para não usar certo protocolo.
    ssl_cipher_listLista de cipher que queremos ou não usar.

    Dentro do certificado ssl_cert temos algumas informações sobre o certificado, como: CA (Certification Authority), emissor, chave publica do servidor e outros tipos de matadatas.

    Já o ssl_key (chave do servidor) é a chave privada que o servidor vai usar para decriptar informações que foram encriptadas usando a chave pública do servidor.


  • MASTER

    Esse arquivo controla alguns dos comportamentos para os protocolos POP/IMAP. Aqui devemos setar o uso das portas que usam o SSL/TLS para cada protocolo de transferência remota que formos usar.

    Porta 993 para IMAPS.

    Porta 995 para POP3S.



Gerar o KEY/CERT


Para gerar o certificado e a chave privada nós podemos fazer isso manualmente seguindo esse link ou podemos usar o script que vem com o Dovecot para isso, veja a localização do script.

## Redhat:
/usr/libexec/dovecot/mkcert.sh

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

Esse script usa o arquivo /etc/pki/dovecot/dovecot-openssl.cnf para obter as informações necessárias quando for criar o certificado.

Podemos testar o certificado com o comando: openssl s_client -connect 127.0.0.1:993.



Comandos do Dovecot


Vamos ver os principais comandos que temos no Dovecot, os comandos mais usados no dia a dia.

ComandoDescrição
doveconfMostra um dump das configurações atuais do Dovecot.
doveadmGerenciador geral do Dovecot, possui muitos parâmetros de uso e é certamente o mais usado.
doveadm configFaz o mesmo que doveconf.
doveadm reloadFaz o reload dos arquivos de configuração (relê os arquivos) do Dovecot.
doveadm whoMostra os usuários conectados no momento, o comando dovecot who tem o mesmo efeito.
doveadm auth test USERNAMETesta a conexão de um usuário.
doveadm user USERNAMEPega informações do usuário.


Noções de Courier


O Courier é uma alternativa ao Dovecot, antigamente era bastante utilizado, mas hoje em dia a grande maioria dos servidores de e-mail que usam Linux acabam usando o Dovecot.

Vamos ver como instalar:

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

No CentOS precisa baixar o código fonte e compilar.


Os arquivos de configuração ficam dentro de /etc/courier e aqui dentro temos um arquivo chamado imapd para o protocolo IMAP, um outro arquivo chamado pop3d para o protocolo POP.



Fontes importantes


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