|
|
1ec3d1a |
## <summary>Milter mail filters</summary>
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
########################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Create a set of derived types for various
|
|
|
1ec3d1a |
## mail filter applications using the milter interface.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="milter_name">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## The name to be used for deriving type names.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
template(`milter_template',`
|
|
|
1ec3d1a |
# attributes common to all milters
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
attribute milter_data_type, milter_domains;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
type $1_milter_t, milter_domains;
|
|
|
1ec3d1a |
type $1_milter_exec_t;
|
|
|
1ec3d1a |
init_daemon_domain($1_milter_t, $1_milter_exec_t)
|
|
|
1ec3d1a |
role system_r types $1_milter_t;
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
# Type for the milter data (e.g. the socket used to communicate with the MTA)
|
|
|
1ec3d1a |
type $1_milter_data_t, milter_data_type;
|
|
|
1ec3d1a |
files_pid_file($1_milter_data_t)
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
# Allow communication with MTA over a unix-domain socket
|
|
|
1ec3d1a |
# Note: usage with TCP sockets requires additional policy
|
|
Chris PeBenito |
9401ae1 |
|
|
Chris PeBenito |
9401ae1 |
allow $1_milter_t self:fifo_file rw_fifo_file_perms;
|
|
|
bde701d |
|
|
|
86184cf |
# Allow communication with MTA over a TCP socket
|
|
Chris PeBenito |
df863be |
allow $1_milter_t self:tcp_socket create_stream_socket_perms;
|
|
|
86184cf |
|
|
Chris PeBenito |
9401ae1 |
# Allow communication with MTA over a unix-domain socket
|
|
|
1ec3d1a |
manage_sock_files_pattern($1_milter_t, $1_milter_data_t, $1_milter_data_t)
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
# Create other data files and directories in the data directory
|
|
|
1ec3d1a |
manage_files_pattern($1_milter_t, $1_milter_data_t, $1_milter_data_t)
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
kernel_dontaudit_read_system_state($1_milter_t)
|
|
|
bde701d |
|
|
Chris PeBenito |
df863be |
corenet_tcp_bind_generic_node($1_milter_t)
|
|
Chris PeBenito |
df863be |
corenet_tcp_bind_milter_port($1_milter_t)
|
|
Chris PeBenito |
df863be |
|
|
Chris PeBenito |
9401ae1 |
files_read_etc_files($1_milter_t)
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
logging_send_syslog_msg($1_milter_t)
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
########################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## MTA communication with milter sockets
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="domain">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Domain allowed access.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
interface(`milter_stream_connect_all',`
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
attribute milter_data_type, milter_domains;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
files_search_pids($1)
|
|
Chris PeBenito |
9401ae1 |
getattr_dirs_pattern($1, milter_data_type, milter_data_type)
|
|
|
1ec3d1a |
stream_connect_pattern($1, milter_data_type, milter_data_type, milter_domains)
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
########################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Allow getattr of milter sockets
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="domain">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Domain allowed access.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
interface(`milter_getattr_all_sockets',`
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
attribute milter_data_type;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
Chris PeBenito |
9401ae1 |
getattr_dirs_pattern($1, milter_data_type, milter_data_type)
|
|
|
1ec3d1a |
getattr_sock_files_pattern($1, milter_data_type, milter_data_type)
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
########################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Allow setattr of milter dirs
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="domain">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Domain allowed access.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
interface(`milter_setattr_all_dirs',`
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
attribute milter_data_type;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
setattr_dirs_pattern($1, milter_data_type, milter_data_type)
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
########################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Manage spamassassin milter state
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="domain">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Domain allowed access.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
interface(`milter_manage_spamass_state',`
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
type spamass_milter_state_t;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
files_search_var_lib($1)
|
|
|
1ec3d1a |
manage_files_pattern($1, spamass_milter_state_t, spamass_milter_state_t)
|
|
|
1ec3d1a |
manage_dirs_pattern($1, spamass_milter_state_t, spamass_milter_state_t)
|
|
|
1ec3d1a |
manage_lnk_files_pattern($1, spamass_milter_state_t, spamass_milter_state_t)
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
#######################################
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Delete dkim-milter PID files.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## <param name="domain">
|
|
|
1ec3d1a |
## <summary>
|
|
|
1ec3d1a |
## Domain allowed access.
|
|
|
1ec3d1a |
## </summary>
|
|
|
1ec3d1a |
## </param>
|
|
|
1ec3d1a |
#
|
|
|
1ec3d1a |
interface(`milter_delete_dkim_pid_files',`
|
|
|
1ec3d1a |
gen_require(`
|
|
|
1ec3d1a |
type dkim_milter_data_t;
|
|
|
1ec3d1a |
')
|
|
|
1ec3d1a |
|
|
|
1ec3d1a |
files_search_pids($1)
|
|
|
1ec3d1a |
delete_files_pattern($1, dkim_milter_data_t, dkim_milter_data_t)
|
|
|
1ec3d1a |
')
|