2 policy_module(mta, 2.0.2)
4 ########################################
9 attribute mailcontent_type;
10 attribute mta_exec_type;
11 attribute mta_user_agent;
12 attribute mailserver_delivery;
13 attribute mailserver_domain;
14 attribute mailserver_sender;
16 attribute user_mail_domain;
19 files_type(etc_aliases_t)
22 files_config_file(etc_mail_t)
25 files_mountpoint(mqueue_spool_t)
28 files_mountpoint(mail_spool_t)
31 mta_agent_executable(sendmail_exec_t)
33 mta_base_mail_template(system)
34 role system_r types system_mail_t;
36 mta_base_mail_template(user)
37 typealias user_mail_t alias { staff_mail_t sysadm_mail_t };
38 typealias user_mail_t alias { auditadm_mail_t secadm_mail_t };
39 typealias user_mail_tmp_t alias { staff_mail_tmp_t sysadm_mail_tmp_t };
40 typealias user_mail_tmp_t alias { auditadm_mail_tmp_t secadm_mail_tmp_t };
41 ubac_constrained(user_mail_t)
42 ubac_constrained(user_mail_tmp_t)
44 ########################################
46 # System mail local policy
49 # newalias required this, not sure if it is needed in 'if' file
50 allow system_mail_t self:capability { dac_override };
52 read_files_pattern(system_mail_t, etc_mail_t, etc_mail_t)
54 allow system_mail_t mta_exec_type:file entrypoint;
56 allow system_mail_t mailcontent_type:file read_file_perms;
58 kernel_read_system_state(system_mail_t)
59 kernel_read_network_state(system_mail_t)
61 dev_read_rand(system_mail_t)
62 dev_read_urand(system_mail_t)
64 init_use_script_ptys(system_mail_t)
66 userdom_use_user_terminals(system_mail_t)
67 userdom_dontaudit_search_user_home_dirs(system_mail_t)
70 apache_read_squirrelmail_data(system_mail_t)
71 apache_append_squirrelmail_data(system_mail_t)
73 # apache should set close-on-exec
74 apache_dontaudit_append_log(system_mail_t)
75 apache_dontaudit_rw_stream_sockets(system_mail_t)
76 apache_dontaudit_rw_tcp_sockets(system_mail_t)
77 apache_dontaudit_rw_sys_script_stream_sockets(system_mail_t)
81 arpwatch_manage_tmp_files(system_mail_t)
83 ifdef(`hide_broken_symptoms', `
84 arpwatch_dontaudit_rw_packet_sockets(system_mail_t)
89 cron_read_system_job_tmp_files(system_mail_t)
90 cron_dontaudit_write_pipes(system_mail_t)
94 cvs_read_data(system_mail_t)
98 logrotate_read_tmp_files(system_mail_t)
102 logwatch_read_tmp_files(system_mail_t)
106 # newaliases runs as system_mail_t when the sendmail initscript does a restart
107 milter_getattr_all_sockets(system_mail_t)
111 nagios_read_tmp_files(system_mail_t)
115 manage_dirs_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
116 manage_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
117 manage_lnk_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
118 manage_fifo_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
119 manage_sock_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
120 files_etc_filetrans(system_mail_t, etc_aliases_t, { file lnk_file sock_file fifo_file })
122 domain_use_interactive_fds(system_mail_t)
124 # postfix needs this for newaliases
125 files_getattr_tmp_dirs(system_mail_t)
127 postfix_exec_master(system_mail_t)
128 postfix_read_config(system_mail_t)
129 postfix_search_spool(system_mail_t)
131 ifdef(`distro_redhat',`
132 # compatability for old default main.cf
133 postfix_config_filetrans(system_mail_t, etc_aliases_t, { dir file lnk_file sock_file fifo_file })
137 cron_rw_tcp_sockets(system_mail_t)
142 qmail_domtrans_inject(system_mail_t)
146 sxid_read_log(system_mail_t)
150 userdom_dontaudit_use_user_ptys(system_mail_t)
153 cron_dontaudit_append_system_job_tmp_files(system_mail_t)
158 smartmon_read_tmp_files(system_mail_t)
161 # should break this up among sections:
164 # why is mail delivered to a directory of type arpwatch_data_t?
165 arpwatch_search_data(mailserver_delivery)
166 arpwatch_manage_tmp_files(mta_user_agent)
168 ifdef(`hide_broken_symptoms', `
169 arpwatch_dontaudit_rw_packet_sockets(mta_user_agent)
173 cron_read_system_job_tmp_files(mta_user_agent)
177 ########################################
179 # User send mail local policy
182 domain_use_interactive_fds(user_mail_t)
184 userdom_use_user_terminals(user_mail_t)
185 # Write to the user domain tty. cjp: why?
186 userdom_use_user_terminals(mta_user_agent)
187 # Create dead.letter in user home directories.
188 userdom_manage_user_home_content_files(user_mail_t)
189 userdom_user_home_dir_filetrans_user_home_content(user_mail_t, file)
190 # for reading .forward - maybe we need a new type for it?
191 # also for delivering mail to maildir
192 userdom_manage_user_home_content_dirs(mailserver_delivery)
193 userdom_manage_user_home_content_files(mailserver_delivery)
194 userdom_manage_user_home_content_symlinks(mailserver_delivery)
195 userdom_manage_user_home_content_pipes(mailserver_delivery)
196 userdom_manage_user_home_content_sockets(mailserver_delivery)
197 userdom_user_home_dir_filetrans_user_home_content(mailserver_delivery, { dir file lnk_file fifo_file sock_file })
198 # Read user temporary files.
199 userdom_read_user_tmp_files(user_mail_t)
200 userdom_dontaudit_append_user_tmp_files(user_mail_t)
201 # cjp: this should probably be read all user tmp
202 # files in an appropriate place for mta_user_agent
203 userdom_read_user_tmp_files(mta_user_agent)
205 tunable_policy(`use_samba_home_dirs',`
206 fs_manage_cifs_files(user_mail_t)
207 fs_manage_cifs_symlinks(user_mail_t)
211 allow user_mail_t self:capability dac_override;
213 # Read user temporary files.
214 # postfix seems to need write access if the file handle is opened read/write
215 userdom_rw_user_tmp_files(user_mail_t)
217 postfix_read_config(user_mail_t)
218 postfix_list_spool(user_mail_t)