Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for remote MySQL server #355

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
1 change: 1 addition & 0 deletions debbuild/sqlgreywebinterface/debian/postinst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ case "$1" in
configure)
sed -i '/^$db_user/ c\$db_user = "sqlgrey";' /var/www/html/sgwi/includes/config.inc.php
sed -i "/^\$db_pass/ c\$efa_array = preg_grep('/^SQLGREYSQLPWD/', file('/etc/eFa/SQLGrey-Config'));\nforeach(\$efa_array as \$num => \$line) {\n if (\$line) {\n \$db_pass = chop(preg_replace('/^SQLGREYSQLPWD:(.*)/','\$1',\$line));\n }\n}" /var/www/html/sgwi/includes/config.inc.php
sed -i "/^\$db_hostname/ c\$efa_array = preg_grep('/^SQLGREYSQLHOST/', file('/etc/eFa/SQLGrey-Config'));\nforeach(\$efa_array as \$num => \$line) {\n if (\$line) {\n \$db_hostname = chop(preg_replace('/^SQLGREYSQLHOST:(.*)/','\$1',\$line));\n }\n}" /var/www/html/sgwi/includes/config.inc.php
;;

abort-upgrade|abort-remove|abort-deconfigure)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#
# CustomAction.pm
# Version 20210130
# Version 20230713
# +--------------------------------------------------------------------+
# Copyright (C) 2012~2022 http://www.efa-project.org
#
Expand Down Expand Up @@ -86,7 +86,6 @@ sub EFACreateToken {
my ($message) = @_;
my($dbh, $sth, $sql);
my($db_name) = 'efa';
my($db_host) = 'localhost';
my($db_user) = 'efa';
my($fh);
my($pw_config) = '/etc/eFa/eFa-Config';
Expand All @@ -98,6 +97,10 @@ sub EFACreateToken {
my($db_pass) = grep(/^EFASQLPWD/,<$fh>);
$db_pass =~ s/EFASQLPWD://;
$db_pass =~ s/\n//;
seek $fh, 0, 0;
my($db_host) = grep(/^EFASQLHOST/,<$fh>);
$db_host =~ s/EFASQLHOST://;
$db_host =~ s/\n//;
close($fh);
# Connect to the database
$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host",
Expand Down
48 changes: 48 additions & 0 deletions rpmbuild/SOURCES/eFa-4.0.5/eFa/MailWatchConf.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#
# MailWatch for MailScanner
# MailWatchConf.pm
# Version 20230714

package MailScanner::CustomConfig;

use warnings;
use strict;

# Change the values below to match the MailWatch database settings as set in conf.php
my ($db_name) = 'mailscanner';
my ($db_user) = 'mailwatch';
my ($fh);
my ($db_config) = '/etc/eFa/MailWatch-Config';
open($fh, "<", $db_config);
if(!$fh) {
MailScanner::Log::WarnLog("Unable to open %s to retrieve db settings", $db_config);
return;
}
my ($db_pass) = grep(/^MAILWATCHSQLPWD/,<$fh>);
$db_pass =~ s/MAILWATCHSQLPWD://;
$db_pass =~ s/\n//;
seek $fh, 0, 0;
my ($db_host) = grep(/^MAILWATCHSQLHOST/,<$fh>);
$db_host =~ s/MAILWATCHSQLHOST://;
$db_host =~ s/\n//;
close($fh);

# Change the value below for SQLSpamSettings.pm (default = 15)
my ($ss_refresh_time) = 15; # Time in minutes before lists are refreshed

# Change the value below for SQLBlackWhiteList.pm (default = 15)
my ($bwl_refresh_time) = 15; # Time in minutes before lists are refreshed


###############################
# don't touch below this line #
###############################

sub mailwatch_get_db_name { return $db_name };
sub mailwatch_get_db_host { return $db_host };
sub mailwatch_get_db_user { return $db_user };
sub mailwatch_get_db_password { return $db_pass };
sub mailwatch_get_BWL_refresh_time { return $bwl_refresh_time };
sub mailwatch_get_SS_refresh_time { return $ss_refresh_time };

1;
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ action="$1"
# Variables
#----------------------------------------------------------------#
BACKUPDIR="/var/eFa/backup"
MYSQLHOST="`grep MYSQLHOST /etc/eFa/MySQL-Config | sed 's/.*://'`"
MYSQLROOTPWD="`grep MYSQLROOTPWD /etc/eFa/MySQL-Config | sed 's/.*://'`"
TMPDIR="/var/eFa/backup/tmp"
DAYSTOKEEP=5
Expand Down Expand Up @@ -64,7 +65,7 @@ function start_backup()

# Perform SQL Dump
mkdir -p $WORKINGDIR/sql
mysqldump --user=root --password=$MYSQLROOTPWD --all-databases --events > $WORKINGDIR/sql/backup.sql
mysqldump --user=root --host=$MYSQLHOST --password=$MYSQLROOTPWD --all-databases --events --result-file=$WORKINGDIR/sql/backup.sql

# Backup Postfix Settings
mkdir -p $WORKINGDIR/etc/postfix/ssl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
set -e

# Database and History File Info
DBHOST='localhost'
DBHOST="`grep ^DMARCSQLHOST /etc/eFa/openDMARC-Config | sed 's/^.*://'`"
DBUSER='opendmarc'
DBPASS="`grep ^DMARCSQLPWD /etc/eFa/openDMARC-Config | sed 's/^.*://'`"
DBNAME='opendmarc'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ my($user) = $ENV{'USER'};
setlogsock('unix');

my($db_name) = 'efa';
my($db_host) = 'localhost';
my($db_user) = 'efa';
# Issue #66 Grab Passwords from eFa-Config
my($fh);
Expand All @@ -45,6 +44,10 @@ if (!$fh) {
my($db_pass) = grep(/^EFASQLPWD/,<$fh>);
$db_pass =~ s/EFASQLPWD://;
$db_pass =~ s/\n//;
seek $fh, 0, 0;
my($db_host) = grep(/^EFASQLHOST/,<$fh>);
$db_host =~ s/EFASQLHOST://;
$db_host =~ s/\n//;
close($fh);

my($sql,$sth,$dbh);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,20 @@
}
}

$efa_config = preg_grep('/^EFASQLPWD/', file('/etc/eFa/eFa-Config'));
$efa_config = preg_grep('/^EFASQL/', file('/etc/eFa/eFa-Config'));
$efa_pattern = array(
0 => '/^EFASQLPWD:(.*)/',
1 => '/^EFASQLHOST:(.*)/',
);
$tmp = array();
foreach($efa_config as $num => $line) {
if ($line) {
$db_pass_tmp = chop(preg_replace('/^EFASQLPWD:(.*)/','$1', $line));
$tmp[] = chop(preg_replace($efa_pattern, '$1', $line));
}
}
$efadb = new mysqli('localhost', 'efa', $db_pass_tmp, 'efa');
$db_pass_tmp = $tmp[0];
$db_host_tmp = $tmp[1];
$efadb = new mysqli($db_host_tmp, 'efa', $db_pass_tmp, 'efa');
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$sql = "SELECT id,token FROM tokens WHERE mid = '$mid'";
$result = $efadb->query($sql);
Expand Down Expand Up @@ -402,4 +409,4 @@ function gmp_convert($num, $base_a, $base_b)
function expandIPv6($ip) {
$hex = bin2hex(inet_pton($ip));
return implode(':', str_split($hex, 4));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,20 @@
header('Location: login.php?error=pagetimeout');
die();
}
$efa_config = preg_grep('/^EFASQLPWD/', file('/etc/eFa/eFa-Config'));
$efa_config = preg_grep('/^EFASQL/', file('/etc/eFa/eFa-Config'));
$efa_pattern = array(
0 => '/^EFASQLPWD:(.*)/',
1 => '/^EFASQLHOST:(.*)/',
);
$tmp = array();
foreach($efa_config as $num => $line) {
if ($line) {
$db_pass_tmp = chop(preg_replace('/^EFASQLPWD:(.*)/','$1', $line));
$tmp[] = chop(preg_replace($efa_pattern, '$1', $line));
}
}
$efadb = new mysqli('localhost', 'efa', $db_pass_tmp, 'efa');
$db_pass_tmp = $tmp[0];
$db_host_tmp = $tmp[1];
$efadb = new mysqli($db_host_tmp, 'efa', $db_pass_tmp, 'efa');
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$sql = "SELECT id,token FROM tokens WHERE mid = '$mid'";
$result = $efadb->query($sql);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,15 @@ func_peruser(){
while [ $FLAG2 != "0" ]; do
if [[ "$SPAMSCORE" =~ ^[1-9]|[1-9][0-9]|100$ ]]; then
MAILWATCHPW=`grep MAILWATCHSQLPWD /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -p"$MAILWATCHPW" mailscanner -e "ALTER TABLE \`users\` ALTER COLUMN \`spamscore\` SET DEFAULT '$SPAMSCORE';"
MAILWATCHHOST=`grep MAILWATCHSQLHOST /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -h "$MAILWATCHHOST" -p"$MAILWATCHPW" mailscanner -e "ALTER TABLE \`users\` ALTER COLUMN \`spamscore\` SET DEFAULT '$SPAMSCORE';"
MAILWATCHPW=''
sed -i "/^Required SpamAssassin Score =/ c\Required SpamAssassin Score = &SQLSpamScores" /etc/MailScanner/MailScanner.conf
FLAG2=0
elif [[ -z "$SPAMSCORE" ]]; then
MAILWATCHPW=`grep MAILWATCHSQLPWD /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -p"$MAILWATCHPW" mailscanner -e 'ALTER TABLE `users` ALTER COLUMN `spamscore` SET DEFAULT '4';'
MAILWATCHHOST=`grep MAILWATCHSQLHOST /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -h "$MAILWATCHHOST" -p"$MAILWATCHPW" mailscanner -e 'ALTER TABLE `users` ALTER COLUMN `spamscore` SET DEFAULT '4';'
MAILWATCHPW=''
sed -i "/^Required SpamAssassin Score =/ c\Required SpamAssassin Score = &SQLSpamScores" /etc/MailScanner/MailScanner.conf
FLAG2=0
Expand All @@ -112,13 +114,15 @@ func_peruser(){
while [ $FLAG3 != "0" ]; do
if [[ "$HIGHSPAMSCORE" =~ ^[1-9]|[1-9][0-9]|100$ ]]; then
MAILWATCHPW=`grep MAILWATCHSQLPWD /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -p"$MAILWATCHPW" mailscanner -e "ALTER TABLE \`users\` ALTER COLUMN \`highspamscore\` SET DEFAULT '$HIGHSPAMSCORE';"
MAILWATCHHOST=`grep MAILWATCHSQLHOST /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -h "$MAILWATCHHOST" -p"$MAILWATCHPW" mailscanner -e "ALTER TABLE \`users\` ALTER COLUMN \`highspamscore\` SET DEFAULT '$HIGHSPAMSCORE';"
MAILWATCHPW=''
sed -i "/^High SpamAssassin Score =/ c\High SpamAssassin Score = &SQLHighSpamScores" /etc/MailScanner/MailScanner.conf
FLAG3=0
elif [[ -z "$SPAMSCORE" ]]; then
MAILWATCHPW=`grep MAILWATCHSQLPWD /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -p"$MAILWATCHPW" mailscanner -e 'ALTER TABLE `users` ALTER COLUMN `highspamscore` SET DEFAULT '7';'
MAILWATCHHOST=`grep MAILWATCHSQLHOST /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
/usr/bin/mysql -u mailwatch -h "$MAILWATCHHOST" -p"$MAILWATCHPW" mailscanner -e 'ALTER TABLE `users` ALTER COLUMN `highspamscore` SET DEFAULT '7';'
MAILWATCHPW=''
sed -i "/^High SpamAssassin Score =/ c\High SpamAssassin Score = &SQLHighSpamScores" /etc/MailScanner/MailScanner.conf
FLAG3=0
Expand Down Expand Up @@ -150,4 +154,4 @@ func_peruser(){
done
fi
}
# +---------------------------------------------------+
# +---------------------------------------------------+
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ func_resetadmin() {
echo -e "$green[eFa]$clean if it exists and give you the option to reset the password."
echo -e ""

ADMINUSER=$(/usr/bin/mysql -s -N -u mailwatch -p`cat /etc/eFa/MailWatch-Config | grep MAILWATCHSQLPWD | sed 's/.*://'` mailscanner -e "select username from users where type = 'A' limit 1")
MAILWATCHPW=`grep MAILWATCHSQLPWD /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`
MAILWATCHHOST=`grep MAILWATCHSQLHOST /etc/eFa/MailWatch-Config | awk -F':' '{print $2}'`

ADMINUSER=$(/usr/bin/mysql -s -N -u mailwatch -h $MAILWATCHHOST -p"$MAILWATCHPW" mailscanner -e "select username from users where type = 'A' limit 1")

# What if there isn't an admin account?
if [[ -z $ADMINUSER ]]; then
Expand All @@ -24,10 +27,10 @@ func_resetadmin() {

if [[ $ADMINUSER =~ ^[A-Za-z0-9]+$ ]]; then
# Check for an existing user
CHECKDUPE=$(/usr/bin/mysql -s -N -u mailwatch -p`cat /etc/eFa/MailWatch-Config | grep MAILWATCHSQLPWD | sed 's/.*://'` mailscanner -e "select username from users where username = '$ADMINUSER'")
CHECKDUPE=$(/usr/bin/mysql -s -N -u mailwatch -h $MAILWATCHHOST -p"$MAILWATCHPW" mailscanner -e "select username from users where username = '$ADMINUSER'")
if [[ -z $CHECKDUPE ]]; then
# Create account
/usr/bin/mysql -u mailwatch -p`cat /etc/eFa/MailWatch-Config | grep MAILWATCHSQLPWD | sed 's/.*://'` mailscanner -e "INSERT into users (username,fullname,type) VALUES('$ADMINUSER','$ADMINUSER','A')"
/usr/bin/mysql -u mailwatch -h $MAILWATCHHOST -p"$MAILWATCHPW" mailscanner -e "INSERT into users (username,fullname,type) VALUES('$ADMINUSER','$ADMINUSER','A')"
if [[ $? -ne 0 ]]; then
echo -e "$red[ERROR]$cleanError creating new user, exiting..."
pause
Expand All @@ -42,7 +45,7 @@ func_resetadmin() {
read YESNO
if [[ $YESNO =~ ^[Yy]$ || -z $YESNO ]]; then
# Promote user
/usr/bin/mysql -u mailwatch -p`cat /etc/eFa/MailWatch-Config | grep MAILWATCHSQLPWD | sed 's/.*://'` mailscanner -e "UPDATE users SET type = 'A' WHERE username='$ADMINUSER'"
/usr/bin/mysql -u mailwatch -h $MAILWATCHHOST -p"$MAILWATCHPW" mailscanner -e "UPDATE users SET type = 'A' WHERE username='$ADMINUSER'"
if [[ $? -ne 0 ]]; then
echo -e "$red[ERROR]$cleanError promoting new user, exiting..."
pause
Expand Down Expand Up @@ -95,7 +98,7 @@ func_resetadmin() {

NEWPASS1=$(echo $NEWPASS1 | sed -e "s/'/''/g")

/usr/bin/mysql -u mailwatch -p`cat /etc/eFa/MailWatch-Config | grep MAILWATCHSQLPWD | sed 's/.*://'` mailscanner -e "UPDATE users SET password = md5('$NEWPASS1') WHERE username='$ADMINUSER'"
/usr/bin/mysql -u mailwatch -h $MAILWATCHHOST -p"$MAILWATCHPW" mailscanner -e "UPDATE users SET password = md5('$NEWPASS1') WHERE username='$ADMINUSER'"

if [[ $? -ne 0 ]]; then
echo -e "$red[ERROR]$cleanError resetting mailwatch password!"
Expand All @@ -111,4 +114,4 @@ func_resetadmin() {
pause

}
# +---------------------------------------------------+
# +---------------------------------------------------+
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,12 @@ func_setipsettings(){

# Issue 195 -- Update MySQL database hostname fields
MAILWATCHPWD=$(grep "^MAILWATCHSQLPWD" /etc/eFa/MailWatch-Config | sed 's/^.*://')
MAILWATCHHOST=$(grep "^MAILWATCHSQLHOST" /etc/eFa/MailWatch-Config | sed 's/^.*://')

systemctl stop msmilter
systemctl stop mailscanner

mysql -u mailwatch --password=$MAILWATCHPWD mailscanner -e "\
mysql -u mailwatch -h $MAILWATCHHOST --password=$MAILWATCHPWD mailscanner -e "\
LOCK TABLES maillog WRITE; \
ALTER TABLE maillog MODIFY COLUMN \`last_update\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP; \
UPDATE maillog SET hostname='$HOSTNAME.$DOMAINNAME' WHERE hostname='$OLDHOSTNAME.$OLDDOMAINNAME'; \
Expand All @@ -152,7 +153,7 @@ func_setipsettings(){
sed -i "/^ServerName\s/ c\ServerName $HOSTNAME.$DOMAINNAME:443" /etc/httpd/conf.d/ssl.conf

# Issue #155 Change domainname in opendmarc reports
DBHOST='localhost'
DBHOST="`grep ^DMARCSQLHOST /etc/eFa/openDMARC-Config | sed 's/^.*://'`"
DBUSER='opendmarc'
DBPASS="`grep ^DMARCSQLPWD /etc/eFa/openDMARC-Config | sed 's/^.*://'`"
DBNAME='opendmarc'
Expand All @@ -178,4 +179,4 @@ func_setipsettings(){
echo -e "All done"
pause
}
# +---------------------------------------------------+
# +---------------------------------------------------+
85 changes: 85 additions & 0 deletions rpmbuild/SOURCES/eFa-4.0.5/updates/update-4.0.5.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/bin/sh
#-----------------------------------------------------------------------------#
# eFa 4.0.5-x cumulative updates script
#-----------------------------------------------------------------------------#
# Copyright (C) 2013~2023 https://efa-project.org
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#-----------------------------------------------------------------------------#
instancetype=$(/sbin/virt-what)
centosver=$(cat /etc/centos-release | awk -F'[^0-9]*' '{print $2}')

retval=0

function execcmd()
{
eval $cmd && [[ $? -ne 0 ]] && echo "$cmd" && retval=1
}

# +---------------------------------------------------+

# make eFa able to connect to remote database other than localhost
# localhost becomes the default
if [[ -z $(grep ^EFASQLHOST /etc/eFa/eFa-Config) ]]; then
echo "EFASQLHOST:localhost" >> /etc/eFa/eFa-Config
fi

if [[ -z $(grep ^MYSQLHOST /etc/eFa/MySQL-Config) ]]; then
echo "MYSQLHOST:localhost" >> /etc/eFa/MySQL-Config
fi

if [[ -z $(grep ^MAILWATCHSQLHOST /etc/eFa/MailWatch-Config) ]]; then
echo "MAILWATCHSQLHOST:localhost" >> /etc/eFa/MailWatch-Config
fi

if [[ -z $(grep ^SQLGREYSQLHOST /etc/eFa/SQLGrey-Config) ]]; then
echo "SQLGREYSQLHOST:localhost" >> /etc/eFa/SQLGrey-Config
echo "# if you change localhost, also update /etc/sqlgrey/sqlgrey.conf by hand" >> /etc/eFa/SQLGrey-Config
fi

if [[ -z $(grep ^SAUSERSQLHOST /etc/eFa/SA-Config) ]]; then
echo "SAUSERSQLHOST:localhost" >> /etc/eFa/SA-Config
echo "# if you change localhost, also update /etc/mail/spamassassin/mailscanner.cf by hand" >> /etc/eFa/SA-Config
fi

if [[ -z $(grep ^DMARCSQLHOST /etc/eFa/openDMARC-Config) ]]; then
echo "DMARCSQLHOST:localhost" >> /etc/eFa/openDMARC-Config
fi

# Refresh CustomAction.pm
if [[ -f /var/eFa/backup/CustomAction.pm.old ]]; then
rm -f /var/eFa/backup/CustomAction.pm.old
fi
if [[ -f /var/eFa/backup/CustomAction.pm ]]; then
mv /var/eFa/backup/CustomAction.pm /var/eFa/backup/CustomAction.pm.old
fi
mv /usr/share/MailScanner/perl/custom/CustomAction.pm /var/eFa/backup/CustomAction.pm
cp /var/eFa/lib/token/CustomAction.pm /usr/share/MailScanner/perl/custom/CustomAction.pm

# Refresh MailWatchConf.pm
if [[ -f /var/eFa/backup/MailWatchConf.pm.old ]]; then
rm -f /var/eFa/backup/MailWatchConf.pm.old
fi
if [[ -f /var/eFa/backup/MailWatchConf.pm ]]; then
mv /var/eFa/backup/MailWatchConf.pm /var/eFa/backup/MailWatchConf.pm.old
fi
mv /usr/share/MailScanner/perl/custom/MailWatchConf.pm /var/eFa/backup/MailWatchConf.pm
cp /var/eFa/lib/token/MailWatchConf.pm /usr/share/MailScanner/perl/custom/MailWatchConf.pm

# Update DB_HOST in conf.php to read from /etc/eFa/MailWatch-Config
if [[ -z $(grep -w MAILWATCHSQLHOST /var/www/html/mailscanner/conf.php) ]]; then
sed -i "/^define('DB_HOST'/ c\$efa_config = preg_grep('\/^MAILWATCHSQLHOST\/', file('\/etc\/eFa/MailWatch-Config'));\nforeach(\$efa_config as \$num => \$line) {\n if (\$line) {\n \$db_host_tmp = chop(preg_replace('\/^MAILWATCHSQLHOST:(.*)\/','\$1', \$line));\n }\n}\ndefine('DB_HOST', \$db_host_tmp);" /var/www/html/mailscanner/conf.php
fi

exit $retval
Loading