diff --git a/defaults/main.yml b/defaults/main.yml index da737d2..2d9c70b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,206 +1,225 @@ --- -# junk mailbox name -dovecot_mailbox_junk: "Junk" +# Mail -# activar single-instance storage? -dovecot_sis_enable: yes +# carpeta por defecto para el mail +dovecot_mail_home: "{{ vmail_home | default('/srv/mail') }}" -# lugar donde se guardan los adjuntos -dovecot_sis_directory: "{{ vmail_home }}/attachments" - -# tamaño minimo de adjuntos a guardar aparte -dovecot_sis_min_size: "128k" - -# hash a usar para desduplicar -dovecot_sis_hash: "%{sha1}" - -# habilitar desduplicacion postergada? -dovecot_sis_queue_enable: no - -# carpeta de "encolados para desduplicar -dovecot_sis_queue_directory: "{{ vmail_home }}/attachments-queue" - -# carpeta alternativa de correo -dovecot_altstorage_enable: no - -# carpeta alternativa de correo -dovecot_altstorage_directory: "{{ vmail_home }}/alt-storage" +# carpeta de mail de cada usuario +dovecot_user_home: "{{ dovecot_mail_home }}/mail/%d/%n" # formato del mailbox: dbox, mdbox, sdbox, maildir -dovecot_mailbox_format: "dbox" +dovecot_mailbox_format: dbox -# ubicacion de mails de dovecot -dovecot_mail_location: > - {%- if "dbox" in dovecot_mailbox_format -%} - {{dovecot_mailbox_format}}:~/dbox - {%- else -%} - {{dovecot_mailbox_format}}:~/Maildir - {%- endif %} +# ubicacion de mails de dovecot (~ = dovecot_user_home) +dovecot_mail_location: + "{%- if 'dbox' in dovecot_mailbox_format -%}\ + {{dovecot_mailbox_format}}:~/dbox\ + {%- else -%}\ + {{dovecot_mailbox_format}}:~/Maildir\ + {%- endif %}" -# carpeta "home" de los usuarios de dovecot -dovecot_user_home: "{{ vmail_home }}/mail/%d/%n" +# nombre de la carpeta de spam +dovecot_mailbox_junk: Junk -# como transformar el nombre de usuario antes de autenticar -dovecot_auth_username_format: "%Lu" +# Auth # mecanismos de autenticacion: agregar login para compat. outlook -dovecot_auth_mechanisms: "plain" +dovecot_auth_mechanisms: plain + +# como transformar el nombre de usuario antes de autenticar +dovecot_auth_username_format: %Lu # habilitar userdb/passdb de usuarios del sistema? -dovecot_auth_system_enable: no +dovecot_auth_system_enable: no + +# habilitar usuarios master? +dovecot_auth_master_enable: no + +# Protocolos + +# activar IMAP? +dovecot_proto_imap_enable: yes + +# activar IMAPS? +dovecot_proto_imaps_enable: no + +# activar POP3? +dovecot_proto_pop3_enable: no + +# activar POP3S? +dovecot_proto_pop3s_enable: no + +# activar managesieve? +dovecot_proto_managesieve_enable: yes + +# TLS + +# habilitar ssl +dovecot_ssl_enable: yes + +# requerir ssl +dovecot_ssl_require: no + +# path absoluto al certificado SSL +dovecot_ssl_cert: + "{{ tls_certificate | default('/etc/ssl/certs/ssl-cert-snakeoil.pem') }}" + +# path absoluto a la clave privada SSL +dovecot_ssl_key: + "{{ tls_certificate_key | \ + default('/etc/ssl/private/ssl-cert-snakeoil.key') }}" + +# LDAP # habilitar userdb/passdb ldap? -dovecot_auth_ldap_enable: yes +dovecot_ldap_enable: yes # servidores ldap -dovecot_auth_ldap_servers: [ "localhost" ] +dovecot_ldap_servers: + - localhost # version del protocolo LDAP -dovecot_auth_ldap_version: 3 +dovecot_ldap_version: 3 # base para la busqueda en LDAP -dovecot_auth_ldap_base: "ou=People,dc=%Dd" +dovecot_ldap_base: "ou=People,dc=%Dd" # scope para la busqueda en ldap: base, onelevel, subtree -dovecot_auth_ldap_scope: "subtree" +dovecot_ldap_scope: subtree # filtro para obtener la entrada del usuario LDAP -dovecot_auth_ldap_user_filter: "(&(objectClass=inetOrgPerson)(uid=%n))" +dovecot_ldap_user_filter: "(&(objectClass=inetOrgPerson)(uid=%n))" # filtro para obtener la clave del usuario LDAP -dovecot_auth_ldap_pass_filter: "(&(objectClass=inetOrgPerson)(uid=%n))" +dovecot_ldap_pass_filter: "(&(objectClass=inetOrgPerson)(uid=%n))" # atributos del usuario leidos de LDAP # por defecto, usar valores pre-calculados -dovecot_auth_ldap_user_attrs: > - =home={{ dovecot_user_home }}, - =uid={{ vmail_user }}, - =gid={{ vmail_group }} +dovecot_ldap_user_attrs: + "=home={{ dovecot_user_home }}, =uid={{ vmail_user }}, \ + =gid={{ vmail_group }}" # clave + atributos del usuario leidos de LDAP # por defecto, usar valores pre-calculados -dovecot_auth_ldap_pass_attrs: > - userPassword=password, - =userdb_home={{ dovecot_user_home }}, - =userdb_uid={{ vmail_user }}, - =userdb_gid={{ vmail_group }} +dovecot_ldap_pass_attrs: + "userPassword=password, =userdb_home={{ dovecot_user_home }}, \ + =userdb_uid={{ vmail_user }}, =userdb_gid={{ vmail_group }}" # iteracion con doveadm # CAVEAT: al usar %Dd en ldap_base, no se puede utilizar doveadm -A, # sino que siempre se debe especificar un dominio usando -u "*@dominio" -dovecot_auth_ldap_iterate_attrs: "=user=%{ldap:uid}@%d" +dovecot_ldap_iterate_attrs: "=user=%{ldap:uid}@%d" # cuando ldap_base es fija (sin %Dd): -# dovecot_auth_ldap_iterate_attrs: "uid=user" +# dovecot_ldap_iterate_attrs: "uid=user" -# filtro para iteracion: este filtro debe devolver todas las personas -# de tipo "usuario" -dovecot_auth_ldap_iterate_filter: "(objectClass=inetOrgPerson)" +# filtro para iteracion: debe devolver todas las personas de tipo "usuario" +dovecot_ldap_iterate_filter: "(objectClass=inetOrgPerson)" -# ??? -dovecot_auth_ldap_default_pass_scheme: "CRYPT" +# Esquema con que se guarda la clave (no deberia usarse) +dovecot_ldap_default_pass_scheme: "CRYPT" -# habilitar usuarios master? -dovecot_auth_master_enable: no - -# habilitar ssl -dovecot_ssl_enable: yes - -# requerir ssl -dovecot_ssl_require: no - -# path absoluto al certificado SSL -dovecot_ssl_cert: "{{ tls_certificate }}" - -# path absoluto a la clave privada SSL -dovecot_ssl_key: "{{ tls_certificate_key }}" - -# activar IMAP? -dovecot_proto_imap_enable: yes - -# activar IMAPS? -dovecot_proto_imaps_enable: no - -# activar POP3? -dovecot_proto_pop3_enable: no - -# activar POP3S? -dovecot_proto_pop3s_enable: no - -# activar managesieve? -dovecot_proto_managesieve_enable: yes +# Antispam # Activar el plugin antispam? -dovecot_antispam_enable: yes +dovecot_antispam_enable: yes # Backend del plugin antispam. Valores posibles: # crm114, dspam, pipe, spool2dir -dovecot_antispam_backend: "pipe" +dovecot_antispam_backend: pipe # Header que indica que el mail ha sido escaneado para spam -dovecot_antispam_signature: "X-Bogosity" +dovecot_antispam_signature: X-Bogosity # Pipe: programa que entrena leyendo el mail en STDIN -dovecot_antispam_pipe_program: "/usr/bin/bogofilter" +dovecot_antispam_pipe_program: /usr/bin/bogofilter # antispam_pipe_program_args = --for;%u -dovecot_antispam_pipe_program_args: "-l" +dovecot_antispam_pipe_program_args: "-l" # Pipe: argumento que indica que el mail NO ES spam dovecot_antispam_pipe_program_notspam_arg: "-n" # Pipe: argumento que indica que el mail ES spam -dovecot_antispam_pipe_program_spam_arg: "-s" +dovecot_antispam_pipe_program_spam_arg: "-s" # Pipe: directorio temporal (creo que el mail se copia ahi primero) -dovecot_antispam_pipe_tmpdir: "/tmp" +dovecot_antispam_pipe_tmpdir: /tmp # accion cuando se mueve un mail que no tiene signature de/hacia spam # valores posibles: # error: fallar en la operacion # move: mover el mensaje de todos modos -dovecot_antispam_signature_missing: "error" +dovecot_antispam_signature_missing: error # nombres de las carpetas de spam -dovecot_antispam_spam: "Junk;junk;Junk Mail;Spam;spam;SPAM" +dovecot_antispam_spam: "Junk;junk;Junk Mail;Spam;spam;SPAM" # nombres de las carpetas de papelera -dovecot_antispam_trash: "Trash;trash;mail/trash;Deleted Messages" +dovecot_antispam_trash: "Trash;trash;mail/trash;Deleted Messages" # debug del plugin antispam -dovecot_antispam_debug_enable: no -dovecot_antispam_debug_target: "syslog" -dovecot_antispam_debug_verbosity: 0 +dovecot_antispam_debug_enable: no +dovecot_antispam_debug_target: syslog +dovecot_antispam_debug_verbosity: 0 + +# Quota # activar plugin quota? -dovecot_plugin_quota_enable: yes +dovecot_quota_enable: yes -# opciones de quota -dovecot_plugin_quota: +# driver: count, maildir +dovecot_quota_driver: count - # driver: count, maildir - driver: "count" +# limite global de la cuota de usuario (en M) +dovecot_quota_limit: 4096M - # limite global de la cuota de usuario (en M) - limit: "4096M" +# limites adicionales para casillas especificas +dovecot_quota_additional_limit: + Trash: "100M" - # limites adicionales para casillas especificas - mailbox_additional_limit: - Trash: "100M" +# gracia (en porcentaje o M) +dovecot_quota_grace: 10% - # gracia (en porcentaje o M) - grace: "10%" +# Sieve # activar plugin sieve? -dovecot_plugin_sieve_enable: yes +dovecot_sieve_enable: yes -# opciones de sieve -dovecot_plugin_sieve: +# dir con scripts ejecutados antes que los del usuario +dovecot_sieve_before: /etc/dovecot/sieve/before - # dir con scripts ejecutados antes que los del usuario - before: "/etc/dovecot/sieve/before" +# dir con scripts ejecutados luego de los del usuario +dovecot_sieve_after: /etc/dovecot/sieve/after - # dir con scripts ejecutados luego de los del usuario - after: "/etc/dovecot/sieve/after" +# activar filtro spam por defecto +dovecot_sieve_global_junk_filter_enable: yes +# Single-instance storage + +# activar single-instance storage? +dovecot_sis_enable: yes + +# lugar donde se guardan los adjuntos +dovecot_sis_directory: "{{ dovecot_mail_home }}/attachments" + +# tamaño minimo de adjuntos a guardar aparte +dovecot_sis_min_size: 128k + +# hash a usar para desduplicar +dovecot_sis_hash: "%{sha1}" + +# habilitar desduplicacion postergada? +dovecot_sis_queue_enable: no + +# carpeta de "encolados para desduplicar +dovecot_sis_queue_directory: "{{ dovecot_mail_home }}/attachments-queue" + +# Alt storage + +# carpeta alternativa de correo +dovecot_altstorage_enable: no + +# carpeta alternativa de correo +dovecot_altstorage_directory: "{{ dovecot_mail_home }}/alt-storage" diff --git a/tasks/main.yml b/tasks/main.yml index 0e562f8..1c406ce 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,24 +1,42 @@ --- -- apt: name=dovecot-ldap - when: dovecot_auth_ldap_enable - -- apt: name=dovecot-pop3d - when: dovecot_proto_pop3_enable or dovecot_proto_pop3s_enable +- name: Instalar Dovecot + apt: + state: present + name: + - dovecot-lmtpd + {% if any([dovecot_proto_imap_enable, dovecot_proto_imaps_enable]) -%} + - dovecot-imapd + {% endif %} + {% if any([dovecot_proto_pop3_enable, dovecot_proto_pop3s_enable]) -%} + - dovecot-pop3d + {% endif %} + {% if dovecot_ldap_enable -%} + - dovecot-ldap + {% endif %} + {% if dovecot_sieve_enable -%} + - dovecot-sieve + {% endif %} + {% if dovecot_proto_managesieve_enable -%} + - dovecot-managesieved + {% endif %} + {% if dovecot_antispam_enable -%} + - dovecot-antispam + {% endif %} -- apt: name=dovecot-imapd - when: dovecot_proto_imap_enable or dovecot_proto_imapd_enable +- name: Directorios de configuración de Dovecot + file: + path: "{{ item }}" + state: directory + loop: + - /etc/dovecot/conf.d + - "{{ dovecot_sieve_before }}" + - "{{ dovecot_sieve_after }}" -- apt: name=dovecot-lmtpd - -- apt: name=dovecot-managesieved - when: dovecot_proto_managesieve_enable - -- apt: name=dovecot-antispam - when: dovecot_plugin_antispam_enable - -- name: Configuración de Dovecot - template: dest="/etc/dovecot/conf.d/{{item}}" src="{{item}}.j2" - with_items: +- name: Configuración de Dovecot (1) + template: + dest: "/etc/dovecot/conf.d/{{ item }}" + src: "{{item}}.j2" + loop: - 10-mail.conf - 10-auth.conf - 10-ssl.conf @@ -31,27 +49,22 @@ - 90-quota.conf - 90-antispam.conf notify: restart dovecot - -- name: configuracion dovecot-ldap + +- name: Configuración de Dovecot (2-LDAP) template: dest: "/etc/dovecot/dovecot-ldap.conf.ext" src: "dovecot-ldap.conf.ext.j2" notify: restart dovecot -- name: enlace simbólico a dovecot-ldap.conf.ext +- name: Configuración de Dovecot (3-LDAP) file: src: dovecot-ldap.conf.ext dest: /etc/dovecot/dovecot-ldap2.conf.ext state: link notify: restart dovecot -- file: path={{ dovecot_plugin_sieve.after }} state=directory - when: dovecot_plugin_sieve_enable - -- file: path={{ dovecot_plugin_sieve.before }} state=directory - when: dovecot_plugin_sieve_enable - -- name: filtro spam global en sieve-after - template: src=junk-filter.sieve.j2 dest={{dovecot_plugin_sieve.after}}/junk-filter.sieve - when: dovecot_plugin_sieve_enable +- name: Filtro de spam global + template: + src: junk-filter.sieve.j2 + dest: "{{ dovecot_sieve_before }}/junk-filter.sieve" notify: recompile sieve scripts