diff --git a/dkim.fc b/dkim.fc index bf4321a..eebcf5d 100644 --- a/dkim.fc +++ b/dkim.fc @@ -1,14 +1,17 @@ /etc/mail/dkim-milter/keys(/.*)? gen_context(system_u:object_r:dkim_milter_private_key_t,s0) -/etc/opendkim/keys(/.*)? gen_context(system_u:object_r:dkim_milter_private_key_t,s0) +/etc/opendkim/keys(/.*)? gen_context(system_u:object_r:dkim_milter_private_key_t,s0) -/usr/sbin/dkim-filter -- gen_context(system_u:object_r:dkim_milter_exec_t,s0) -/usr/sbin/opendkim -- gen_context(system_u:object_r:dkim_milter_exec_t,s0) +/etc/rc\.d/init\.d/((opendkim)|(dkim-milter)) -- gen_context(system_u:object_r:dkim_milter_initrc_exec_t,s0) -/var/db/dkim(/.*)? gen_context(system_u:object_r:dkim_milter_private_key_t,s0) +/usr/sbin/dkim-filter -- gen_context(system_u:object_r:dkim_milter_exec_t,s0) +/usr/sbin/opendkim -- gen_context(system_u:object_r:dkim_milter_exec_t,s0) -/var/run/dkim-filter(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) -/var/run/dkim-milter(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) +/var/db/dkim(/.*)? gen_context(system_u:object_r:dkim_milter_private_key_t,s0) + +/var/run/dkim-filter(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) +/var/run/dkim-milter(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) /var/run/dkim-milter\.pid -- gen_context(system_u:object_r:dkim_milter_data_t,s0) -/var/run/opendkim(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) -/var/spool/opendkim(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) +/var/run/opendkim(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) + +/var/spool/opendkim(/.*)? gen_context(system_u:object_r:dkim_milter_data_t,s0) diff --git a/dkim.if b/dkim.if index 32d108a..386e494 100644 --- a/dkim.if +++ b/dkim.if @@ -1 +1,39 @@ ## DomainKeys Identified Mail milter. + +######################################## +## +## All of the rules required to +## administrate an dkim environment. +## +## +## +## Domain allowed access. +## +## +## +## +## Role allowed access. +## +## +## +# +interface(`dkim_admin',` + gen_require(` + type dkim_milter_t, dkim_milter_initrc_exec_t, dkim_milter_private_key_t; + type dkim_milter_data_t; + ') + + allow $1 dkim_milter_t:process { ptrace signal_perms }; + ps_process_pattern($1, dkim_milter_t) + + init_labeled_script_domtrans($1, dkim_milter_initrc_exec_t) + domain_system_change_exemption($1) + role_transition $2 dkim_milter_initrc_exec_t system_r; + allow $2 system_r; + + files_search_etc($1) + admin_pattern($1, dkim_milter_private_key_t) + + files_search_pids($1) + admin_pattern($1, dkim_milter_data_t) +') diff --git a/dkim.te b/dkim.te index cc1199e..30f4578 100644 --- a/dkim.te +++ b/dkim.te @@ -1,4 +1,4 @@ -policy_module(dkim, 1.1.0) +policy_module(dkim, 1.1.1) ######################################## # @@ -7,7 +7,9 @@ policy_module(dkim, 1.1.0) milter_template(dkim) -# Type for the private key of dkim-filter +type dkim_milter_initrc_exec_t; +init_script_file(dkim_milter_initrc_exec_t) + type dkim_milter_private_key_t; files_type(dkim_milter_private_key_t)