## Postfix email server. ######################################## ## ## Postfix stub interface. No access allowed. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_stub',` gen_require(` type postfix_master_t; ') ') ####################################### ## ## The template to define a postfix domain. ## ## ## ## Domain prefix to be used. ## ## # template(`postfix_domain_template',` gen_require(` attribute postfix_domain; ') ######################################## # # Declarations # type postfix_$1_t, postfix_domain; type postfix_$1_exec_t; domain_type(postfix_$1_t) domain_entry_file(postfix_$1_t, postfix_$1_exec_t) role system_r types postfix_$1_t; ######################################## # # Policy # can_exec(postfix_$1_t, postfix_$1_exec_t) auth_use_nsswitch(postfix_$1_t) ') ####################################### ## ## The template to define a postfix server domain. ## ## ## ## Domain prefix to be used. ## ## # template(`postfix_server_domain_template',` gen_require(` type postfix_master_t; attribute postfix_server_domain, postfix_server_tmp_content; ') ######################################## # # Declarations # postfix_domain_template($1) typeattribute postfix_$1_t postfix_server_domain; type postfix_$1_tmp_t, postfix_server_tmp_content; files_tmp_file(postfix_$1_tmp_t) ######################################## # # Declarations # manage_dirs_pattern(postfix_$1_t, postfix_$1_tmp_t, postfix_$1_tmp_t) manage_files_pattern(postfix_$1_t, postfix_$1_tmp_t, postfix_$1_tmp_t) files_tmp_filetrans(postfix_$1_t, postfix_$1_tmp_t, { file dir }) domtrans_pattern(postfix_master_t, postfix_$1_exec_t, postfix_$1_t) ') ####################################### ## ## The template to define a postfix user domain. ## ## ## ## Domain prefix to be used. ## ## # template(`postfix_user_domain_template',` gen_require(` attribute postfix_user_domains, postfix_user_domtrans; ') ######################################## # # Declarations # postfix_domain_template($1) typeattribute postfix_$1_t postfix_user_domains; ######################################## # # Policy # allow postfix_$1_t self:capability dac_override; domtrans_pattern(postfix_user_domtrans, postfix_$1_exec_t, postfix_$1_t) domain_use_interactive_fds(postfix_$1_t) ') ######################################## ## ## Read postfix configuration content. ## ## ## ## Domain allowed access. ## ## ## # interface(`postfix_read_config',` gen_require(` type postfix_etc_t; ') files_search_etc($1) allow $1 postfix_etc_t:dir list_dir_perms; allow $1 postfix_etc_t:file read_file_perms; allow $1 postfix_etc_t:lnk_file read_lnk_file_perms; ') ######################################## ## ## Create specified object in postfix ## etc directories with a type transition. ## ## ## ## Domain allowed access. ## ## ## ## ## The type of the object to be created. ## ## ## ## ## The object class of the object being created. ## ## ## ## ## The name of the object being created. ## ## # interface(`postfix_config_filetrans',` gen_require(` type postfix_etc_t; ') filetrans_pattern($1, postfix_etc_t, $2, $3, $4) ') ######################################## ## ## Do not audit attempts to read and ## write postfix local delivery ## TCP sockets. ## ## ## ## Domain to not audit. ## ## # interface(`postfix_dontaudit_rw_local_tcp_sockets',` gen_require(` type postfix_local_t; ') dontaudit $1 postfix_local_t:tcp_socket { read write }; ') ######################################## ## ## Read and write postfix local pipes. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_rw_local_pipes',` gen_require(` type postfix_local_t; ') allow $1 postfix_local_t:fifo_file rw_fifo_file_perms; ') ######################################## ## ## Read postfix local process state files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_read_local_state',` gen_require(` type postfix_local_t; ') kernel_search_proc($1) allow $1 postfix_local_t:dir list_dir_perms; allow $1 postfix_local_t:file read_file_perms; allow $1 postfix_local_t:lnk_file read_lnk_file_perms; ') ######################################## ## ## Read and write inherited postfix master pipes. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_rw_inherited_master_pipes',` gen_require(` type postfix_master_t; ') allow $1 postfix_master_t:fd use; allow $1 postfix_master_t:fifo_file { getattr write append lock ioctl read }; ') ######################################## ## ## Read postfix master process state files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_read_master_state',` gen_require(` type postfix_master_t; ') kernel_search_proc($1) allow $1 postfix_master_t:dir list_dir_perms; allow $1 postfix_master_t:file read_file_perms; allow $1 postfix_master_t:lnk_file read_lnk_file_perms; ') ######################################## ## ## Use postfix master file descriptors. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_use_fds_master',` gen_require(` type postfix_master_t; ') allow $1 postfix_master_t:fd use; ') ######################################## ## ## Do not audit attempts to use ## postfix master process file ## file descriptors. ## ## ## ## Domain to not audit. ## ## # interface(`postfix_dontaudit_use_fds',` gen_require(` type postfix_master_t; ') dontaudit $1 postfix_master_t:fd use; ') ######################################## ## ## Execute postfix_map in the postfix_map domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`postfix_domtrans_map',` gen_require(` type postfix_map_t, postfix_map_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, postfix_map_exec_t, postfix_map_t) ') ######################################## ## ## Execute postfix map in the postfix ## map domain, and allow the specified ## role the postfix_map domain. ## ## ## ## Domain allowed to transition. ## ## ## ## ## Role allowed access. ## ## ## # interface(`postfix_run_map',` gen_require(` attribute_role postfix_map_roles; ') postfix_domtrans_map($1) roleattribute $2 postfix_map_roles; ') ######################################## ## ## Execute the master postfix program ## in the postfix_master domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`postfix_domtrans_master',` gen_require(` type postfix_master_t, postfix_master_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, postfix_master_exec_t, postfix_master_t) ') ######################################## ## ## Execute the master postfix program ## in the caller domain. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_exec_master',` gen_require(` type postfix_master_exec_t; ') corecmd_search_bin($1) can_exec($1, postfix_master_exec_t) ') ####################################### ## ## Connect to postfix master process ## using a unix domain stream socket. ## ## ## ## Domain allowed access. ## ## ## # interface(`postfix_stream_connect_master',` gen_require(` type postfix_master_t, postfix_public_t; ') stream_connect_pattern($1, postfix_public_t, postfix_public_t, postfix_master_t) ') ######################################## ## ## Execute the master postdrop in the ## postfix postdrop domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`postfix_domtrans_postdrop',` gen_require(` type postfix_postdrop_t, postfix_postdrop_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, postfix_postdrop_exec_t, postfix_postdrop_t) ') ######################################## ## ## Execute the master postqueue in the ## postfix postqueue domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`postfix_domtrans_postqueue',` gen_require(` type postfix_postqueue_t, postfix_postqueue_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, postfix_postqueue_exec_t, postfix_postqueue_t) ') ####################################### ## ## Execute postfix postqueue in ## the caller domain. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_exec_postqueue',` gen_require(` type postfix_postqueue_exec_t; ') corecmd_search_bin($1) can_exec($1, postfix_postqueue_exec_t) ') ######################################## ## ## Create postfix private sock files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_create_private_sockets',` gen_require(` type postfix_private_t; ') create_sock_files_pattern($1, postfix_private_t, postfix_private_t) ') ######################################## ## ## Create, read, write, and delete ## postfix private sock files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_manage_private_sockets',` gen_require(` type postfix_private_t; ') manage_sock_files_pattern($1, postfix_private_t, postfix_private_t) ') ######################################## ## ## Execute the smtp postfix program ## in the postfix smtp domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`postfix_domtrans_smtp',` gen_require(` type postfix_smtp_t, postfix_smtp_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, postfix_smtp_exec_t, postfix_smtp_t) ') ######################################## ## ## Get attributes of all postfix mail ## spool files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_getattr_all_spool_files',` gen_require(` attribute postfix_spool_type; ') files_search_spool($1) getattr_files_pattern($1, postfix_spool_type, postfix_spool_type) ') ######################################## ## ## Search postfix mail spool directories. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_search_spool',` gen_require(` type postfix_spool_t; ') files_search_spool($1) allow $1 postfix_spool_t:dir search_dir_perms; ') ######################################## ## ## List postfix mail spool directories. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_list_spool',` gen_require(` type postfix_spool_t; ') files_search_spool($1) allow $1 postfix_spool_t:dir list_dir_perms; ') ######################################## ## ## Read postfix mail spool files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_read_spool_files',` gen_require(` type postfix_spool_t; ') files_search_spool($1) read_files_pattern($1, postfix_spool_t, postfix_spool_t) ') ######################################## ## ## Create, read, write, and delete ## postfix mail spool files. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_manage_spool_files',` gen_require(` type postfix_spool_t; ') files_search_spool($1) manage_files_pattern($1, postfix_spool_t, postfix_spool_t) ') ######################################## ## ## Execute postfix user mail programs ## in their respective domains. ## ## ## ## Domain allowed access. ## ## # interface(`postfix_domtrans_user_mail_handler',` gen_require(` attribute postfix_user_domtrans; ') typeattribute $1 postfix_user_domtrans; ') ######################################## ## ## All of the rules required to ## administrate an postfix environment. ## ## ## ## Domain allowed access. ## ## ## ## ## Role allowed access. ## ## ## # interface(`postfix_admin',` gen_require(` attribute postfix_domain, postfix_spool_type, postfix_server_tmp_content; type postfix_initrc_exec_t, postfix_prng_t, postfix_etc_t; type postfix_data_t, postfix_runtime_t, postfix_public_t; type postfix_private_t, postfix_map_tmp_t, postfix_exec_t; type postfix_keytab_t, postfix_t; ') allow $1 postfix_domain:process { ptrace signal_perms }; ps_process_pattern($1, postfix_domain) init_startstop_service($1, $2, postfix_t, postfix_initrc_exec_t) files_search_etc($1) admin_pattern($1, { postfix_prng_t postfix_etc_t postfix_exec_t postfix_keytab_t }) files_search_spool($1) admin_pattern($1, { postfix_public_t postfix_private_t postfix_spool_type }) files_search_var_lib($1) admin_pattern($1, postfix_data_t) files_search_runtime($1) admin_pattern($1, postfix_runtime_t) files_search_tmp($1) admin_pattern($1, { postfix_server_tmp_content postfix_map_tmp_t }) postfix_exec_master($1) postfix_exec_postqueue($1) postfix_stream_connect_master($1) postfix_run_map($1, $2) ')