[ Avaa Bypassed ]




Upload:

Command:

www-data@18.117.197.188: ~ $
#!/usr/bin/perl
# autoreply.pl
# Simple autoreply script. Command line arguments are :
# autoreply-file username alternate-file

# Read sendmail module config
$ENV{'PATH'} = "/bin:/usr/bin:/sbin:/usr/sbin";
$p = -l $0 ? readlink($0) : $0;
$p =~ /^(.*)\/[^\/]+$/;
$moddir = $1;
%config = &read_config_file("$moddir/config");

# If this isn't the sendmail module, try it
if (!$config{'sendmail_path'} || !-x $config{'sendmail_path'}) {
	$moddir =~ s/([^\/]+)$/sendmail/;
	%config = &read_config_file("$moddir/config");
	}

if (!$config{'sendmail_path'} || !-x $config{'sendmail_path'}) {
	# Make some guesses about sendmail
	if (-x "/usr/sbin/sendmail") {
		%config = ( 'sendmail_path' => '/usr/sbin/sendmail' );
		}
	elsif (-x "/usr/local/sbin/sendmail") {
		%config = ( 'sendmail_path' => '/usr/local/sbin/sendmail' );
		}
	elsif (-x "/opt/csw/lib/sendmail") {
		%config = ( 'sendmail_path' => '/opt/csw/lib/sendmail' );
		}
	elsif (-x "/usr/lib/sendmail") {
		%config = ( 'sendmail_path' => '/usr/lib/sendmail' );
		}
	else {
		die "Failed to find sendmail or config file";
		}
	}

# read headers and body
$lnum = 0;
while(<STDIN>) {
	$headers .= $_;
	s/\r|\n//g;
	if (/^From\s+(\S+)/ && $lnum == 0) {
		# Magic From line
		$fromline = $1;
		}
	elsif (/^(\S+):\s+(.*)/) {
		$header{lc($1)} = $2;
		$lastheader = lc($1);
		}
	elsif (/^\s+(.*)/ && $lastheader) {
		$header{$lastheader} .= $_;
		}
	elsif (!$_) { last; }
	$lnum++;
	}
while(<STDIN>) {
	$body .= $_;
	}
if ($header{'x-webmin-autoreply'} ||
    $header{'auto-submitted'} && lc($header{'auto-submitted'}) ne 'no') {
	print STDERR "Cancelling autoreply to an autoreply\n";
	exit 0;
	}
if ($header{'x-spam-flag'} =~ /^Yes/i || $header{'x-spam-status'} =~ /^Yes/i) {
        print STDERR "Cancelling autoreply to message already marked as spam\n";
        exit 0;
        }
if ($header{'x-mailing-list'} ||
    $header{'list-id'} ||
    $header{'precedence'} =~ /junk|bulk|list/i ||
    $header{'to'} =~ /Multiple recipients of/i ||
    $header{'from'} =~ /majordomo/i ||
    $fromline =~ /majordomo/i) {
	# Do nothing if post is from a mailing list
	print STDERR "Cancelling autoreply to message from mailing list\n";
	exit 0;
	}
if ($header{'from'} =~ /postmaster|mailer-daemon/i ||
    $fromline =~ /postmaster|mailer-daemon|<>/ ) {
	# Do nothing if post is a bounce
	print STDERR "Cancelling autoreply to bounce message\n";
	exit 0;
	}

# work out the correct to address
@to = ( &split_addresses($header{'to'}),
	&split_addresses($header{'cc'}),
	&split_addresses($header{'bcc'}) );
$to = $to[0]->[0];
foreach $t (@to) {
	if ($t->[0] =~ /^([^\@\s]+)/ && $1 eq $ARGV[1] ||
	    $t->[0] eq $ARGV[1]) {
		$to = $t->[0];
		}
	}

# build list of default reply headers
$rheader{'From'} = $to;
$rheader{'To'} = $header{'reply-to'} ? $header{'reply-to'}
				     : $header{'from'};
$rheader{'Subject'} = "Autoreply to $header{'subject'}";
$rheader{'X-Webmin-Autoreply'} = 1;
$rheader{'X-Originally-To'} = $header{'to'};
chop($host = `hostname`);
$rheader{'Message-Id'} = "<".time().".".$$."\@".$host.">";
$rheader{'Auto-Submitted'} = 'auto-replied';

# read the autoreply file (or alternate)
if (open(AUTO, "<".$ARGV[0]) ||
    $ARGV[2] && open(AUTO, "<".$ARGV[2])) {
	while(<AUTO>) {
		s/\$SUBJECT/$header{'subject'}/g;
		s/\$FROM/$header{'from'}/g;
		s/\$TO/$to/g;
		s/\$DATE/$header{'date'}/g;
		s/\$BODY/$body/g;
		if (/^(\S+):\s*(.*)/ && !$doneheaders) {
			if ($1 eq "No-Autoreply-Regexp") {
				push(@no_regexp, $2);
				}
			elsif ($1 eq "Must-Autoreply-Regexp") {
				push(@must_regexp, $2);
				}
			elsif ($1 eq "Autoreply-File") {
				push(@files, $2);
				}
			else {
				$rheader{$1} = $2;
				$rheaders .= $_;
				}
			}
		else {
			$rbody .= $_;
			$doneheaders = 1;
			}
		}
	close(AUTO);
	}
else {
	$rbody = "Failed to open autoreply file $ARGV[0] : $!";
	}

if ($header{'x-original-to'} && $rheader{'No-Forward-Reply'}) {
	# Don't autoreply to a forwarded email
	($ot) = &split_addresses($header{'x-original-to'});
	if ($ot->[0] =~ /^([^\@\s]+)/ && $1 ne $ARGV[1] &&
	    $ot->[0] ne $ARGV[1]) {
		print STDERR "Cancelling autoreply to forwarded message\n";
		exit 0;
		}
	}

# Open the replies tracking DBM, if one was set
my $rtfile = $rheader{'Reply-Tracking'};
if ($rtfile) {
	$track_replies = dbmopen(%replies, $rtfile, 0700);
	eval { $replies{"test\@example.com"} = 1; };
	if ($@) {
		# DBM is corrupt! Clear it
		dbmclose(%replies);
		unlink($rtfile.".dir");
		unlink($rtfile.".pag");
		unlink($rtfile.".db");
		$track_replies = dbmopen(%replies, $rtfile, 0700);
		}
	}
if ($track_replies) {
	# See if we have replied to this address before
	$period = $rheader{'Reply-Period'} || 60*60;
	($from) = &split_addresses($header{'from'});
	if ($from) {
		$lasttime = $replies{$from->[0]};
		$now = time();
		if ($now < $lasttime+$period) {
			# Autoreplied already in this period .. just halt
			print STDERR "Already autoreplied at $lasttime which ",
				     "is less than $period ago\n";
			exit 0;
			}
		$replies{$from->[0]} = $now;
		}
	}
delete($rheader{'Reply-Tracking'});
delete($rheader{'Reply-Period'});

# Check if we are within the requested time range
if ($rheader{'Autoreply-Start'} && time() < $rheader{'Autoreply-Start'} ||
    $rheader{'Autoreply-End'} && time() > $rheader{'Autoreply-End'}) {
	# Nope .. so do nothing
	print STDERR "Outside of autoreply window of ",
		     "$rheader{'Autoreply-Start'}-$rheader{'Autoreply-End'}\n";
	exit 0;
	}
delete($rheader{'Autoreply-Start'});
delete($rheader{'Autoreply-End'});

# Check if there is a deny list, and if so don't send a reply
@fromsplit = &split_addresses($header{'from'});
if (@fromsplit) {
	$from = $fromsplit[0]->[0];
	($fromuser, $fromdom) = split(/\@/, $from);
	foreach $n (split(/\s+/, $rheader{'No-Autoreply'})) {
		if ($n =~ /^(\S+)\@(\S+)$/ && lc($from) eq lc($n) ||
		    $n =~ /^\*\@(\S+)$/ && lc($fromdom) eq lc($1) ||
		    $n =~ /^(\S+)\@\*$/ && lc($fromuser) eq lc($1) ||
		    $n =~ /^\*\@\*(\S+)$/ && lc($fromdom) =~ /$1$/i ||
		    $n =~ /^(\S+)\@\*(\S+)$/ && lc($fromuser) eq lc($1) &&
						lc($fromdom) =~ /$2$/i) {
			exit(0);
			}
		}
	delete($rheader{'No-Autoreply'});
	}

# Check if message matches one of the deny regexps, or doesn't match a
# required regexp
foreach $re (@no_regexp) {
	if ($re =~ /\S/ && $headers =~ /$re/i) {
		print STDERR "Skipping due to match on $re\n";
		exit(0);
		}
	}
if (@must_regexp) {
	my $found = 0;
	foreach $re (@must_regexp) {
		if ($headers =~ /$re/i) {
			$found++;
			}
		}
	if (!$found) {
		print STDERR "Skipping due to no match on ",
			     join(" ", @must_regexp),"\n";
		exit(0);
		}
	}

# if spamassassin is installed, feed the email to it
$spam = &has_command("spamassassin");
if ($spam) {
	$temp = "/tmp/autoreply.spam.$$";
	unlink($temp);
	open(SPAM, "| $spam >$temp 2>/dev/null");
	print SPAM $headers;
	print SPAM $body;
	close(SPAM);
	$isspam = undef;
	open(SPAMOUT, "<".$temp);
	while(<SPAMOUT>) {
		if (/^X-Spam-Status:\s+Yes/i) {
			$isspam = 1;
			last;
			}
		last if (!/\S/);
		}
	close(SPAMOUT);
	unlink($temp);
	if ($isspam) {
		print STDERR "Not autoreplying to spam\n";
		exit 0;
		}
	}

# Read attached files
foreach $f (@files) {
	local $/ = undef;
	if (!open(FILE, "<".$f)) {
		print STDERR "Failed to open $f : $!\n";
		exit(1);
		}
	$data = <FILE>;
	close(FILE);
	$f =~ s/^.*\///;
	$type = &guess_mime_type($f)."; name=\"$f\"";
	$disp = "inline; filename=\"$f\"";
	push(@attach, { 'headers' => [ [ 'Content-Type', $type ],
				       [ 'Content-Disposition', $disp ],
				       [ 'Content-Transfer-Encoding', 'base64' ]
				     ],
			'data' => $data });
	}

# Work out the content type and encoding
$type = $rbody =~ /<html[^>]*>|<body[^>]*>/i ? "text/html" : "text/plain";
$cs = $rheader{'Charset'};
delete($rheader{'Charset'});
if ($rbody =~ /[\177-\377]/) {
	# High-ascii
	$enc = "quoted-printable";
	$encrbody = &quoted_encode($rbody);
	$type .= "; charset=".($cs || "UTF-8");
	}
else {
	$enc = undef;
	$encrbody = $rbody;
	$type .= "; charset=$cs" if ($cs);
	}

# run sendmail and feed it the reply
($rfrom) = &split_addresses($rheader{'From'});
if ($rfrom->[0]) {
	open(MAIL, "|$config{'sendmail_path'} -t -f".quotemeta($rfrom->[0]));
	}
else {
	open(MAIL, "|$config{'sendmail_path'} -t -f".quotemeta($to));
	}
foreach $h (keys %rheader) {
	print MAIL "$h: $rheader{$h}\n";
	}

# Create the message body
if (!@attach) {
	# Just text, so no encoding is needed
	if ($enc) {
		print MAIL "Content-Transfer-Encoding: $enc\n";
		}
	if (!$rheader{'Content-Type'}) {
		print MAIL "Content-Type: $type\n";
		}
	print MAIL "\n";
	print MAIL $encrbody;
	}
else {
	# Need to send a multi-part MIME message
	print MAIL "MIME-Version: 1.0\n";
	$bound = "bound".time();
	$ctype = "multipart/mixed";
	print MAIL "Content-Type: $ctype; boundary=\"$bound\"\n";
	print MAIL "\n";
	$bodyattach = { 'headers' => [ [ 'Content-Type', $type ], ],
			'data' => $encrbody };
	if ($enc) {
		push(@{$bodyattach->{'headers'}},
		     [ 'Content-Transfer-Encoding', $enc ]);
		}
	splice(@attach, 0, 0, $bodyattach);

	# Send attachments
	print MAIL "This is a multi-part message in MIME format.","\n";
	$lnum++;
	foreach $a (@attach) {
		print MAIL "\n";
		print MAIL "--",$bound,"\n";
		local $enc;
		foreach $h (@{$a->{'headers'}}) {
			print MAIL $h->[0],": ",$h->[1],"\n";
			$enc = $h->[1]
				if (lc($h->[0]) eq 'content-transfer-encoding');
			$lnum++;
			}
		print MAIL "\n";
		$lnum++;
		if (lc($enc) eq 'base64') {
			local $enc = &encode_base64($a->{'data'});
			$enc =~ s/\r//g;
			print MAIL $enc;
			}
		else {
			$a->{'data'} =~ s/\r//g;
			$a->{'data'} =~ s/\n\.\n/\n\. \n/g;
			print MAIL $a->{'data'};
			if ($a->{'data'} !~ /\n$/) {
				print MAIL "\n";
				}
			}
		}
	print MAIL "\n";
	print MAIL "--",$bound,"--","\n";
	print MAIL "\n";
	}
close(MAIL);

# split_addresses(string)
# Splits a comma-separated list of addresses into [ email, real-name, original ]
# triplets
sub split_addresses
{
local (@rv, $str = $_[0]);
while(1) {
	if ($str =~ /^[\s,]*(([^<>\(\)"\s]+)\s+\(([^\(\)]+)\))(.*)$/) {
		# An address like  foo@bar.com (Fooey Bar)
		push(@rv, [ $2, $3, $1 ]);
		$str = $4;
		}
	elsif ($str =~ /^[\s,]*("([^"]+)"\s*<([^\s<>,]+)>)(.*)$/ ||
	       $str =~ /^[\s,]*(([^<>\@]+)\s+<([^\s<>,]+)>)(.*)$/ ||
	       $str =~ /^[\s,]*(([^<>\@]+)<([^\s<>,]+)>)(.*)$/ ||
	       $str =~ /^[\s,]*(([^<>\[\]]+)\s+\[mailto:([^\s\[\]]+)\])(.*)$/||
	       $str =~ /^[\s,]*(()<([^<>,]+)>)(.*)/ ||
	       $str =~ /^[\s,]*(()([^\s<>,]+))(.*)/) {
		# Addresses like  "Fooey Bar" <foo@bar.com>
		#                 Fooey Bar <foo@bar.com>
		#                 Fooey Bar<foo@bar.com>
		#		  Fooey Bar [mailto:foo@bar.com]
		#		  <foo@bar.com>
		#		  <group name>
		#		  foo@bar.com
		push(@rv, [ $3, $2 eq "," ? "" : $2, $1 ]);
		$str = $4;
		}
	else {
		last;
		}
	}
return @rv;
}

# encode_base64(string)
# Encodes a string into base64 format
sub encode_base64
{
    local $res;
    pos($_[0]) = 0;                          # ensure start at the beginning
    while ($_[0] =~ /(.{1,57})/gs) {
        $res .= substr(pack('u57', $1), 1)."\n";
        chop($res);
    }
    $res =~ tr|\` -_|AA-Za-z0-9+/|;
    local $padding = (3 - length($_[0]) % 3) % 3;
    $res =~ s/.{$padding}$/'=' x $padding/e if ($padding);
    return $res;
}

# guess_mime_type(filename)
sub guess_mime_type
{
local ($file) = @_;
return $file =~ /\.gif/i ? "image/gif" :
       $file =~ /\.(jpeg|jpg)/i ? "image/jpeg" :
       $file =~ /\.txt/i ? "text/plain" :
       $file =~ /\.(htm|html)/i ? "text/html" :
       $file =~ /\.doc/i ? "application/msword" :
       $file =~ /\.xls/i ? "application/vnd.ms-excel" :
       $file =~ /\.ppt/i ? "application/vnd.ms-powerpoint" :
       $file =~ /\.(mpg|mpeg)/i ? "video/mpeg" :
       $file =~ /\.avi/i ? "video/x-msvideo" :
       $file =~ /\.(mp2|mp3)/i ? "audio/mpeg" :
       $file =~ /\.wav/i ? "audio/x-wav" :
			   "application/octet-stream";
}

sub read_config_file
{
local %config;
if (open(CONF, "<".$_[0])) {
	while(<CONF>) {
		if (/^(\S+)=(.*)/) {
			$config{$1} = $2;
			}
		}
	close(CONF);
	}
return %config;
}

# quoted_encode(text)
# Encodes text to quoted-printable format
sub quoted_encode
{
local $t = $_[0];
$t =~ s/([=\177-\377])/sprintf("=%2.2X",ord($1))/ge;
return $t;
}

sub has_command
{
local ($cmd) = @_;
if ($cmd =~ /^\//) {
	return -x $cmd ? $cmd : undef;
	}
else {
	foreach my $d (split(":", $ENV{'PATH'}), "/usr/bin", "/usr/local/bin") {
		return "$d/$cmd" if (-x "$d/$cmd");
		}
	return undef;
	}
}

Filemanager

Name Type Size Permission Actions
help Folder 0755
images Folder 0755
lang Folder 0755
CHANGELOG File 6.56 KB 0644
acl_security.pl File 863 B 0755
address_rewriting.cgi File 1.15 KB 0755
aliases-lib.pl File 7.93 KB 0755
aliases.cgi File 2.97 KB 0755
autoreply.pl File 12.19 KB 0755
backup_config.pl File 730 B 0755
bcc.cgi File 1.41 KB 0755
body.cgi File 951 B 0755
boxes-lib.pl File 80.37 KB 0755
canonical.cgi File 1.12 KB 0755
canonical_edit.cgi File 734 B 0755
client.cgi File 2.22 KB 0755
config File 702 B 0644
config-AlmaLinux-8.0-ALL File 804 B 0644
config-CentOS-Linux-7.0-ALL File 804 B 0644
config-CentOS-Stream-Linux-8.0-ALL File 804 B 0644
config-CloudLinux-8.0-ALL File 804 B 0644
config-Oracle-Linux-8.0-ALL File 804 B 0644
config-Rocky-Linux-8.0-ALL File 804 B 0644
config-debian-linux-10.0-ALL File 804 B 0644
config-freebsd File 783 B 0644
config-freebsd-8-ALL File 886 B 0644
config-mandrake-linux File 721 B 0644
config-msc-linux File 721 B 0644
config-netbsd File 721 B 0644
config-openSUSE-Linux-15.0-ALL File 804 B 0644
config-pardus-linux File 783 B 0644
config-redhat-linux-24.0-ALL File 804 B 0644
config-syno-linux File 998 B 0644
config.info File 2.54 KB 0644
config.info.bg File 4.54 KB 0644
config.info.ca File 2.95 KB 0644
config.info.cs File 664 B 0644
config.info.de File 2.77 KB 0644
config.info.es File 444 B 0644
config.info.fr File 597 B 0644
config.info.hu File 0 B 0644
config.info.ja File 2.92 KB 0644
config.info.nl File 2.71 KB 0644
config.info.no File 2.67 KB 0644
config.info.pl File 554 B 0644
config.info.ru File 880 B 0644
config.info.sv File 547 B 0644
config.info.tr File 437 B 0644
config.info.uk File 909 B 0644
config.info.zh File 405 B 0644
config.info.zh_TW File 453 B 0644
debug.cgi File 815 B 0755
defaultacl File 332 B 0644
delete_aliases.cgi File 820 B 0755
delete_mappings.cgi File 596 B 0755
delete_queues.cgi File 1.95 KB 0755
dependent.cgi File 988 B 0755
detach_queue.cgi File 651 B 0755
edit_access.cgi File 676 B 0755
edit_afile.cgi File 1.08 KB 0755
edit_alias.cgi File 438 B 0755
edit_canonical_mappings.cgi File 1.29 KB 0755
edit_ffile.cgi File 2.05 KB 0755
edit_manual.cgi File 1.08 KB 0755
edit_mapping.cgi File 2.75 KB 0755
edit_master.cgi File 3.15 KB 0755
edit_rfile.cgi File 3.05 KB 0755
filter.pl File 1.99 KB 0755
flushq.cgi File 513 B 0755
general.cgi File 4.08 KB 0755
header.cgi File 986 B 0755
index.cgi File 4.21 KB 0755
install_check.pl File 384 B 0755
ldap.cgi File 1.19 KB 0755
local_delivery.cgi File 1.84 KB 0755
log_parser.pl File 795 B 0755
mailq.cgi File 2.44 KB 0755
mailq_search.cgi File 979 B 0755
manual.cgi File 996 B 0755
manual_update.cgi File 610 B 0755
map_chooser.cgi File 5.58 KB 0755
map_chooser_save.cgi File 6.54 KB 0755
master.cgi File 1.26 KB 0755
module.info File 158 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 89 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 116 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 137 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 126 B 0644
module.info.ca File 88 B 0644
module.info.ca.auto File 16 B 0644
module.info.cs File 29 B 0644
module.info.cs.auto File 70 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 88 B 0644
module.info.de File 78 B 0644
module.info.de.auto File 16 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 141 B 0644
module.info.es File 34 B 0644
module.info.es.auto File 68 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 95 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 117 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 92 B 0644
module.info.fr File 33 B 0644
module.info.fr.auto File 73 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 117 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 114 B 0644
module.info.hu File 30 B 0644
module.info.hu.auto File 69 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 96 B 0644
module.info.ja File 26 B 0644
module.info.ja.auto File 77 B 0644
module.info.ko File 23 B 0644
module.info.ko.auto File 75 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 121 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 103 B 0644
module.info.ms File 78 B 0644
module.info.ms.auto File 16 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 97 B 0644
module.info.nl File 28 B 0644
module.info.nl.auto File 63 B 0644
module.info.no File 30 B 0644
module.info.no.auto File 61 B 0644
module.info.pl File 35 B 0644
module.info.pl.auto File 68 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 105 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 114 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 103 B 0644
module.info.ru File 35 B 0644
module.info.ru.auto File 95 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 102 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 104 B 0644
module.info.sv File 30 B 0644
module.info.sv.auto File 61 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 174 B 0644
module.info.tr File 34 B 0644
module.info.tr.auto File 70 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 143 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 128 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 100 B 0644
module.info.zh File 23 B 0644
module.info.zh.auto File 59 B 0644
module.info.zh_TW File 26 B 0644
module.info.zh_TW.auto File 65 B 0644
postfinger.cgi File 13.89 KB 0755
postfix-lib.pl File 63.46 KB 0755
prefs.info File 86 B 0644
rate.cgi File 1.1 KB 0755
reload.cgi File 265 B 0755
relocated.cgi File 954 B 0755
resource.cgi File 1.49 KB 0755
sasl.cgi File 3.08 KB 0755
save_afile.cgi File 580 B 0755
save_alias.cgi File 2.7 KB 0755
save_client.cgi File 1.67 KB 0755
save_ffile.cgi File 860 B 0755
save_manual.cgi File 665 B 0755
save_map.cgi File 2.59 KB 0755
save_master.cgi File 2.33 KB 0755
save_opts.cgi File 638 B 0755
save_opts_aliases.cgi File 582 B 0755
save_opts_bcc.cgi File 464 B 0755
save_opts_body.cgi File 636 B 0755
save_opts_canonical.cgi File 716 B 0755
save_opts_dependent.cgi File 609 B 0755
save_opts_header.cgi File 650 B 0755
save_opts_misc.cgi File 629 B 0755
save_opts_relocated.cgi File 637 B 0755
save_opts_sni.cgi File 553 B 0755
save_opts_transport.cgi File 636 B 0755
save_opts_virtual.cgi File 624 B 0755
save_rfile.cgi File 1.25 KB 0755
save_sasl.cgi File 2.95 KB 0755
smtp.cgi File 2.39 KB 0755
smtpd.cgi File 2.7 KB 0755
sni.cgi File 960 B 0755
start.cgi File 341 B 0755
stop.cgi File 337 B 0755
transport.cgi File 955 B 0755
view_mailq.cgi File 3.49 KB 0755
virtual.cgi File 1.05 KB 0755