'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(); } ?>