How To : Install Vaderetro

  Email

Firstly, we need to add vaderetro repo manually.


vim /etc/yum.repos.d/vadesecure.repo

For CentOS 6


[vadesecure]
name=Vade Secure repository
baseurl=http://repo.vadesecure.com/rpm/vadesecure/centos6/$basearch/
failovermethod=priority
gpgcheck=0

For CentOS 7


[vadesecure]
name=Vade Secure repository
baseurl=http://repo.vadesecure.com/rpm/vadesecure/centos7/$basearch/
failovermethod=priority
gpgcheck=0

Install the following components that required by vaderetro.


yum install vaderetro-common vaderetro-spamd perl-Sys-Syslog -y

Create the following directory and update the license


mkdir -p /etc/vaderetro/blacklist
mkdir -p /etc/vaderetro/license
echo 'LZEH55BU' > /etc/vaderetro/license/key

Update the vrspamd engine


/usr/bin/vaderetro-update.pl

Make a correction on the symbolic link of vaderetro library


cd /var/vaderetro
ln -s libvaderetro.so.01.399.00 libvaderetro.so


[root@localhost vaderetro]# ls -al
total 3800
drwxr-xr-x. 3 root root 76 Oct 5 22:47 .
drwxr-xr-x. 23 root root 4096 Oct 5 22:43 ..
lrwxrwxrwx. 1 root root 25 Oct 5 22:47 libvaderetro.so -> libvaderetro.so.01.399.00
-rw-r--r--. 1 root root 3879983 Oct 5 22:43 libvaderetro.so.01.399.00
drwxr-xr-x. 2 root root 4096 Oct 5 22:44 patchs


vrspamd --debug


>vrspamd 1.50 (Sep 19 2016,09:24:00) daemon start

>SERVER_BIND_ADDR="0.0.0.0"
>SERVER_BIND_PORT="783"
>SERVER_MAX_SESSIONS="64"
>SERVER_TIMEOUT_SECONDS="30"
>SPAMD_VERSION="1.1"
>SPAM_SUBJECT_PREFIX=""***SPAM***""
>SPAM_SUBJECT_PREFIX_ENABLED="yes"
>CE_SUBJECT_PREFIX=""***ADS***";"
>CE_SUBJECT_PREFIX_ENABLED="no"
>SET_SPAM_FLAG_FOR_CE="no"
>SPAM_STATE_STRINGIFY="no"
>LISTUNSUBSCRIBE_HEADER_NAME="X-List-Unsubscribe"
>INCLUDE_UNSUBSCRIBE_IN_REPORT="no"
>SCAN_THREAD_COUNT="64"
>SCAN_THREAD_HARD_DISPATCH="no"
>LOG_FACILITY="2"
>LOG_SCAN_FACILITY="2"
>LOG_SCAN_DETAILS="2"
>VR_SPAM_OPTION_CHECK_VIRUS="yes"
>VR_SPAM_OPTION_CHECK_DELIVERY="yes"
>VR_SPAM_OPTION_ALLOW_RUSSIAN="yes"
>VR_SPAM_OPTION_ALLOW_CJK="yes"
>VR_SPAM_OPTION_FORBID_LATIN="no"
>VR_SPAM_OPTION_FAST_STOP_SCORE="300"
>VR_SPAM_OPTION_FULL_CHECK="no"
>VR_SPAM_OPTION_CHECK_COMMERCIAL="yes"
>VR_SPAM_OPTION_CHECK_SUSPECT="no"
>VR_SPAM_OPTION_CHECK_SOCIALNETWORK="yes"
>WATCHDOG_THREAD_ENABLED="no"
>WATCHDOG_THREAD_MAX_OVERLOAD_SECONDS="10"
>WATCHDOG_THREAD_WAKEUP_SIGNAL="10"
>WATCHDOG_LAUNCH_COUNT="5"
>WATCHDOG_SUCCESS_SECONDS="20"
>WATCHDOG_KILL_SECONDS="20"
>WATCHDOG_ON_EVENT=""
>SPAM_STORAGE_PATH=""
>STATISTICS_ENABLED="no"
>STATISTICS_MINUTES="5"
>STATISTICS_PATH="/var/vaderetro/statistics/"
>STATISTICS_KEEP_DAYS="8"
>starting...

>create scan queue
>vaderetro engine created
>module, create speedup context (workdir = /var/vaderetro/patchs)
>module, speedup context created()
>/var/vaderetro/libvaderetro.so version Vade Retro 01.399.91#75 AS+AV+AP+RT Profile: ; Bailout: 300 loaded
>items: 400 (838400 bytes)
>scan queue, loading vaderetro module
>update thread started
>start cmd server
>items: 64 (801792 bytes)
>start,bind address = 0.0.0.0:783
>start,bind() failed (98)
>cmd server start failed
>deleting vaderetro engine
>stopping update thread
>update thread stopped
>release context for version Vade Retro 01.399.91#75 AS+AV+AP+RT Profile: ; Bailout: 300
>unload version Vade Retro 01.399.91#75 AS+AV+AP+RT Profile: ; Bailout: 300
>stopping...

>stopped


vi /etc/vaderetro/vrspamd.conf


#
# vrspamd.conf
#
# VadeRetro spamd daemon conf-file
# Vade Retro Technology 2014
#
# version >= 1.4
#
#------------------------------------------------
# SERVER
#------------------------------------------------
# any
SERVER_BIND_ADDR=127.0.0.1

# set absolute path
#SERVER_BIND_ADDR=/var/run/vrspamd_localsocket

# listening port(default is 783)
SERVER_BIND_PORT=783

# reply status with "like" spamd version, if omited, return 1.1
#SPAMD_VERSION=1.1

# thread pool
# number of threads (max=128), set 0 to run without thread.
SCAN_THREAD_COUNT = 4

#------------------------------------------------
# LOGGING
#------------------------------------------------

#+0.93:log scan result(default=2)
# 0 = do not log scan result
# 1 = only score & status
# 2 = score,status and cause while virus found
# 3 = all
#LOG_SCAN_DETAILS=1

#[LOG]
# syslog facility (default : LOG_LOCAL0) for daemon events
LOG_FACILITY=3

# syslog facility (default : LOG_LOCAL0) for vrscan/vrscans results
LOG_SCAN_FACILITY=2

#------------------------------------------------
# VADERETRO
#------------------------------------------------

# engines directory
VR_ENGINES_PATH=/var/vaderetro

# incremental file directory
VR_PATCHS_PATH=/var/vaderetro/patchs

# force virus analysis for vrscans command (default=0)
VR_SPAM_OPTION_CHECK_VIRUS=1

# check for SMTP non-delivery notifications (default=0), with spamstate = 3000
VR_SPAM_OPTION_CHECK_DELIVERY= 1

# do not call dogs in for Cyrillic (default=0)
VR_SPAM_OPTION_ALLOW_RUSSIAN=1

# do not call dogs in for Chinese/Japanese/Korean scripts, either code -paged or Unicode (default=0)
VR_SPAM_OPTION_ALLOW_CJK=1

# e.g. if *all* legit e-mail you get is in Russian or Japanese (default=0)
#VR_SPAM_OPTION_FORBID_LATIN=0

# allow ads detection
VR_SPAM_OPTION_CHECK_COMMERCIAL=1

# allow supect
VR_SPAM_OPTION_CHECK_SUSPECT=0

# allow social network
VR_SPAM_OPTION_CHECK_SOCIALNETWORK=1

# full scoring (for test only)
VR_SPAM_OPTION_FULL_CHECK=0

# fast stop score
VR_SPAM_OPTION_FAST_STOP_SCORE = 400

# BU profil
VR_SPAM_PROFILE=VRUnsubscribe

#------------------------------------------------
# POLICY
#------------------------------------------------

# insert prefix in subject if spam (default=***SPAM***)
SPAM_SUBJECT_PREFIX="[[SPAM]]

# disable prefix (default=yes)
SPAM_SUBJECT_PREFIX_ENABLED="yes"

# insert prefix in subject if ce (default=***Pub***)
CE_SUBJECT_PREFIX="[[SPAM]];

# disable prefix (default=yes)
CE_SUBJECT_PREFIX_ENABLED=no

# return PCE/MCE as a SPAM ( Spam: yes), for test only
SET_SPAM_FLAG_FOR_CE=no

# comment to not insert this header
LISTUNSUBSCRIBE_HEADER_NAME=X-List-Unsubscribe


vi /etc/exim.pl


sub ips1_spam_check {

use POSIX qw/strftime/;

my $mid = Exim::expand_string('$message_id');
my $subj = Exim::expand_string('$header_subject');
my $recp = Exim::expand_string('$recipients');
my $sender_address = Exim::expand_string('$sender_address');
my $local_datetime = strftime('%Y-%m-%d %H:%M:%S',localtime);
my $spam_rpt = Exim::expand_string('$spam_report');
my $m8 = Exim::expand_string('$acl_m8');
my $sender_ip = Exim::expand_string('$sender_host_address');
my $sender_host_name = Exim::expand_string('$sender_host_name');

my $reject_status =$m8;

if ($m8 eq 'yes') {
if( $sender_host_name =~ /(paypal.com|paypal.com.sg|gmail.com|ipay88.com.my )/ ) {
$reject_status = 'no';
}
}

$spam_rpt =~ s/\n/,/g;

open(USAGE, ">> /var/log/exim/mainlog");
print USAGE "$local_datetime $mid #REJECT : $reject_status #SENDER IP ADDRESS : $sender_ip #HOST : $sender_host_name #FROM : $sender_address #TO : $recp #SUBJECT : $subj\n";
print USAGE "$local_datetime $mid #SPAM_REPORT : $spam_rpt\n";
close(USAGE);

return $reject_status;

}

sub ips1_ip_whitelisted_check {

use POSIX qw/strftime/;

my $mid = Exim::expand_string('$message_id');
my $subj = Exim::expand_string('$header_subject');
my $recp = Exim::expand_string('$recipients');
my $sender_address = Exim::expand_string('$sender_address');
my $local_datetime = strftime('%Y-%m-%d %H:%M:%S',localtime);
my $spam_rpt = Exim::expand_string('$spam_report');
my $m8 = Exim::expand_string('$acl_m8');
my $sender_ip = Exim::expand_string('$sender_host_address');
my $sender_host_name = Exim::expand_string('$sender_host_name');

my $accept_this = 'no';

if( $sender_address =~ /(210.5.47.|183.81.162.|14.102.148.)/ ) {
$accept_this = 'yes';

open(USAGE, ">> /var/log/exim/mainlog");
print USAGE "$local_datetime $mid #WHITELISTED : $sender_ip #Host : $sender_host_name #FROM : $sender_address #TO : $recp #SUBJECT : $subj\n";
print USAGE "$local_datetime $mid #SPAM_REPORT : $spam_rpt\n";
close(USAGE);
}

return $accept_this;

}


vi /etc/exim.conf


# ACL that is used after the DATA command
check_message:
.include_if_exists /etc/exim.clamav.conf

# IPSERVERONE CUSTOM START

accept condition = ${if >={$message_size}{500k}{yes}{no}}
accept condition = ${perl{ips1_ip_whitelisted_check}}

warn message = X-AS-check: ${spam_report}
spam = nobody:true
set acl_m8 = ${if !match{$spam_report}{(?i)VR_SPAM_STATE=0}{yes}{no}}

deny message = X-SA-Report: REJECTED - {$spam_score_int} - $spam_report
log_message = MESSAGE: REJECTED : ${acl_m8}:$sender_address to $recipients - ${spam_report}
condition = ${perl{ips1_spam_check}}

deny message = This message scored $spam_score spam points.
spam = nobody:true
condition = ${if >{$spam_score_int}{299}{true}{false}}

# IPSERVERONE CUSTOM END

accept