Docevot é um serviço de email IMAP e POP3 opensource, é uma escolha excelente para pequenas e medias instalações. É rápido e simples de configurar, não necessita de privilégios administrativos e utiliza pouca memória.
Instalação em sistemas Debian:
sudo apt install dovecot-imapd dovecot-pop3d
Instalação em Sistemas CentOS:
yum install dovecot dovecot-pigeonhole -y
As configurações individuais do dovecot para usuários se encontram no diretório: ~/.dovecot.sieve
Caso esse arquivo não exista, será consultado o arquivo /var/lib/dovecot/sieve/default.sieve
Configuração:
- /etc/dovecot/dovecot.conf -> Arquivo principal de configuração.
- /etc/dovecot/conf.d/ -> Arquivos incluidos de configuração pelo arquivo principal.
As próximas configurações vão ser realizadas no arquivo dovecot.conf
Configurando os procotolos que serão servidos:
protocols = imap pop3 lmtp
Configurando o nome da instância:
instance_name = dovecot
Configurando a mensagem de saudação:
login_greeting = Dovecot ready.
Configurando login de redes confiáveis:
login_trusted_networks = 10.0.0.0/26
Configurando o dovecot para ler o MailDir dos usuários:
Não configure com maildir pois deu pau nos filtros na hora do virtual_transport, segundo os docs, o virtual_transport só serve para mbox.
mail_location = maildir:~/Maildir
Configurando o dovecot para acessar os Maildir dos truta:
mail_privileged_group = mail
Primeiro se deve configuarar o socket que será utilizado pelo postfix para encaminhar os e-mails.
Configurando o socket:
vim /etc/dovecot/conf.d/10-master.conf
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0666
user = postfix
}
Habilitando o plugin do sieve:
vim /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp{
postmaster_address = postmaster@linuxlocal.net
mail_plugins = $mail_plugins quota sieve
}
Configurando o postfix:
vim /etc/postfix/main.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp
Sieve
SIEVE is a language created and used for mail filtering that broadens the filtering options generally provided by mail servers or Antispam/Antivirus applications. They work basically by comparing different keys using different comparators and comparison methods, against headers of a mail message. Based on the result of the comparison, you can apply different actions to the corresponding mail message, i.e. reject, discard, redirect, etc.
This language provides an extremely flexible filtering methodology, as users can define any number of script filters according to their needs. Designed to be easily implemented on either a mail client or mail server (such as Sendmail, Qmail, Axigen and so on), using SIEVE scripts does not depend on access protocol, mail architecture, and operating system.
SIEVE is designed as a proposed Internet Standard, as a result of a multi-vendor effort that has been discussed in various technical and standards-oriented public and private meetings since at least 1994
Configuração de regras:
As regras devem estar no diretório pessoal de cada usuário conforme já falado anteriormente.
Alguns testes que o sieve pode realizar:
- address -> Verificação de address no campo headers.
- envelope -> Teste Opcional.
- header -> Testa definições de headers comparando com chaves usando diferentes métodos de comparação.
- allof -> Teste lógico entre diferentes testes.
- anyof -> Teste lógico entre diferentes testes.
- not -> Negação de teste.
- exists -> Testa se um set de header existe
- size -> Teste sobre o tamanho da mensagem.
Algumas extensões:
- vacation -> Auto resposta.
- fileinto -> Guarda a mensaegem em um diretório especifico.
Algumas ações:
- keep -> Apenas guarda a mensagem no local padrão.
- redirect -> Redireciona a mensagem para o endereço indicado na sequencia.
- reject -> Rejeita emails podendo enviar uma mensagem notificando.
- discard -> Descarta a mensagem.
- stop -> Interrompe o processamento das regras.
Exemplo utilizando a extensão vacation:
require "vacation";
vacation
:days 1
:subject "Ausencia devido à feŕias"
:address["quorra@gride.net","tron@gride.net"]
"Por motivo de férias, obviamente não estou disponível."
;
Exemplo utilizando a extensão fileinto:
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "Subject" "**SPAM**" {
fileinto "Trash";
stop;
}
Como utilizar multiplas extensões:
require ["extension_name1", "extension_name2"]
Ferramentas
Aqui serão abordadas as ferramentas doveconf e doveadm
- doveadm -> Dovecot’s administration utility
- doveconf -> Reads and parses Dovecot’s configuration files and converts them into a simpler format used by the rest of Dovecot.
# Show all settings with their currently configured values
doveconf -a
# When Dovecot was configured to use different settings for some networks/subnets it is possible to show which settings will be applied for a specific connection.
doveconf -f local=10.0.0.110 -f remote=10.11.1.2 -f service=pop3 -n
Realizando buscas:
doveadm search all
Encontrando os arquivos de log:
[root@slave dovecot]# doveadm log find
Debug: /var/log/dovecot.log
Info: /var/log/dovecot.log
Warning: /var/log/dovecot.log
Error: /var/log/dovecot.log
Fatal: /var/log/dovecot.log
Recarregando as configurações:
# doveadm reload
IMAPS and POP3S are more secure because they use SSL encryption to connect. A basic self signed ssl certificate is automatically set up by package ssl-cert and used by dovecot in /etc/dovecot/conf.d/10-ssl.conf.
https://www.dovecot.org/
https://help.ubuntu.com/lts/serverguide/dovecot-server.html
https://wiki2.dovecot.org/Tools/Doveconf
