diff --git a/dspam.fc b/dspam.fc
new file mode 100644
index 0000000..5eddac5
--- /dev/null
+++ b/dspam.fc
@@ -0,0 +1,12 @@
+/etc/rc\.d/init\.d/dspam -- gen_context(system_u:object_r:dspam_initrc_exec_t,s0)
+
+/usr/bin/dspam -- gen_context(system_u:object_r:dspam_exec_t,s0)
+
+/usr/share/dspam-web/dspam\.cgi -- gen_context(system_u:object_r:httpd_dspam_script_exec_t,s0)
+
+/var/lib/dspam(/.*)? gen_context(system_u:object_r:dspam_var_lib_t,s0)
+/var/lib/dspam/data(/.*)? gen_context(system_u:object_r:httpd_dspam_rw_content_t,s0)
+
+/var/log/dspam(/.*)? gen_context(system_u:object_r:dspam_log_t,s0)
+
+/var/run/dspam(/.*)? gen_context(system_u:object_r:dspam_var_run_t,s0)
diff --git a/dspam.if b/dspam.if
new file mode 100644
index 0000000..9f7cdee
--- /dev/null
+++ b/dspam.if
@@ -0,0 +1,42 @@
+## Content-based spam filter designed for multi-user enterprise systems.
+
+########################################
+##
+## All of the rules required to
+## administrate an dspam environment.
+##
+##
+##
+## Domain allowed access.
+##
+##
+##
+##
+## Role allowed access.
+##
+##
+##
+#
+interface(`dspam_admin',`
+ gen_require(`
+ type dspam_t, dspam_initrc_exec_t, dspam_log_t;
+ type dspam_var_lib_t, dspam_var_run_t;
+ ')
+
+ allow $1 dspam_t:process { ptrace signal_perms };
+ ps_process_pattern($1, dspam_t)
+
+ init_labeled_script_domtrans($1, dspam_initrc_exec_t)
+ domain_system_change_exemption($1)
+ role_transition $2 dspam_initrc_exec_t system_r;
+ allow $2 system_r;
+
+ logging_search_logs($1)
+ admin_pattern($1, dspam_log_t)
+
+ files_search_var_lib($1)
+ admin_pattern($1, dspam_var_lib_t)
+
+ files_search_pids($1)
+ admin_pattern($1, dspam_var_run_t)
+')
diff --git a/dspam.te b/dspam.te
new file mode 100644
index 0000000..3354d71
--- /dev/null
+++ b/dspam.te
@@ -0,0 +1,78 @@
+policy_module(dspam, 1.0.0)
+
+########################################
+#
+# Declarations
+#
+
+type dspam_t;
+type dspam_exec_t;
+init_daemon_domain(dspam_t, dspam_exec_t)
+
+type dspam_initrc_exec_t;
+init_script_file(dspam_initrc_exec_t)
+
+type dspam_log_t;
+logging_log_file(dspam_log_t)
+
+type dspam_var_lib_t;
+files_type(dspam_var_lib_t)
+
+type dspam_var_run_t;
+files_pid_file(dspam_var_run_t)
+
+########################################
+#
+# Local policy
+#
+
+allow dspam_t self:capability net_admin;
+allow dspam_t self:process signal;
+allow dspam_t self:fifo_file rw_fifo_file_perms;
+allow dspam_t self:unix_stream_socket { accept listen };
+
+manage_dirs_pattern(dspam_t, dspam_log_t, dspam_log_t)
+append_files_pattern(dspam_t, dspam_log_t, dspam_log_t)
+create_files_pattern(dspam_t, dspam_log_t, dspam_log_t)
+setattr_files_pattern(dspam_t, dspam_log_t, dspam_log_t)
+logging_log_filetrans(dspam_t, dspam_log_t, dir)
+
+manage_dirs_pattern(dspam_t, dspam_var_lib_t, dspam_var_lib_t)
+manage_files_pattern(dspam_t, dspam_var_lib_t, dspam_var_lib_t)
+files_var_lib_filetrans(dspam_t, dspam_var_lib_t, dir)
+
+manage_dirs_pattern(dspam_t, dspam_var_run_t, dspam_var_run_t)
+manage_files_pattern(dspam_t, dspam_var_run_t, dspam_var_run_t)
+files_pid_filetrans(dspam_t, dspam_var_run_t, dir)
+
+corenet_all_recvfrom_unlabeled(dspam_t)
+corenet_all_recvfrom_netlabel(dspam_t)
+corenet_tcp_sendrecv_generic_if(dspam_t)
+corenet_tcp_sendrecv_generic_node(dspam_t)
+corenet_tcp_sendrecv_all_ports(dspam_t)
+corenet_tcp_bind_generic_node(dspam_t)
+
+auth_use_nsswitch(dspam_t)
+
+logging_send_syslog_msg(dspam_t)
+
+miscfiles_read_localization(dspam_t)
+
+optional_policy(`
+ apache_content_template(dspam)
+
+ list_dirs_pattern(dspam_t, httpd_dspam_content_t, httpd_dspam_content_t)
+ manage_dirs_pattern(dspam_t, httpd_dspam_rw_content_t, httpd_dspam_rw_content_t)
+ manage_files_pattern(dspam_t, httpd_dspam_rw_content_t, httpd_dspam_rw_content_t)
+')
+
+optional_policy(`
+ mysql_search_db(dspam_t)
+ mysql_stream_connect(dspam_t)
+ mysql_tcp_connect(dspam_t)
+')
+
+optional_policy(`
+ postgresql_stream_connect(dspam_t)
+ postgresql_tcp_connect(dspam_t)
+')