<?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/default.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>
      <file filelist="copy_tests">/tests/imap.yml</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" supplier="LMTP:criteria"/>
      <variable name="mail_domains_calc" 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="imap_internal_address" type="domainname" description="Adresse interne du serveur IMAP" mandatory="True" provider="IMAP"/>
      <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="revprox">
      <family name="revprox_client">
        <variable name="revprox_client_external_domainnames" redefine="True"/>
        <variable name="revprox_client_web_address" redefine="True"/>
      </family>
    </family>
    <family name="nginx">
      <variable name="nginx_root" redefine='True'>
        <value>/var/www/html</value>
      </variable>
    </family>
  </variables>
  <constraints>
    <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">domain_name_eth0</param>
      <target>imap_internal_address</target>
    </fill>
    <fill name="calc_value">
      <param type="variable">mail_domains</param>
      <target>mail_domains_calc</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>
    <fill name="calc_well_known">
      <param type="index"/>
      <param type="variable">domain_name_eth0</param>
      <param type="variable">mail_domains</param>
      <target>revprox_client_web_address</target>
    </fill>
    <fill name="calc_domains">
      <param type="variable">mail_domains</param>
      <target>revprox_client_external_domainnames</target>
    </fill>
    <fill name="calc_locations">
      <param type="variable">revprox_client_external_domainnames</param>
      <param type="index"/>
      <target>revprox_client_location</target>
    </fill>
  </constraints>
</rougail>
