<?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.10">
  <services>
    <service name="postfix" target="multi-user">
      <override/>
      <file engine="none" source="sysuser-postfix.conf">/sysusers.d/1postfix.conf</file>
      <file engine="none" source="tmpfile-postfix.conf">/tmpfiles.d/0postfix.conf</file>
      <file>/etc/postfix/main.cf</file>
      <file>/etc/postfix/master.cf</file>
      <file>/etc/postfix/relay_passwd</file>
      <file>/etc/postfix/ldapsource.cf</file>
      <file>/etc/pki/ca-trust/source/anchors/ca_MailServer.crt</file>
      <file>/etc/pki/tls/certs/postfix.crt</file>
      <file owner="root" group="postfix" mode="440">/etc/pki/tls/private/postfix.key</file>
      <file>/etc/postfix/sni</file>
      <file source="postfix_sni.pem" file_type="variable" mode="400" variable="submission_domainname">postfix_pem_files</file>
      <file mode="400">/etc/postfix/certs/postfix.pem</file>
    </service>
    <service name='dovecot-init'>
      <override/>
      <file>/etc/nginx/conf.d/autoconfig.conf</file>
    </service>
    <service name='nginx'>
      <file source='config-v1.1.xml' file_type="variable" variable="mail_domains">well_known_filenames</file>
    </service>
    <service name="dovecot" target="multi-user">
      <file engine="none" source="sysuser-dovecot.conf">/sysusers.d/1dovecot.conf</file>
      <file engine="none" source="tmpfile-dovecot.conf">/tmpfiles.d/0dovecot.conf</file>
      <file engine='none'>/etc/dovecot/conf.d/10-logging.conf</file>
      <file engine='none'>/etc/dovecot/conf.d/10-auth.conf</file>
      <file engine='none'>/etc/dovecot/conf.d/10-mail.conf</file>
      <file>/etc/dovecot/conf.d/10-master.conf</file>
      <file>/etc/dovecot/conf.d/10-ssl.conf</file>
      <!-- FIXME file engine='none'>/etc/dovecot/conf.d/12-managesieve.conf</file-->
      <file engine='none'>/etc/dovecot/conf.d/15-ldap.conf</file>
      <file engine='none'>/etc/dovecot/conf.d/30-service-stats.conf</file>
      <file engine='none'>/etc/dovecot/conf.d/00-risotto.conf</file>
      <!--plain authentification-->
      <file>/etc/dovecot/conf.d/auth-ldap.conf.ext</file>
      <file>/etc/dovecot/dovecot-ldap.conf.ext</file>
      <!--oauth2 authentification-->
      <file>/etc/dovecot/conf.d/auth-oauth2.conf.ext</file>
      <file>/etc/dovecot/dovecot-oauth2.conf.ext</file>
      <!--internal authentification-->
      <file>/etc/pki/ca-trust/source/anchors/ca_IMAPServer.crt</file>
      <file>/etc/pki/tls/certs/dovecot.crt</file>
      <file owner="root" group="dovecot" mode="440">/etc/pki/tls/private/dovecot.key</file>
      <file source="external_imap.crt" file_type="variable" variable="imap_domainname">external_imap_crt</file>
      <file owner="root" group="dovecot" mode="440" source="external_imap.key" file_type="variable" variable="imap_domainname">external_imap_key</file>
    </service>
  </services>
  <variables>
    <family name="network">
      <variable name="incoming_ports" redefine="True">
        <value>587</value>
        <value>993</value>
      </variable>
    </family>
    <family name="annuaire">
      <family name="client">
        <variable name='ldapclient_family' redefine="True">
          <value>all</value>
        </variable>
        <variable name="ldap_key_file_owner" redefine="True">
          <value>dovecot</value>
        </variable>
        <variable name="ldap_key_file_group" redefine="True">
          <value>postfix</value>
        </variable>
      </family>
    </family>
    <family name="mail" description="Mail domain" leadership="True">
      <variable name="mail_domains" type="domainname" description="Domaine de courriel géré localement" mandatory="True" multi="True"/>
      <variable name="mail_domains_calc" type="domainname" hidden="True"/>
      <variable name="mail_domains_calc_autoconfig" type="domainname" hidden="True"/>
      <variable name="imap_domainname" type="domainname" mandatory="True"/>
      <variable name="submission_domainname" type="domainname" mandatory="True"/>
    </family>
    <family name="postfix">
      <variable name='postfix_pem_files' type="filename" hidden='True' multi='True'/>
    </family>
    <family name="dovecot" description="IMAP mail server">
      <variable name="well_knowns" type="web_address" hidden='True' multi="True"/>
      <variable name="well_known_filenames" type="filename" hidden='True' multi="True"/>
      <variable name='external_imap_crt' type="filename" hidden='True' multi='True'/>
      <variable name='external_imap_key' type="filename" hidden='True' multi='True'/>
    </family>
    <family name="nginx">
      <variable name="nginx_default_https" redefine="True">
        <value>False</value>
      </variable>
      <variable name="revprox_client_external_domainnames" redefine="True" mandatory="False"/>
      <family name="revprox_client">
        <variable name="revprox_client_location" redefine="True" mandatory="False">
          <value/>
        </variable>
      </family>
    </family>
  </variables>
  <constraints>
    <check name="set_linked_configuration">
      <param name="linked_server" type="variable">smtp_relay_address</param>
      <param name="linked_provider">lmtp_server</param>
      <param name="linked_value" type="variable">domain_name_eth0</param>
      <target>mail_domains</target>
    </check>
    <check name="set_linked_configuration">
      <param name="linked_server" type="variable">smtp_relay_address</param>
      <param name="linked_provider">lmtp_criteria</param>
      <param name="dynamic" type="variable">domain_name_eth0</param>
      <target>mail_domains</target>
    </check>
    <fill name="calc_value">
      <param>/etc/pki/tls/certs/imap_</param>
      <param type="variable">imap_domainname</param>
      <param>.crt</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>external_imap_crt</target>
    </fill>
    <fill name="calc_value">
      <param>/etc/pki/tls/private/imap_</param>
      <param type="variable">imap_domainname</param>
      <param>.key</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>external_imap_key</target>
    </fill>
    <fill name="calc_value">
      <param>/etc/postfix/certs/</param>
      <param type="variable">submission_domainname</param>
      <param>.pem</param>
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>postfix_pem_files</target>
    </fill>
    <fill name="calc_value">
      <param type="variable">mail_domains</param>
      <target>mail_domains_calc</target>
    </fill>
    <fill name="calc_value">
      <param>autoconfig</param>
      <param type="variable">mail_domains</param>
      <param name="join">.</param>
      <target>mail_domains_calc_autoconfig</target>
    </fill>
    <fill name="calc_value">
      <param>/var/www/html/mail/</param>
      <param type="variable">mail_domains</param>
      <param>/autodiscover/autodiscover.xml</param>
      <!--param>/config-v1.1.xml</param-->
      <param name="join"></param>
      <param name="multi" type="boolean">True</param>
      <target>well_known_filenames</target>
    </fill>
    <check name="set_linked_multi_variables">
      <param type="variable">revprox_client_server_domainname</param>
      <param name="linked_provider_0">revprox_clients</param>
      <param name="linked_provider_1">revprox_location</param>
      <param name="linked_value_1">/mail/config-v1.1.xml</param>
      <param name="linked_provider_2">revprox_is_websocket</param>
      <param name="linked_value_2" type="boolean">False</param>
      <param name="linked_provider_3">revprox_url</param>
      <param name="linked_value_3" type="variable">well_knowns</param>
      <param name="variable_index_3" type="boolean">True</param>
      <param name="variable_index" type="index"/>
      <target>mail_domains_calc_autoconfig</target>
    </check>
    <check name="set_linked_multi_variables">
      <param type="variable">revprox_client_server_domainname</param>
      <param name="linked_provider_0">revprox_clients</param>
      <param name="linked_provider_1">revprox_location</param>
      <param name="linked_value_1">/.well-known/autoconfig/mail/config-v1.1.xml</param>
      <param name="linked_provider_2">revprox_is_websocket</param>
      <param name="linked_value_2" type="boolean">False</param>
      <param name="linked_provider_3">revprox_url</param>
      <param name="linked_value_3" type="variable">well_knowns</param>
      <param name="variable_index_3" type="boolean">True</param>
      <param name="variable_index" type="index"/>
      <target>mail_domains_calc</target>
    </check>
    <check name="set_linked_multi_variables">
      <param type="variable">revprox_client_server_domainname</param>
      <param name="linked_provider_0">revprox_clients</param>
      <param name="linked_provider_1">revprox_location</param>
      <param name="linked_value_1">/autodiscover/autodiscover.xml</param>
      <param name="linked_provider_2">revprox_is_websocket</param>
      <param name="linked_value_2" type="boolean">False</param>
      <param name="linked_provider_3">revprox_url</param>
      <param name="linked_value_3" type="variable">well_knowns</param>
      <param name="variable_index_3" type="boolean">True</param>
      <param name="variable_index" type="index"/>
      <target>mail_domains_calc</target>
    </check>
    <fill name="calc_well_known">
      <param type="variable">domain_name_eth0</param>
      <param type="variable">mail_domains</param>
      <target>well_knowns</target>
    </fill>
  </constraints>
</rougail>