'deleted.content.message.txt',
'deletedbadfilename' => 'deleted.filename.message.txt',
'deletedvirus' =>'deleted.virus.message.txt',
'deletedsize' => 'deleted.size.message.txt',
'storedbadcontent' => 'stored.content.message.txt',
'storedbadfilename' => 'stored.filename.message.txt',
'storedvirus' => 'stored.virus.message.txt',
'storedsize' => 'stored.size.message.txt',
'disinfected' => 'disinfected.report.txt',
'sendercontent' => 'sender.content.report.txt',
'sendererror' => 'sender.error.report.txt',
'senderbadfilename' => 'sender.filename.report.txt',
'sendervirus' => 'sender.virus.report.txt',
'sendersize' => 'sender.size.report.txt',
'senderrbl' => 'sender.spam.rbl.report.txt',
'sendersa' => 'sender.spam.sa.report.txt',
'sendermcp' => 'sender.mcp.report.txt',
'senderspam'=>'sender.spam.report.txt',
'recipientmcp'=>'recipient.mcp.report.txt',
'recipientspam'=>'recipient.spam.report.txt',
'rejection' =>'rejection.report.txt');
foreach ($report_files as $key_r => $file_r){
if ($report[$key_r] == ""){
#$input_errors[]= $key;
$config['installedpackages']['msreport']['config'][0][$key_r]=base64_encode(file_get_contents($report_dir.'/'.$file_r.'.sample'));
file_put_contents($report_dir.'/'.$file_r,ms_text_area_decode($config['installedpackages']['msreport']['config'][0][$key_r]),LOCK_EX);
$load_samples++;
}
#print $key_r ."X $file_r X". base64_encode(file_get_contents($report_dir.'/'.$file_r.'.sample')) ."
";
if ($alert['sig']){
if($alert['sig_html'] == ""){
$config['installedpackages']['msalerts']['config'][0]['sig_html']=base64_encode(file_get_contents($report_dir.'/inline.sig.html'));
$load_samples++;
}
if($alert['sig_txt'] == ""){
$config['installedpackages']['msalerts']['config'][0]['sig_txt']=base64_encode(file_get_contents($report_dir.'/inline.sig.txt'));
$load_samples++;
}
}
if ($alert['warning']){
if($alert['warning_html'] == ""){
$config['installedpackages']['msalerts']['config'][0]['warning_html']=base64_encode(file_get_contents($report_dir.'/inline.warning.html'));
$load_samples++;
}
if($alert['warning_txt'] == ""){
$config['installedpackages']['msalerts']['config'][0]['warning_txt']=base64_encode(file_get_contents($report_dir.'/inline.warning.txt'));
$load_samples++;
}
}
}
#exit;
if($load_samples > 0)
write_config();
/*
Phishing Safe Sites File = %etc-dir%/phishing.safe.sites.conf
Phishing Bad Sites File = %etc-dir%/phishing.bad.sites.conf
Country Sub-Domains List = %etc-dir%/country.domains.conf
*/
#create MailScanner.conf$deliver_silent
$mc=<< Filename = signature.jpg
Inline HTML Warning = %report-dir%/inline.warning.html
Inline Text Warning = %report-dir%/inline.warning.txt
Sender Content Report = %report-dir%/sender.content.report.txt
Sender Error Report = %report-dir%/sender.error.report.txt
Sender Bad Filename Report = %report-dir%/sender.filename.report.txt
Sender Virus Report = %report-dir%/sender.virus.report.txt
Sender Size Report = %report-dir%/sender.size.report.txt
Hide Incoming Work Dir = {$hide_incoming_work_dir}
Include Scanner Name In Reports = {$include_scanner_name}
#
# Changes to Message Headers
# --------------------------
#
Mail Header = X-%org-name%-MailScanner:
Spam Header = X-%org-name%-MailScanner-SpamCheck:
Spam Score Header = X-%org-name%-MailScanner-SpamScore:
Information Header = X-%org-name%-MailScanner-Information:
Add Envelope From Header = yes
Add Envelope To Header = no
Envelope From Header = X-%org-name%-MailScanner-From:
Envelope To Header = X-%org-name%-MailScanner-To:
ID Header = X-%org-name%-MailScanner-ID:
IP Protocol Version Header = # X-%org-name%-MailScanner-IP-Protocol:
Spam Score Character = s
SpamScore Number Instead Of Stars = no
Minimum Stars If On Spam List = 0
Clean Header Value = Found to be clean
Infected Header Value = Found to be infected
Disinfected Header Value = Disinfected
Information Header Value = Please contact the ISP for more information
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
Always Include SpamAssassin Report = no
Multiple Headers = append
Place New Headers At Top Of Message = no
Hostname = the %org-name% ($HOSTNAME) MailScanner
Sign Messages Already Processed = no
Sign Clean Messages = yes
Attach Image To Signature = no
Attach Image To HTML Message Only = yes
Allow Multiple HTML Signatures = no
Dont Sign HTML If Headers Exist = # In-Reply-To: References:
Mark Infected Messages = yes
Mark Unscanned Messages = yes
Unscanned Header Value = Not scanned: please contact your Internet E-Mail Service Provider for details
Remove These Headers = X-Mozilla-Status: X-Mozilla-Status2:
Deliver Cleaned Messages = yes
#
# Notifications back to the senders of blocked messages
# -----------------------------------------------------
#
Notify Senders = {$notify_sender}
Notify Senders Of Viruses = {$notify_sender_viruses}
Notify Senders Of Blocked Filenames Or Filetypes = {$notify_sender_fileytypes}
Notify Senders Of Blocked Size Attachments = {$notify_sender_attachments}
Notify Senders Of Other Blocked Content = {$notify_sender_contents}
Never Notify Senders Of Precedence = list bulk
#
# Changes to the Subject: line
# ----------------------------
#
Scanned Modify Subject = no # end
Scanned Subject Text = [Scanned]
Virus Modify Subject = start
Virus Subject Text = [Virus?]
Filename Modify Subject = start
Filename Subject Text = [Filename?]
Content Modify Subject = start
Size Modify Subject = start
Size Subject Text = [Size]
Disarmed Modify Subject = start
Disarmed Subject Text = [Disarmed]
Phishing Modify Subject = no
Phishing Subject Text = [Fraude?]
Spam Modify Subject = start
Spam Subject Text = [Spam?]
High Scoring Spam Modify Subject = start
High Scoring Spam Subject Text = [Spam?]
#
# Changes to the Message Body
# ---------------------------
#
Warning Is Attachment = yes
Attachment Warning Filename = %org-name%-Attachment-Warning.txt
Attachment Encoding Charset = ISO-8859-1
#
# Mail Archiving and Monitoring
# -----------------------------
#
Archive Mail =
Missing Mail Archive Is = directory
#
# Notices to System Administrators
# --------------------------------
#
Send Notices = {$send_notices}
Notices Include Full Headers = {$notices_include_header}
Hide Incoming Work Dir in Notices = {$hide_incoming_work_dir_notices}
Notice Signature = {$notice_signature}
Notices From = ${$notice_from}
Notices To = ${$notice_to}
Local Postmaster = postmaster
#
# Spam Detection and Virus Scanner Definitions
# --------------------------------------------
#
Spam List Definitions = %etc-dir%/spam.lists.conf
Virus Scanner Definitions = %etc-dir%/virus.scanners.conf
#
# Spam Detection and Spam Lists (DNS blocklists)
# ----------------------------------------------
#
Spam Checks = yes
Spam List = # spamhaus-ZEN # You can un-comment this to enable them
Spam Domain List =
Spam Lists To Be Spam = 1
Spam Lists To Reach High Score = 3
Spam List Timeout = 10
Max Spam List Timeouts = 7
Spam List Timeouts History = 10
Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules
Is Definitely Spam = no
Definite Spam Is High Scoring = no
Ignore Spam Whitelist If Recipients Exceed = 20
Max Spam Check Size = 200k
#
# Watermarking
# ------------
#
Use Watermarking = no
Add Watermark = yes
Check Watermarks With No Sender = yes
Treat Invalid Watermarks With No Sender as Spam = nothing
Check Watermarks To Skip Spam Checks = yes
Watermark Secret = %org-name%-Secret
Watermark Lifetime = 604800
Watermark Header = X-%org-name%-MailScanner-Watermark:
#
# SpamAssassin
# ------------
#
Use SpamAssassin = {$use_sa}
Max SpamAssassin Size = {$sa_max}
Required SpamAssassin Score = {$sa_score}
High SpamAssassin Score = {$hi_score}
SpamAssassin Auto Whitelist = {$sa_auto_whitelist}
SpamAssassin Timeout = 75
Max SpamAssassin Timeouts = 10
SpamAssassin Timeouts History = 30
Check SpamAssassin If On Spam List = {$check_sa_if_on_spam_list}
Include Binary Attachments In SpamAssassin = {$include_sa_bin_attachments}
Spam Score = {$spam_score}
Cache SpamAssassin Results = {$cache_spamassassin_results}
SpamAssassin Cache Database File = /var/spool/MailScanner/incoming/SpamAssassin.cache.db
Rebuild Bayes Every = {$rebuild_bayes}
Wait During Bayes Rebuild = {$wait_during_bayes_rebuild}
#
# Custom Spam Scanner Plugin
# --------------------------
#
Use Custom Spam Scanner = no
Max Custom Spam Scanner Size = 20k
Custom Spam Scanner Timeout = 20
Max Custom Spam Scanner Timeouts = 10
Custom Spam Scanner Timeout History = 20
#
# What to do with spam
# --------------------
#
Spam Actions = {$spam_actions} header "X-Spam-Status: Yes"
High Scoring Spam Actions = {$hispam_actions} header "X-Spam-Status: Yes"
Non Spam Actions = deliver header "X-Spam-Status: No"
SpamAssassin Rule Actions =
Sender Spam Report = %report-dir%/sender.spam.report.txt
Sender Spam List Report = %report-dir%/sender.spam.rbl.report.txt
Sender SpamAssassin Report = %report-dir%/sender.spam.sa.report.txt
Inline Spam Warning = %report-dir%/inline.spam.warning.txt
Recipient Spam Report = %report-dir%/recipient.spam.report.txt
Enable Spam Bounce = %rules-dir%/bounce.rules
#
# Logging
# -------
#
Syslog Facility = {$syslog_facility}
Log Speed = {$log_speed}
Log Spam = {$log_spam}
Log Non Spam = {$log_non_spam}
Log Delivery And Non-Delivery = {$log_delivery}
Log Permitted Filenames = {$log_filenames}
Log Permitted Filetypes = {$log_filetypes}
Log Permitted File MIME Types = {$log_mime}
Log Silent Viruses = {$log_silent}
Log Dangerous HTML Tags = {$log_dangerous}
Log SpamAssassin Rule Actions = {$log_sa_rule_action}
#
# Advanced SpamAssassin Settings
# ------------------------------
#
SpamAssassin Temporary Dir = /var/spool/MailScanner/incoming/SpamAssassin-Temp
SpamAssassin User State Dir =
SpamAssassin Install Prefix =
SpamAssassin Site Rules Dir = /usr/local/etc/mail/spamassassin
SpamAssassin Local Rules Dir =
SpamAssassin Local State Dir = # /var/lib/spamassassin
SpamAssassin Default Rules Dir =
#
# MCP (Message Content Protection)
# -----------------------------
#
MCP Checks = {$mcp_checks}
First Check = spam
MCP Required SpamAssassin Score = {$mcp_score}
MCP High SpamAssassin Score = {$hi_mcp_score}
MCP Error Score = 1
MCP Header = X-%org-name%-MailScanner-MCPCheck:
Non MCP Actions = deliver
MCP Actions = {$mcp_action}
High Scoring MCP Actions = {$mcp_hi_action}
Bounce MCP As Attachment = {$bounce_mcp}
MCP Modify Subject = start
MCP Subject Text = [MCP?]
High Scoring MCP Modify Subject = start
High Scoring MCP Subject Text = [MCP?]
Is Definitely MCP = {$is_mcp}
Is Definitely Not MCP = {$is_not_mcp}
Definite MCP Is High Scoring = {$mcp_is_high_score}
Always Include MCP Report = {$include_mcp_report}
Detailed MCP Report = {$detailled_mcp_report}
Include Scores In MCP Report = {$score_mcp_report}
Log MCP = {$log_mcp}
MCP Max SpamAssassin Timeouts = 20
MCP Max SpamAssassin Size = {$mcp_max}
MCP SpamAssassin Timeout = 10
MCP SpamAssassin Prefs File = %mcp-dir%/mcp.spam.assassin.prefs.conf
MCP SpamAssassin User State Dir =
MCP SpamAssassin Local Rules Dir = %mcp-dir%
MCP SpamAssassin Default Rules Dir = %mcp-dir%
MCP SpamAssassin Install Prefix = %mcp-dir%
Recipient MCP Report = %report-dir%/recipient.mcp.report.txt
Sender MCP Report = %report-dir%/sender.mcp.report.txt
#
# Advanced Settings
# -----------------
#
Use Default Rules With Multiple Recipients = {$default_rule_multiple}
Read IP Address From Received Header = {$read_ipaddress}
Spam Score Number Format = {$spam_score_format}
MailScanner Version Number = 4.79.11
SpamAssassin Cache Timings = {$cache_timings}
Debug = {$debug}
Debug SpamAssassin = {$debug_spam}
Run In Foreground = {$foreground}
Always Looked Up Last = {$look_up_last}
Always Looked Up Last After Batch = {$look_up_last_batch}
Deliver In Background = {$deliver_background}
Delivery Method = {$mailscanner['deliver_method']}
Split Exim Spool = {$split_exim_spool}
Lockfile Dir = /var/spool/MailScanner/incoming/Locks
Custom Functions Dir = /usr/local/lib/MailScanner/MailScanner/CustomFunctions
Lock Type =
Syslog Socket Type =
Automatic Syntax Check = {$syntax_check}
Minimum Code Status = {$mailscanner['minimum_code']}
include /usr/local/etc/MailScanner/conf.d/*
EOF;
#write files
conf_mount_rw();
$mlang=strtolower($report['language']);
$mfiles[]="/usr/local/etc/MailScanner/virus.scanners.conf";
$mfiles[]="/usr/local/share/MailScanner/reports/{$mlang}/inline.spam.warning.txt";
$mfiles[]="/usr/local/share/MailScanner/reports/{$mlang}/languages.conf";
foreach ($mfiles as $mfile)
if (! file_exists ($mfile))
copy($mfile.".sample",$mfile);
if (!is_dir("/var/spool/MailScanner/incoming")){
mkdir("/var/spool/MailScanner/incoming", 0755,true);
chown ('/var/spool/MailScanner/incoming','postfix');
}
if (!is_dir("/var/spool/MailScanner/quarantine")){
mkdir("/var/spool/MailScanner/quarantine", 0755,true);
chown ('/var/spool/MailScanner/quarantine','postfix');
}
chown ('/var/spool/postfix','postfix');
file_put_contents($mailscanner_dir."/MailScanner.conf", $mc, LOCK_EX);
file_put_contents($mailscanner_dir."/filename.rules.conf",ms_text_area_decode($config['installedpackages']['msattachments']['config'][0]['filename_rules']),LOCK_EX);
file_put_contents($mailscanner_dir."/filetype.rules.conf",ms_text_area_decode($config['installedpackages']['msattachments']['config'][0]['filetype_rules']),LOCK_EX);
file_put_contents($mailscanner_dir."/archives.filename.rules.conf",ms_text_area_decode($config['installedpackages']['msattachments']['config'][0]['filename_rules']),LOCK_EX);
file_put_contents($mailscanner_dir."/archives.filetype.rules.conf",ms_text_area_decode($config['installedpackages']['msattachments']['config'][0]['filetype_rules']),LOCK_EX);
file_put_contents($mailscanner_dir."/phishing.safe.sites.conf",ms_text_area_decode($config['installedpackages']['mscontent']['config'][0]['phishing_safe']),LOCK_EX);
file_put_contents($mailscanner_dir."/phishing.bad.sites.conf",ms_text_area_decode($config['installedpackages']['mscontent']['config'][0]['phishing_bad']),LOCK_EX);
file_put_contents($mailscanner_dir."/country.domains.conf",ms_text_area_decode($config['installedpackages']['mscontent']['config'][0]['country_domains']),LOCK_EX);
file_put_contents($mailscanner_dir.'/spam.assassin.prefs.conf',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['sa_pref_file']),LOCK_EX);
file_put_contents($mailscanner_dir.'/spam.lists.conf',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['rbl_file']),LOCK_EX);
file_put_contents($mailscanner_dir.'/mcp/mcp.spam.assassin.prefs.conf',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['mcp_pref_file']),LOCK_EX);
file_put_contents($mailscanner_dir.'/rules/bounce.rules',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['bounce']),LOCK_EX);
file_put_contents($mailscanner_dir.'/rules/max.message.size.rules',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['max_message_size']),LOCK_EX);
file_put_contents($mailscanner_dir.'/rules/spam.whitelist.rules',ms_text_area_decode($config['installedpackages']['msantispam']['config'][0]['spam_whitelist']),LOCK_EX);
foreach ($report_files as $key_r => $file_r)
file_put_contents($report_dir.'/'.$file_r,ms_text_area_decode($config['installedpackages']['msreport']['config'][0][$key_r]),LOCK_EX);
if ($alert['sig']){
$sig_html=ms_text_area_decode($config['installedpackages']['msalerts']['config'][0]['sig_html']);
$sig_txt=ms_text_area_decode($config['installedpackages']['msalerts']['config'][0]['sig_txt']);}
else{
$sig_html="";
$sig_txt="";}
file_put_contents($report_dir.'/inline.sig.txt',$sig_txt,LOCK_EX);
file_put_contents($report_dir.'/inline.sig.html',$sig_html,LOCK_EX);
if ($alert['warning']){
$warning_html=ms_text_area_decode($config['installedpackages']['msalerts']['config'][0]['warning_html']);
$warning_txt=ms_text_area_decode($config['installedpackages']['msalerts']['config'][0]['warning_txt']);}
else{
$warning_html="";
$warning_txt="";}
file_put_contents($report_dir.'/inline.warning.txt',$warning_txt,LOCK_EX);
file_put_contents($report_dir.'/inline.warning.html',$warning_html,LOCK_EX);
#check virus_scanner options
$libexec_dir="/usr/local/libexec/MailScanner/";
if ($virus_scanning == "yes"){
if ($antivirus['virus_scanner'] =="none"){
unlink_if_exists($libexec_dir.'clamav-autoupdate');
unlink_if_exists($libexec_dir.'clamav-wrapper');
}
else{
copy($libexec_dir.'clamav-autoupdate.sample',$libexec_dir.'clamav-autoupdate');
chmod ($libexec_dir.'clamav-autoupdate',0755);
copy($libexec_dir.'clamav-wrapper.sample',$libexec_dir.'clamav-wrapper');
chmod ($libexec_dir.'clamav-autoupdate',0755);
if (!file_exists('/var/db/clamav/main.cvd')){
log_error('No clamav database found, running freshclam in background.');
mwexec_bg('/usr/local/bin/freshclam');
}
}
}
else{
unlink_if_exists($libexec_dir.'clamav-autoupdate');
unlink_if_exists($libexec_dir.'clamav-wrapper');
}
$script='/usr/local/etc/rc.d/mailscanner';
$script_file=file_get_contents($script);
if (preg_match('/NO/',$script_file)){
$script_file=preg_replace("/NO/","YES",$script_file);
file_put_contents($script, $script_file, LOCK_EX);
}
if($config['installedpackages']['mailscanner']['config'][0]['enable']){
log_error("Reload mailscanner");
chmod ($script,0755);
mwexec_bg("$script fastrestart");
}
else{
log_error("Stopping mailscanner if running");
mwexec("$script stop");
chmod ($script,0444);
}
conf_mount_ro();
}
function mailscanner_validate_input($post, &$input_errors) {
foreach ($post as $key => $value) {
if (empty($value))
continue;
if (substr($key, 0, 6) == "domain" && is_numeric(substr($key, 6))) {
if (!is_domain($value))
$input_errors[] = "{$value} is not a valid domain name.";
} else if (substr($key, 0, 12) == "mailserverip" && is_numeric(substr($key, 12))) {
if (empty($post['domain' . substr($key, 12)]))
$input_errors[] = "Domain for {$value} cannot be blank.";
if (!is_ipaddr($value) && !is_hostname($value))
$input_errors[] = "{$value} is not a valid IP address or host name.";
}
}
}
function mailscanner_php_install_command() {
sync_package_mailscanner();
}
function mailscanner_php_deinstall_command() {
mwexec("/usr/local/etc/rc.d/mailscanner.sh stop");
sleep(1);
conf_mount_rw();
unlink_if_exists("/usr/local/etc/rc.d/mailscanner.sh");
conf_mount_ro();
}
?>