Strumenti Utente

Strumenti Sito


config:dovecot

Dovecot

Dovecot è il nostro server mail, mantiene le email degli utenti ed espone l'accesso per i protocolli POP3 ed IMAP.

Dovecot non è un Mail Transfer Agent, non si occupa di consegnare i messaggi che riceviamo/mandiamo da lilik.it .

Dovecot mantiene i messaggi nel local message store e gestisce gli accessi IMAP e POP3.

Per lo storage delle mail abbiamo scelto il formato Maildir che isola ogni messaggio nel proprio file, la cartella che viene usata per mantenere i messaggi è /root/Maildir sulla macchina virtuale mail.

Dovecot su Debian

Per la configurazione base (IMAP e POP3) sono necessari i pacchetti dovecot-imapd dovecot-pop3d, il nostro sistema di autenticazione richiede inoltre dovecot-ldap per potersi autenticare tramite LDAP.

Impostare il local message store

Dovecot è installato sul server che ospita anche il Mail Transfer Agent, che nel nostro caso è Postfix, sulla macchina virtuale mail.

Al momento il local message store su mail è la cartella /root/Maildir.

Configurare Dovecot

Per trovare i file di configurazione di Dovecot puoi usare il comando doveconf -n | head -n1, questo stamperà a schermo il percorso.

Il comando dovecot -n stampa i valori non standard della configurazione di dovecot, se volete tutti i valori usate dovecot -a.

Nella vm mail i file si trovano al percorso /etc/dovecot/dovecot.conf

Questa è la configurazione di dovecot che il comando dovecot -n riporta.

# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.16.0-4-amd64 x86_64 Debian 7.9 
mail_gid = 800
mail_location = maildir:/home/mail_deliver/%d/%n
mail_uid = 800
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
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 {
  args = /etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
plugin {
  quota = maildir:User quota
  sieve = /home/mail_deliver/%d/%n/.dovecot.sieve
  sieve_dir = /home/mail_deliver/%d/%n/sieve
  sieve_global_dir = /var/lib/dovecot/sieve/global/
}
protocols = " imap lmtp sieve pop3"
service auth {
  unix_listener auth-master {
    group = mail_deliver
    user = mail_deliver
  }
  unix_listener auth-userdb {
    group = mail_deliver
    mode = 0664
    user = mail_deliver
  }
}
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  process_min_avail = 1
  service_count = 1
  vsz_limit = 64 M
}
service managesieve {
  process_limit = 10
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
  args = /etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
protocol lmtp {
  mail_plugins = " sieve"
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  hostname = mail.lilik.it
  mail_plugins = " sieve"
  postmaster_address = roots@lilik.it
}
protocol sieve {
  managesieve_implementation_string = dovecot
  managesieve_max_line_length = 65536
}

Usare LDAP con Dovecot

Per usare LDAP tracciare un pentacolo rovesciato e tenete a portata un gallo nero.

L'albero LDAP è in cambiamento quindi questa configurazione verrà presto abbandonata.

/etc/dovecot/dovecot-ldap.conf.ext
# LDAP URIs to use. You can use this instead of hosts list. Note that this
# setting isn't supported by all LDAP libraries.
uris = ldap://ldap.lilik.it
 
# Use authentication binding for verifying password's validity. This works by
# logging into LDAP server using the username and password given by client.
# The pass_filter is used to find the DN for the user. Note that the pass_attrs
# is still used, only the password field is ignored in it. Before doing any
# search, the binding is switched back to the default DN.
auth_bind = yes
 
# LDAP protocol version to use. Likely 2 or 3.
ldap_version = 3
 
# LDAP base. %variables can be used here.
# For example: dc=mail, dc=example, dc=org
base = o=hosting,dc=lilik,dc=it
 
# Dereference: never, searching, finding, always
deref = never
 
# Search scope: base, onelevel, subtree
scope = subtree
 
#unicorno preso dal recinto di lilik2.0
#user_attrs = mail=user,quota=quota=maildir:storage
# QUOTA V.1.1+
user_attrs = mail=user,quota=quota_rule=*:storage=%$
 
# Filter for user lookup. Some variables can be used (see
# http://wiki2.dovecot.org/Variables for full list):
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if user there's no domain
#user_filter = (&(objectClass=posixAccount)(uid=%u))
user_filter = (&(&(objectClass=VirtualMailAccount)(mail=%u))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
 
# Password checking attributes:
#  user: Virtual user name (user@domain), if you wish to change the
#        user-given username to something else
#  password: Password, may optionally start with {type}, eg. {crypt}
# There are also other special fields which can be returned, see
# http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
#pass_attrs = uid=user,userPassword=password
pass_attrs = mail=user
#,userPassword=password
 
# Filter for password lookups
#pass_filter = (&(objectClass=posixAccount)(uid=%u))
pass_filter = (&(&(objectClass=VirtualMailAccount)(mail=%u))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
 
# Default password scheme. "{scheme}" before password overrides this.
# List of supported schemes is in: http://wiki2.dovecot.org/Authentication
default_pass_scheme = CRYPT

UID e GID unici

Di base ogni messaggio viene salvato nella home personale del destinatario. Per evitare di avere tante home tanti quanti sono gli utenti del Lilik è possibile settarne una unica per tutti.

Creando un unico utente postman tutte le mail verranno salvate nella sua cartella sotto il dominio adeguato, e.g. /home/postman/lilik.it e dentro una cartella personale per ogni utente.

# proprietario e gruppo dei file mail
# mantenuti in /etc/postman
mail_uid = postman
main_gid = postman

Altre configurazioni

Il protocollo con cui Dovecot gestisce lo smistamento della posta agli utenti non permette di mandare lo stesso messaggi a più utenti in un solo tentativo di consegna.

L'opzione dovecot_destination_recipient_limit deve essere impostata a 1 per supplire a questa mancanza.

# limita ad un destinatario per tentata consegna
dovecot_destination_recipient_limit = 1

Link interessanti

config/dovecot.txt · Ultima modifica: 2016/08/17 16:21 da edoput