LPI-2 202-450 Topico 211.3: Administração do acesso ao email
Administração do acesso ao email
Índice
211.3 Administração do acesso ao email - Objetivos
Peso 2
O candidato deve ser capaz de instalar e configurar serviços POP e IMAP
Conhecimentos-chave:
- Configuração e adminsitração do Dovecot para IMAP e POP3;
- Configuração básica de TLS para o Dovecot;
- Noção do Courier.
Lista parcial dos arquivos, termos e ferramentas utilizados:
211.3 Administração do acesso ao email - Conteúdo
Atualmente, a modalidade mais comum de um cliente acessar uma caixa postal de emails é através de uma conexão IMAP ou POP3. Ambos podem ser utilizados juntos, mas é mais comum que apenas uma das modalidades seja escolhida. Quando um MUA acessa um servidor de email, o programa que responde é um servidor POP3 ou IMAP. Esse servidor então identifica o usuário e entrega para o MUA as mensagens armazenadas no servidor.
POP3 (/Post Office Protocol) | IMAP (Internet Message Access Protocol) |
---|---|
Baixa os EMails para o PC | Os EMails ficam no servidor |
Os EMails são armazenados no PC | Os usuários lêem os emails remotamente |
A grande vantagem do IMAP diante do POP3 é a capacidade de manter a mensagem original armazenada no servidor de EMails e por consequência permitir que ela seja acessada de múltiplos dispositivos e locais, a bem da verdade no IMAP o usuário apenas lê a mensagem e o servidor armazena o status se lida ou não, também permite a organização remota das mensagens em diretórios e subdiretórios. Diferente do POP3 onde os EMails são baixados para o computador pessoal do usuário e por padrão completamente removidos do servidor (embora seja possível configurar que a mensagem não seja apagada).
Courier
O Courier é um dos MTAs mais antigos no mundo do Software Livre ele consegue trabalhar com ESMTP, IMAP, POP3, SMAP, webmail e serviços de mailing list com componentes individuais.
Partes do Curier, como o sistema de filtro Maildrop, o Webmail e o servidor de IMAP podem ser instalados como pacotes independentes e podem ser utilizados com outros servidores de correio. Ele é bastante conhecido por seu servidor IMAP.
O Courier-IMAP é uma combinação popular com o QMail, Exim e o Postfix quando configurado para uso de maildirs.
Por exemplo em um servidor Debian-like podemos instalar os pacotes
courier-imap
e courier-pop
para podermos usar esses protocolos.
Depois de instalado será criado o diretório /etc/courier
dentro
desse diretório encontraremos os arquivos de configuração dos
protocolos POP3 /etc/courier/pop3d
e IMAP /etc/courier/imapd
.
Desses arquivos as diretivas mais importantes são:
ADDRESS
Diz quais endereços de IP o Courier deve esperar conexões. Quando definido em
0
(valor padrão) ele ouvirá em todos os endereços:address=0
PORT
Define qual a porta o Courier deverá escutar. Para o IMAP o padrão é 143, para o POP o padrão é 110:
PORT=110
MAILDIRPATH
- De forma básica essa é a diretiva mais
importante pois mostra o caminho do
maildir
.
Dovecot
O Dovecot é um servidor IMAP e POP3 com licença MIT e LGPL escrito para sistemas GNU/Linux e Unix-like. Ele foi escrito com segurança como premissa básica.
O primeiro propósito do Dovecot é atuar como um servidor de
armazenamento de EMail suportanto trabalhar tanto no modo mbox
quanto no modo maildir
.
Assim como o Courier o Dovecot é bastante modular e os nomes dos
módulos são semelhantemente sugestivos. Para nossos estudos vamos
focar nos pacotes voltados para acesso a EMails no caso o
dovecot-imapd
e o dovecot-pop3d
. Importante deve
ser removida qualquer instalação de outro software semelhante como
o Courier para evitar conflitos.
Por motivos de segurança, durante o processo de instalação em sistemas Debian-like será criado automáticamente um certificado auto-assinado.
O diretório /etc/dovecot/
A configuração do dovecot pode ser encontrada em /etc/dovecot/
┌─[root@centos7lpi]──[22:46]──[~] └─[45]─># cd /etc/dovecot/ ┌─[root@centos7lpi]──[22:46]──[/etc/dovecot] └─[46]─># ls -l total 36 drwxr-xr-x 2 root root 4096 May 28 00:00 conf.d -rw-r--r-- 1 root root 4401 Feb 27 11:17 dovecot.conf -rw-r----- 1 root dovecot 1507 Mar 16 2016 dovecot-dict-auth.conf.ext -rw-r----- 1 root dovecot 852 Mar 16 2016 dovecot-dict-sql.conf.ext -rw-r----- 1 root dovecot 5612 Mar 16 2016 dovecot-sql.conf.ext drwxr-xr-x 2 root root 4096 Feb 27 11:28 private -rw-r--r-- 1 root root 121 Feb 27 11:29 README ┌─[root@centos7lpi]──[22:46]──[/etc/dovecot] └─[47]─># tree . ├── conf.d │ ├── 10-auth.conf │ ├── 10-director.conf │ ├── 10-logging.conf │ ├── 10-mail.conf │ ├── 10-master.conf │ ├── 10-ssl.conf │ ├── 10-tcpwrapper.conf │ ├── 15-lda.conf │ ├── 15-mailboxes.conf │ ├── 20-imap.conf │ ├── 20-pop3.conf │ ├── 90-acl.conf │ ├── 90-plugin.conf │ ├── 90-quota.conf │ ├── auth-checkpassword.conf.ext │ ├── auth-deny.conf.ext │ ├── auth-dict.conf.ext │ ├── auth-master.conf.ext │ ├── auth-passwdfile.conf.ext │ ├── auth-sql.conf.ext │ ├── auth-static.conf.ext │ ├── auth-system.conf.ext │ └── auth-vpopmail.conf.ext ├── dovecot.conf ├── dovecot-dict-auth.conf.ext ├── dovecot-dict-sql.conf.ext ├── dovecot-sql.conf.ext ├── private └── README 2 directories, 28 files
Existe um arquivo de configuração principal o dovecot.conf
e
vários outros arquivos de configuração que ficam em
/etc/dovecot/conf.d/
que constam como includes dentro do
arquivo principal.
## Dovecot configuration file # If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration # "doveconf -n" command gives a clean output of the changed settings. Use it # instead of copy&pasting files when posting to the Dovecot mailing list. # '#' character and everything after it is treated as comments. Extra spaces # and tabs are ignored. If you want to use either of these explicitly, put the # value inside quotes, eg.: key = "# char and trailing whitespace " # Most (but not all) settings can be overridden by different protocols and/or # source/destination IPs by placing the settings inside sections, for example: # protocol imap { }, local 127.0.0.1 { }, remote 10.0.0.0/8 { } # Default values are shown for each setting, it's not required to uncomment # those. These are exceptions to this though: No sections (e.g. namespace {}) # or plugin settings are added by default, they're listed only as examples. # Paths are also just examples with the real defaults being based on configure # options. The paths listed here are for configure --prefix=/usr # --sysconfdir=/etc --localstatedir=/var # Enable installed protocols !include_try /usr/share/dovecot/protocols.d/*.protocol ...
A instalação do Dovecot já nos tras vários arquivos de configuração
dentro do diretório /etc/dovecot/conf.d/
que são chamados pelos
includes.
┌─[root@centos7lpi]──[22:46]──[~] └─[48]─># ls /etc/dovecot/conf.d 10-auth.conf 15-mailboxes.conf auth-dict.conf.ext 10-director.conf 20-imap.conf auth-master.conf.ext 10-logging.conf 20-pop3.conf auth-passwdfile.conf.ext 10-mail.conf 90-acl.conf auth-sql.conf.ext 10-master.conf 90-plugin.conf auth-static.conf.ext 10-ssl.conf 90-quota.conf auth-system.conf.ext 10-tcpwrapper.conf auth-checkpassword.conf.ext auth-vpopmail.conf.ext 15-lda.conf auth-deny.conf.ext
Precisamos apenas definir em qual diretório os EMails são
armazenados no arquivo 10-mail.conf
(para configurar o Dovecot a
prover acesso a clientes como o M$ Outlook devem ser editados os
arquivos 20-pop3.conf
e 20-imap.conf
, assunto que não faz parte
do exame LPIC2).
Ao configurar o arquivo 10-mail.conf
devemos editar a diretiva
mail_location
:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
para formato
mbox
mail_location = maildir:~/mail/inbox
para o formato maildir
Também é possível configurar o Dovecot para trabalhar na modalidade de contas virtuais seguindo o formato:
mail_location = maildir:/var/mail/vhosts/%d/%n
Nesse exemplo as mensagens serão armazenadas no diretório
/var/mail/vhosts/
onde %d
será expandido para o nome do domínio
que constar no EMail e %u
será expandido para o nome que constar
no EMail. É importante que os diretórios base sejam criados antes
que o Dovecote passe a utilizá-los. Também deve ser definida a
diretiva mail_privileged_group = mail
, onde mail
indica o grupo
que conta com permissão de escrita em /var/mail/
.
O controle de acesso é definido no arquivo
/etc/dovecot/conf.d/10-auth.conf
. Nesse arquivo um ajuste
importante é setar a diretiva disable_plaintext_auth = yes
,
negando acesso com senhas não criptografadas. Além disso devem ser
ativados os mecanismos de autenticação com a diretiva
auth_mechanisms = plain login
.
Quando utilizadas contas virtuais armazenadas em banco de dados, é
necessário ativar a opção !include auth-sql.conf.ext
. O arquivo
/etc/dovecot/conf.d/auth-sql.conf.ext
será então utilizado pelo
Dovecot para acessar a base de dados com as informações de contas
virtuais. Se outras modalidades de contas não são utilizdas, a
opção !include auth-system.conf.ext
pode ser descadrtada
comentando a linha com o caractere #
.
No arquivo /etc/dovecot/conf.d/auth-sql.conf.ext
é definido como
são identificados os usuários e suas respectivas senhas.
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=mail gid=mail home=/var/mail/vhosts/%d/%n }
É importante verificar se o usuário e o grupo indicados tem acesso
liberado ao diretório /var/mail/vhosts/
.
No arquivo /etc/dovecot/dovecot-sql.conf.ext
são colocadas as
informações específicas do banco de dados que guarda as informações
das contas de EMail. Assumindo que é utilizado um banco de dados
MySQL, a configuração a seguir deverá ser adotada:
driver = mysql connect = host=127.0.0.1 dbname=vmail-db user=vmail-user password=p@ssw0rd default_pass_scheme = SHA512-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
AS informações de acesso ao banco de dados indicadas na linha
connect
devem ser ajustadas apropriadamente. Por conveniência,
recomenda-se utilizar a mesma tabela de emails virtuais do Postfix,
certificando-se de que as senhas ali armazenadas correspondam ao
formato indicado na opção default_pass_scheme
.
Não há daemons separados para POP e IMAP no Dovecot portanto e
após executar algum ajuste de configuração o daemon dovecot
deve ser reiniciado.
Após o reinicio do daemon do Dovecot podemos verificar o funcionamento inspecionando se ele está ouvindo nas portas corretas
┌─[root@centos7lpi]──[00:52]──[/var/spool/mail] └─[83]─># lsof -i | grep dovecot dovecot 9805 root 24u IPv4 55915 0t0 TCP *:pop3 (LISTEN) dovecot 9805 root 25u IPv6 55916 0t0 TCP *:pop3 (LISTEN) dovecot 9805 root 36u IPv4 55951 0t0 TCP *:imap2 (LISTEN) dovecot 9805 root 37u IPv6 55952 0t0 TCP *:imap2 (LISTEN) ┌─[root@centos7lpi]──[00:52]──[/var/spool/mail] └─[84]─># netstat -tulpen | grep 143 tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 0 55951 9805/dovecot tcp6 0 0 :::143 :::* LISTEN 0 55952 9805/dovecot udp6 0 0 :::60143 :::* 111 17792 745/avahi-daemon: r ┌─[root@centos7lpi]──[00:52]──[/var/spool/mail] └─[85]─># netstat -tulpen | grep 110 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 0 55915 9805/dovecot tcp6 0 0 :::110 :::* LISTEN 0 55916 9805/dovecot
Configuração básica de TLS para o Dovecot
Como já mensionado acima, em sistemas Debian-like hoje o Dovecot
já vem pré-configurado para acesso criptografado por SSL já gerando
o certificado auto-assinado no momento da instalação. Porém importa
saber que as definições dessa configuração ficam em
/etc/dovecot/conf.d/10-ssl.conf
.
ssl = required ssl_cert = </etc/ssl/certs/mailcert.pem ssl_key = </etc/ssl/private/mail.key
O certificado e a chave privada podem ser os mesmos utilizados na
configuração do Postfix. Terminada a configuração do Dovecot, devem
ser incluídas no arquivo de configuração do Postfix
/etc/postfix/main.cf
as definições para que usuários remotos
possam se conectar ao SMTP para enviar EMails:
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = \ permit_sasl_authenticated, \ permit_mynetworks, \ reject_unauth_destination
Desse modo, além do Dovecot controlar o acesso criptografado via IMAP na porta 993 e POP3 na porta 995, ele é utilizado como um plugin pelo Postfix para autorizar os usuários que tentan utilizar o servidor SMTP para enviar mensagens pela porta 587. Ao final dos ajustes devemos reiniciar o Postfix e o Dovecot para que as alterações tenham efeito.
Aqui também podemos validar o funcionamento do Dovecot conferindo as portas em que o daemon está ouvindo, poderemos verificar que serão adicionadas as portas 993 e 995 relativas ao SSL:
┌─[root@centos7lpi]──[00:57]──[/var/spool/mail] └─[97]─># lsof -i | grep dovecot dovecot 12447 root 24u IPv4 76973 0t0 TCP *:pop3 (LISTEN) dovecot 12447 root 25u IPv6 76974 0t0 TCP *:pop3 (LISTEN) dovecot 12447 root 26u IPv4 76975 0t0 TCP *:pop3s (LISTEN) dovecot 12447 root 27u IPv6 76976 0t0 TCP *:pop3s (LISTEN) dovecot 12447 root 38u IPv4 77011 0t0 TCP *:imap2 (LISTEN) dovecot 12447 root 39u IPv6 77012 0t0 TCP *:imap2 (LISTEN) dovecot 12447 root 40u IPv4 77013 0t0 TCP *:imaps (LISTEN) dovecot 12447 root 41u IPv6 77014 0t0 TCP *:imaps (LISTEN)
doveconf
O comando doveconf lê e analisa os arquivos de configuração do Dovecot e os converte em um formato mais simples usado pelo resto do Dovecot printanto na tela todas as configurações vigentes.
Desse comando é importante memorizar a opção -n
que mostra apenas
as configurações vigentes que não são valores padrão.
┌─[root@centos7lpi]──[00:57]──[~] └─[103]─># doveconf -n # 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.13 (7b14904) # OS: Linux 4.10.0-28-generic x86_64 Ubuntu 16.04.3 LTS mail_location = maildir:~/mail/inbox namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } protocols = " imap pop3" ssl = no userdb { driver = passwd }
Autenticação
O Dovecot suporta vários formatos de autenticação. Veja a lista completa em https://doc.dovecot.org/configuration_manual/authentication/authentication_mechanisms/
Aqui importa ter a noção dos seguintes formatos:
Mecanismo | Descrição |
---|---|
plain |
Clássica e insegura autenticação em texto plano |
cram-md5 |
Protege a senha em trânsito contra terceiros. Suporte relativamente bom nos clients. |
digest-md5 |
Um pouco mais forte criptograficamente do que CRAM-MD5 , mas os clients raramente o suportam. |
O comando doveadm
O comando doveadm
é uma ferramenta em linha de comando para
administrar o Dovecot sendo útil para gerenciar várias partes do
Dovecot tais como acessos de usuários a suas mailboxes.
usage: doveadm [-Dv] [-f <formatter>] <command> [<args>] altmove [-u <user>|-A] [-S <socket_path>] [-r] <search query> auth cache|login|lookup|test backup [-u <user>|-A] [-S <socket_path>] [-fPRU] [-l <secs>] [-r <rawlog path>] [-m <mailbox>] [-g <mailbox_guid>] [-n <namespace> | -N] [-x <exclude>] [-s <state>] -d|<dest> batch [-u <user>|-A] [-S <socket_path>] <sep> <cmd1> [<sep> <cmd2> [..]] config [doveconf parameters] copy [-u <user>|-A] [-S <socket_path>] <destination> [user <source user>] <search query> deduplicate [-u <user>|-A] [-S <socket_path>] [-m] <search query> dict get|inc|iter|set|unset director add|down|dump|flush|kick|map|move|remove|ring|status|up|update dump [-t <type>] <path> exec <binary> [binary parameters] expunge [-u <user>|-A] [-S <socket_path>] [-m] <search query> fetch [-u <user>|-A] [-S <socket_path>] <fields> <search query> flags add|remove|replace force-resync [-u <user>|-A] [-S <socket_path>] <mailbox mask> fs copy|delete|get|iter|iter-dirs|metadata|put|stat help <cmd> import [-u <user>|-A] [-S <socket_path>] [-s] <source mail location> <dest parent mailbox> <search query> index [-u <user>|-A] [-S <socket_path>] [-q] [-n <max recent>] <mailbox mask> instance list|remove kick [-a <anvil socket path>] <user mask>[|]<ip/bits> log errors|find|reopen|test mailbox create|delete|list|metadata|mutf7|rename|status|subscribe|unsubscribe mount add|list|remove move [-u <user>|-A] [-S <socket_path>] <destination> [user <source user>] <search query> penalty [-a <anvil socket path>] [<ip/bits>] proxy kick|list purge [-u <user>|-A] [-S <socket_path>] pw [-l] [-p plaintext] [-r rounds] [-s scheme] [-t hash] [-u user] [-V] reload replicator add|dsync-status|remove|replicate|status save [-u <user>|-A] [-S <socket_path>] [-m mailbox] search [-u <user>|-A] [-S <socket_path>] <search query> sis deduplicate|find stats dump|reset|top stop sync [-u <user>|-A] [-S <socket_path>] [-1fPRU] [-l <secs>] [-r <rawlog path>] [-m <mailbox>] [-g <mailbox_guid>] [-n <namespace> | -N] [-x <exclude>] [-s <state>] -d|<dest> user [-a <userdb socket path>] [-x <auth info>] [-f field] [-u] <user mask> [...] who [-a <anvil socket path>] [-1] [<user mask>] [<ip/bits>] zlibconnect <host> [<port>]
Eventuais problemas de funcionamento do servidor de EMail podem ser
investigados nos arquivos de log /var/log/mail.info
,
/var/log/mail.warn
e /var/log/mail.err
. Além disso, os comandos
doveconf
e doveadm
podem ser utilizados para inspecionar as
configurações e o funcionamento do servidor, por exemplo o comando
doveadm who
lista as conexões ativas com no Dovecot. Em sistemas que
utilizam o systemd
, os registros de log podem ser inspecionados
com os comandos:
journalclt -u postfix.service
journalctl -u dovecot.service
Também em função de facilitar a resolução de problemas é bastante
útil habilitar a diretiva verbose_proctitle
definindo-a para
yes
no arquivo /etc/dovecot/dovecot.conf
ela irá apresentar
como títlo dos processos o nome de usuário e o endereço de IP da
conexão com o servidor, facilitando assim eventuais investigações
de problemas.
$ ps aux | grep -I dovevot dovenull 5552 0.0 0.1 18820 5444 ? S 18:53 0:00 dovecot/imap-login [1 connections (1 TLS)] vmail 5553 0.3 0.1 13612 4304 ? S 18:53 0:00 dovecot/imap [user at example.com 1.2.3.4 IDLE]