summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--IMAP.yml5
-rw-r--r--roles/IMAP-proxy/tasks/main.yml14
-rw-r--r--roles/IMAP-proxy/templates/etc/dovecot/conf.d/20-imapc.conf.j2 (renamed from roles/IMAP-proxy/files/etc/dovecot/conf.d/20-imapc.conf)9
-rw-r--r--roles/IMAP-proxy/templates/etc/dovecot/conf.d/auth-imap.conf.ext.j2 (renamed from roles/IMAP-proxy/files/etc/dovecot/conf.d/auth-imap.conf.ext)2
4 files changed, 22 insertions, 8 deletions
diff --git a/IMAP.yml b/IMAP.yml
index 1e55091..5f2a2a3 100644
--- a/IMAP.yml
+++ b/IMAP.yml
@@ -1,13 +1,16 @@
---
- name: Configure the IMAP server
hosts: IMAP
roles:
- { role: IMAP, inst: IMAP }
+ tags:
+ - imap
+ - dovecot
- name: Configure IMAP proxies
hosts: webmail:!IMAP
roles:
- - IMAP-proxy
+ - { role: IMAP-proxy, imapsvr: "{{ hostvars[groups.IMAP[0]] }}" }
tags:
- imap
- dovecot
diff --git a/roles/IMAP-proxy/tasks/main.yml b/roles/IMAP-proxy/tasks/main.yml
index 579fc7e..93a5181 100644
--- a/roles/IMAP-proxy/tasks/main.yml
+++ b/roles/IMAP-proxy/tasks/main.yml
@@ -7,55 +7,65 @@
- name: Create a user 'imapproxy'
user: name=imapproxy system=yes
createhome=no
home=/var/lib/imapproxy
shell=/usr/sbin/nologin
password=!
state=present
- name: Create a home directory for user 'imapproxy'
file: path=/var/lib/imapproxy
state=directory
owner=imapproxy group=imapproxy
mode=0700
- name: Configure Dovecot
copy: src=etc/dovecot/conf.d/{{ item }}
dest=/etc/dovecot/conf.d/{{ item }}
owner=root group=root
mode=0644
- register: r
+ register: r1
with_items:
- 10-auth.conf
- 10-logging.conf
- 10-mail.conf
- 10-master.conf
- 15-mailboxes.conf
+ notify:
+ - Restart Dovecot
+
+- name: Configure Dovecot (2)
+ template: src=etc/dovecot/conf.d/{{ item }}.j2
+ dest=/etc/dovecot/conf.d/{{ item }}
+ owner=root group=root
+ mode=0644
+ register: r2
+ with_items:
- 20-imapc.conf
- auth-imap.conf.ext
notify:
- Restart Dovecot
- name: Start Dovecot
service: name=dovecot state=started
- when: not r.changed
+ when: not (r1.changed or r2.changed)
- meta: flush_handlers
- name: Create /etc/stunnel/certs
file: path=/etc/stunnel/certs
state=directory
owner=root group=root
mode=0755
- name: Copy Dovecot's X.509 certificate
copy: src=certs/public/imap.fripost.org.pem
dest=/etc/stunnel/certs/imap.fripost.org.pem
owner=root group=root
mode=0644
register: r1
notify:
- Restart stunnel@roundcube
- name: Copy slapd's X.509 certificate
diff --git a/roles/IMAP-proxy/files/etc/dovecot/conf.d/20-imapc.conf b/roles/IMAP-proxy/templates/etc/dovecot/conf.d/20-imapc.conf.j2
index 4c1cf8f..39dbbd6 100644
--- a/roles/IMAP-proxy/files/etc/dovecot/conf.d/20-imapc.conf
+++ b/roles/IMAP-proxy/templates/etc/dovecot/conf.d/20-imapc.conf.j2
@@ -1,17 +1,18 @@
# Smart IMAP proxying with imapc storage
#
# http://dovecot.org/pipermail/dovecot/2011-January/056975.html
# http://wiki2.dovecot.org/HowTo/ImapcProxy
+# http://wiki2.dovecot.org/MailboxFormat/imapc
# http://wiki2.dovecot.org/Migration/Dsync
-imapc_host = localhost
-imapc_port = 993
+imapc_host = {{ ipsec[imapsvr.inventory_hostname_short] }}
+imapc_port = 143
# Read multiple mails in parallel, improves performance
mail_prefetch_count = 25
-# The list of valid features can be found there
-# http://hg.dovecot.org/dovecot-2.2/file/tip/src/lib-storage/index/imapc/imapc-settings.c
+# The list of valid features can be found at
+# https://github.com/dovecot/core/blob/master/src/lib-storage/index/imapc/imapc-settings.c
# (in the struct 'imapc_feature_list imapc_feature_list')
imapc_features = rfc822.size fetch-headers
#imapc_features = rfc822.size fetch-headers search
diff --git a/roles/IMAP-proxy/files/etc/dovecot/conf.d/auth-imap.conf.ext b/roles/IMAP-proxy/templates/etc/dovecot/conf.d/auth-imap.conf.ext.j2
index ced2f80..30b8d7f 100644
--- a/roles/IMAP-proxy/files/etc/dovecot/conf.d/auth-imap.conf.ext
+++ b/roles/IMAP-proxy/templates/etc/dovecot/conf.d/auth-imap.conf.ext.j2
@@ -1,17 +1,17 @@
# Authentication via remote IMAP server. Included from auth.conf.
#
# <doc/wiki/PasswordDatabase.IMAP.txt>
passdb {
driver = imap
- args = host=localhost port=993
+ args = host={{ ipsec[imapsvr.inventory_hostname_short] }} port=143
default_fields = userdb_imapc_password=%w
}
# "prefetch" user database means that the passdb already provided the
# needed information and there's no need to do a separate userdb lookup.
# <doc/wiki/UserDatabase.Prefetch.txt>
userdb {
driver = prefetch
default_fields = home=/var/lib/imapproxy/%d/%n
}