summaryrefslogtreecommitdiffstats
path: root/roles/webmail/tasks/roundcube.yml
blob: 309aba47c8a53a0fa03bb5feb52a255931943b7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
- name: Install PHP
  apt: pkg={{ item }}
  with_items:
    - php5-fpm
    - php5-ldap
    - php5-gd
    - php5-pspell

- name: Install Roundcube
  apt: pkg={{ item }} default_release={{ ansible_lsb.codename }}-backports
  with_items:
    - roundcube-core
    - roundcube-mysql
    - roundcube-plugins
    - php-net-sieve
    - php-net-ldap3
    - php-mail-mimedecode

- name: Copy fripost's logo
  copy: src=usr/share/roundcube/skins/{{ item }}/images/fripost_logo.png
        dest=/usr/share/roundcube/skins/{{ item }}/images/fripost_logo.png
        owner=root group=root
        mode=0644
  with_items:
    - classic
    - larry

- name: Configure Roundcube
  lineinfile: dest=/etc/roundcube/config.inc.php
              "regexp=^\\s*\\$config\\['{{ item.var }}'\\]\\s*="
              "line=$config['{{ item.var }}'] = {{ item.value }};"
              owner=root group=www-data
              mode=0640
  with_items:
    # Logging/Debugging
    - { var: smtp_log,               value: "false" }
    # IMAP
    - { var: default_host,           value: "'localhost'" }
    - { var: default_port,           value: "143" }
    - { var: imap_auth_type,         value: "'PLAIN'"     }
    - { var: imap_cache,             value: "null"        }
    - { var: messages_cache,         value: "false"       }
    # SMTP
    - { var: smtp_server,            value: "'localhost'" }
    - { var: smtp_port,              value: "2525"        }
    # System
    - { var: force_https,            value: "true"                       }
    - { var: login_autocomplete,     value: "2"                          }
    - { var: skin_logo,              value: "'/images/fripost_logo.png'" }
    - { var: username_domain,        value: "'fripost.org'"              }
    - { var: product_name,           value: "'Fripost Webmail'"          }
    # Plugins
    - { var: plugins,                value: "array('archive','additional_message_headers','managesieve','password')" }
    # User Interface
    - { var: skin,                   value: "'larry'" }
    - { var: language,               value: "'sv_SE'" }
    - { var: create_default_folders, value: "true"    }
    # User Preferences
    - { var: htmleditor,             value: "3"     }
    - { var: skip_deleted,           value: "true"  }
    - { var: check_all_folders,      value: "false" }

- name: Make the logo a hyperlink to the website
  lineinfile: dest=/usr/share/roundcube/skins/{{ item }}/templates/login.html
              regexp='^(<roundcube:object name="logo" src="/images/roundcube_logo.png"[^>]* />)$'
              line='<a href="https://fripost.org">\1</a>'
              backrefs=yes
              owner=root group=root
              mode=0644
  with_items:
    - classic
    - larry

- name: Configure Roundcube plugins
  copy: src=etc/roundcube/plugins/{{ item }}/config.inc.php
        dest=/etc/roundcube/plugins/{{ item }}/config.inc.php
        owner=root group=root
        mode=0644
  with_items:
    - additional_message_headers
    - managesieve
    - password

- name: Start php5-fpm
  service: name=php5-fpm state=started

- name: Generate a private key and a X.509 certificate for Nginx
  command: genkeypair.sh x509
                         --pubkey=/etc/nginx/ssl/mail.fripost.org.pem
                         --privkey=/etc/nginx/ssl/mail.fripost.org.key
                         --ou=WWW --cn=mail.fripost.org --dns=mail.fripost.org
                         -t rsa -b 4096 -h sha512
  register: r1
  changed_when: r1.rc == 0
  failed_when: r1.rc > 1
  notify:
    - Restart Nginx
  tags:
    - genkey

- name: Copy /etc/nginx/sites-available/roundcube
  copy: src=etc/nginx/sites-available/roundcube
        dest=/etc/nginx/sites-available/roundcube
        owner=root group=root
        mode=0644
  register: r2
  notify:
    - Restart Nginx

- name: Create /etc/nginx/sites-enabled/roundcube
  file: src=../sites-available/roundcube
        dest=/etc/nginx/sites-enabled/roundcube
        owner=root group=root
        state=link force=yes
  register: r3
  notify:
    - Restart Nginx

- name: Start Nginx
  service: name=nginx state=started
  when: not (r1.changed or r2.changed or r3.changed)

- meta: flush_handlers