aboutsummaryrefslogtreecommitdiffstats
path: root/packages/clamsmtp.inc
diff options
context:
space:
mode:
Diffstat (limited to 'packages/clamsmtp.inc')
-rw-r--r--packages/clamsmtp.inc54
1 files changed, 54 insertions, 0 deletions
diff --git a/packages/clamsmtp.inc b/packages/clamsmtp.inc
new file mode 100644
index 00000000..08d9e23b
--- /dev/null
+++ b/packages/clamsmtp.inc
@@ -0,0 +1,54 @@
+<?php
+require_once('globals.inc');
+require_once('config.inc');
+require_once('service-utils.inc');
+require_once('filter.inc');
+
+function clamsmtp_install_command() {
+ global $g;
+
+ $clamav_rundir = "{$g['varrun_path']}/clamav";
+ $pidfile = "$clamav_rundir/clamsmtpd.pid";
+ $rcfile = array();
+ $rcfile['file'] = 'clamsmtp.sh';
+ $rcfile['start'] = "mkdir -p $clamav_rundir\n\tchown proxy:proxy $clamav_rundir\n\tclamsmtpd";
+ $rcfile['stop'] = "kill `cat $pidfile`";
+ write_rcfile($rcfile);
+
+ clamsmtp_resync();
+}
+
+function clamsmtp_validate_input($post, $input_errors) {
+ if (!is_ipaddr(trim($post['smtp_server'])))
+ $input_errors[] = 'The field \'SMTP server\' must contain a valid IP address.';
+ $port = trim($post['smtp_port']);
+ if (!is_numeric($port) || ($port < 0) || ($port > 65535))
+ $input_errors[] = 'The field \'SMTP server\' must contain a port ranging from 0 to 65535';
+}
+
+function clamsmtp_resync() {
+ global $g, $config;
+
+ $avconf = $config['installedpackages']['clamav']['config'][0];
+ if ($avconf['scan_smtp'] == 'on')
+ $outaddress = "{$avconf['smtp_server']}:{$avconf['smtp_port']}";
+ else
+ $outaddress = '127.0.0.1:25';
+ $clamav_rundir = "{$g['varrun_path']}/clamav";
+ $clamsocket = "$clamav_rundir/clamd.socket";
+ $pidfile = "$clamav_rundir/clamsmtpd.pid";
+ $conf = <<<EOD
+Listen: 127.0.0.1:10025
+OutAddress: $outaddress
+ClamAddress: $clamsocket
+User: proxy
+PidFile: $pidfile
+
+EOD;
+
+ file_put_contents('/usr/local/etc/clamsmtpd.conf', $conf);
+
+ restart_service('clamsmtp');
+ filter_configure();
+}
+?>