403Webshell
Server IP : 216.92.14.13  /  Your IP : 216.73.216.171
Web Server : Apache
System : Linux vps4089.pairvps.com 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64
User : rmlac2fmr ( 1040637)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /etc/mailmunge/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /etc/mailmunge/mailmunge-filter.pl.example
#!/usr/bin/env perl
use strict;
use warnings;

# DO NOT USE THIS FILTER AS-IS.
# MODIFY IT FOR YOUR DESIRED POLICY

package Mailmunge::Filter::Example;

use base qw(Mailmunge::Filter::Compat);

use Mailmunge::Response;
use Mailmunge::Test::SpamAssassin;
use File::VirusScan;

sub filter_begin
{
        my ($self, $ctx) = @_;

        # Scan for viruses using Clamd
        my $scanner = File::VirusScan->new({
                engines => {'-Daemon::ClamAV::Clamd' => {
                        socket_name => '/var/run/clamav/clamd.ctl'}
                }});
        my $result_set = $scanner->scan($self->inputmsg_absolute($ctx));
        my @contents = $result_set->contents();
        my $result = $contents[0];
        if ($result->is_error()) {
                return Mailmunge::Response->TEMPFAIL(message => 'Error running virus-scanner: ' . $result->get_data());
        } elsif ($result->is_virus()) {
                return Mailmunge::Response->REJECT(message => 'Found virus: ' . $result->get_data());
        }
        return Mailmunge::Response->CONTINUE();
}

sub filter
{
        my ($self, $ctx, $part, $fname, $extension, $mime_type) = @_;

        # MIME type message/partial is a security hazard
        if (lc($mime_type) eq 'message/partial') {
                return Mailmunge::Response->REJECT(message => 'We do not accept messages of type message/partial');
        }

        # Do not allow:
        # - CLSIDs  {foobarbaz}
        # - bad extensions (possibly with trailing dots) at end
        my $bad_exts = '(ade|adp|app|asd|asf|asx|bas|bat|chm|cmd|com|cpl|crt|dll|exe|fxp|hlp|hta|hto|inf|ini|ins|isp|jse?|lib|lnk|mdb|mde|msc|msi|msp|mst|ocx|pcd|pif|prg|reg|scr|sct|sh|shb|shs|sys|url|vb|vbe|vbs|vcs|vxd|wmd|wms|wmz|wsc|wsf|wsh|\{[^\}]+\})';
        my $re = '\.' . $bad_exts . '\.*$';

        if ($extension =~ /$re/i) {
                return Mailmunge::Response->REJECT(message => "We do not accept attachments called '$fname'");
        }

        return Mailmunge::Response->CONTINUE();
}

sub filter_end
{
        my ($self, $ctx) = @_;

        # Tag messages scoring >= 5.0 with SpamAssassin
        # with '[Spam]'
        my $sa = Mailmunge::Test::SpamAssassin->new($self);
        my $status = $sa->spam_assassin_status($ctx, 1);
        if ($status) {
                $self->action_add_header($ctx, 'X-Spam-Result', 'score=' . $status->get_score() . '; tests=' . $status->get_names_of_tests_hit());
                if ($status->get_score() >= 5.0) {
                        $self->action_change_header($ctx, 'Subject', '[Spam] ' . $ctx->subject);
                        $self->action_change_header($ctx, 'X-Spam-Status', 'Yes');
                } else {
                        $self->action_delete_all_headers($ctx, 'X-Spam-Status');
                }
                $status->finish();
        }
        return Mailmunge::Response->CONTINUE();
}

my $filter = Mailmunge::Filter::Example->new();
$filter->run();

1;

Youez - 2016 - github.com/yon3zu
LinuXploit