Browse Source

SpamAssassin

Ernesto Nicolás Carrea 5 years ago
parent
commit
ee8a6ae712

+ 23 - 0
bin/module/spamassasin/exim-integration/disable.inc

@@ -0,0 +1,23 @@
+#!/bin/sh
+
+hestia_module_clamav_setup-exim() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled mta)
+    if [ ! "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "MTA module is not installed. See 'hestia module info mta'."
+        exit 1
+    fi
+
+    module_variant=$(hestia_module_getvariant mta)
+    if [ "$module_variant" != 'exim' ] && [ ! "$param_force" ]; then
+        echo "The installed MTA module is not Exim. See 'hestia module info mta'."
+        exit 1
+    fi
+
+    echo "Disabling Exim-ClamAV integration..."
+
+    /usr/bin/sed -i "/CLAMD/ s/^/#/" $OSAL_PATH_EXIM_CONF/exim4.conf.template
+
+    # FIXME: how do we rebuild exim.conf? 
+}

+ 26 - 0
bin/module/spamassasin/exim-integration/enable.inc

@@ -0,0 +1,26 @@
+#!/bin/sh
+
+hestia_module_clamav_setup-exim() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled mta)
+    if [ ! "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "MTA module is not installed. See 'hestia module info mta'."
+        exit 1
+    fi
+
+    module_variant=$(hestia_module_getvariant mta)
+    if [ "$module_variant" != 'exim' ] && [ ! "$param_force" ]; then
+        echo "The installed MTA module is not Exim. See 'hestia module info mta'."
+        exit 1
+    fi
+
+    echo "Enabling Exim-ClamAV integration..."
+
+    /usr/bin/sed -i "/CLAMD/ s/#*//" $OSAL_PATH_EXIM_CONF/exim4.conf.template
+
+    gpasswd -a clamav mail > /dev/null 2>&1
+    gpasswd -a clamav $OSAL_USER_EXIM > /dev/null 2>&1
+
+    # FIXME: how do we rebuild exim.conf? 
+}

+ 44 - 0
bin/module/spamassasin/install.inc

@@ -0,0 +1,44 @@
+#!/bin/sh
+
+hestia_module_spamassassin_install() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled antispam)
+    if [ "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "Antispam module is already installed. See 'hestia module info antispam'."
+        exit 1
+    fi
+
+    echo "Installing Antispam (SpamAssassin) module..."
+
+    osal_service_stop $OSAL_SERVICE_SPAMASSASSIN
+    hestia_config_backup 'spamassassin-install' $OSAL_PATH_SPAMASSASSIN_CONF
+
+    osal_package_preinstall
+    osal_package_install $OSAL_PKG_SPAMASSASSIN
+
+    if [ $OS_BASE = 'debian' ]; then
+        sed -i "s/ENABLED=0/ENABLED=1/" /etc/default/spamassassin
+        unit_files="$(systemctl list-unit-files |grep spamassassin)"
+        if [[ "$unit_files" =~ "disabled" ]]; then
+            systemctl enable spamassassin > /dev/null 2>&1
+        fi
+    fi
+
+    osal_service_enable $OSAL_SERVICE_SPAMASSASSIN
+    osal_service_start $OSAL_SERVICE_SPAMASSASSIN
+    check_result $? "SpamAssassin start failed"
+
+    exim_installed=$(hestia_module_variant_installed 'mta' 'exim')
+    if [ "$exim_installed" ]; then
+        hestia module spamassassin exim-integration enable
+    fi
+
+    osal_kv_write $HESTIA/conf/hestia.conf 'ANTISPAM_SYSTEM' 'spamassassin'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'installed' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'description' 'Hestia Antispam (SpamAssassin) module'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'enabled' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'variant' 'spamassassin'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'version' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'service_name' $OSAL_SERVICE_SPAMASSASSIN
+}

+ 42 - 0
bin/module/spamassasin/remove.inc

@@ -0,0 +1,42 @@
+#!/bin/sh
+
+hestia_module_clamav_remove() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled antispam)
+    if [ ! "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "Antispam module is not installed. See 'hestia module info antispam'."
+        exit 1
+    fi
+
+    module_variant=$(hestia_module_getvariant antispam)
+    if [ "$module_variant" != 'clamav' ] && [ ! "$param_force" ]; then
+        echo "The installed antispam module is not SpamAssassin. See 'hestia module info antispam'."
+        exit 1
+    fi
+
+    echo "Removing antispam (SpamAssassin) module..."
+
+    osal_service_stop $OSAL_SERVICE_SPAMASSASSIN
+    osal_service_disable $OSAL_SERVICE_SPAMASSASSIN
+
+    hestia_config_backup 'clamav-remove' $OSAL_PATH_SPAMASSASSIN_CONF
+
+    exim_installed=$(hestia_module_variant_installed 'mta' 'exim')
+    if [ "$exim_installed" ]; then
+        hestia module spamassassin exim-integration disable
+    fi
+
+    osal_package_remove $OSAL_PKG_SPAMASSASSIN
+
+    rm -rf $OSAL_PATH_SPAMASSASSIN_CONF
+
+    osal_kv_write $HESTIA/conf/hestia.conf 'ANTISPAM_SYSTEM' 'no'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'installed' '0'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'description' ''
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'enabled' '0'
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'variant' ''
+    osal_kv_write $HESTIA_CONF_MODULES/antispam.conf 'version' '0'
+
+    exit 0
+}

+ 3 - 0
func/osal_debian_based.sh

@@ -10,6 +10,7 @@ OSAL_SERVICE_APACHE=apache2
 OSAL_SERVICE_BIND=bind9
 OSAL_SERVICE_CLAMAV=clamav-daemon
 OSAL_SERVICE_CRON=cron
+OSAL_SERVICE_SPAMASSASSIN=spamassassin
 
 # Users
 OSAL_USER_APACHE_DATA=www-data
@@ -29,6 +30,7 @@ OSAL_PKG_CLAMAV=clamav-daemon
 OSAL_PKG_EXIM=exim4 exim4-daemon-heavy
 OSAL_PKG_PHPMYADMIN=phpmyadmin
 OSAL_PKG_ROUNDCUBE=roundcube
+OSAL_PKG_SPAMASSASSIN=spamassassin
 
 # Paths
 OSAL_PATH_APACHE_CONF=/etc/apache2
@@ -36,6 +38,7 @@ OSAL_PATH_BIND_DATA=/var/cache/bind
 OSAL_PATH_CLAMAV_CONF=/etc/clamav
 OSAL_PATH_EXIM_CONF=/etc/exim4
 OSAL_PATH_ROUNDCUBE_INSTALL_MYSQL=/usr/share/dbconfig-common/data/roundcubemail/install/mysql
+OSAL_PATH_SPAMASSASSIN_CONF=/etc/spamassassin
 OSAL_PATH_VSFTPD_CONF=/etc/vsftpd.conf
 
 #-------------------------------------------------------------------#

+ 3 - 0
func/osal_rhel_based.sh

@@ -10,6 +10,7 @@ OSAL_SERVICE_APACHE=httpd
 OSAL_SERVICE_BIND=named
 OSAL_SERVICE_CLAMAV=clamd
 OSAL_SERVICE_CRON=crond
+OSAL_SERVICE_SPAMASSASSIN=spamassassin
 
 # Users
 OSAL_USER_APACHE_DATA=apache
@@ -29,6 +30,7 @@ OSAL_PKG_CLAMAV=clamav clamav-update
 OSAL_PKG_EXIM=exim
 OSAL_PKG_PHPMYADMIN=phpMyAdmin
 OSAL_PKG_ROUNDCUBE=roundcubemail
+OSAL_PKG_SPAMASSASSIN=spamassassin
 
 # Paths
 OSAL_PATH_APACHE_CONF=/etc/httpd
@@ -36,6 +38,7 @@ OSAL_PATH_BIND_DATA=/var/named
 OSAL_PATH_CLAMAV_CONF=/etc/clamd.conf /etc/clamd.d
 OSAL_PATH_EXIM_CONF=/etc/exim
 OSAL_PATH_ROUNDCUBE_INSTALL_MYSQL=/usr/share/roundcubemail/SQL/mysql
+OSAL_PATH_SPAMASSASSIN_CONF=/etc/mail/spamassassin
 OSAL_PATH_VSFTPD_CONF=/etc/vsftpd
 
 #-------------------------------------------------------------------#