Private
Server IP : 195.201.23.43  /  Your IP : 3.16.83.64
Web Server : Apache
System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64
User : kdecoratie ( 1041)
PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/usermin/mailbox/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /usr/share/usermin/mailbox/auto.pl
#!/usr/bin/perl
# Scan through all folders, and apply the scheduled deletion policy for each
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';

our $no_acl_check++;
$ENV{'REMOTE_USER'} = getpwuid($<);
require './mailbox-lib.pl';
my @folders = &list_folders();

&open_read_hash();		# hack to force correct DBM mode

foreach my $f (@folders) {
	# Skip folders for which clearing isn't active
	next if ($f->{'nowrite'});
	my $auto = &get_auto_schedule($f);
	next if (!$auto || !$auto->{'enabled'});

	my @delmails;
	my $headersonly = $auto->{'all'} == 2 ? 0 : 1;
	if ($auto->{'mode'} == 0) {
		# Find messages that are too old
		my @mails = &mailbox_list_mails(undef, undef, $f, $headersonly);
		my $cutoff = time() - $auto->{'days'}*24*60*60;
		my $future = time() + 7*24*60*60;
		foreach my $m (@mails) {
			my $time = &parse_mail_date($m->{'header'}->{'date'});
			$time ||= $m->{'time'};
			if ($time && $time < $cutoff ||
			    !$time && $auto->{'invalid'} ||
			    $time > $future && $auto->{'invalid'}) {
				push(@delmails, $m);
				}
			}
		}
	else {
		# Cut folder down to size, by deleting oldest first
		my $size = &folder_size($f);
		my @mails = &mailbox_list_mails(undef, undef, $f, $headersonly);
		while($size > $auto->{'size'}) {
			last if (!@mails);	# empty!
			my $oldmail = shift(@mails);
			push(@delmails, $oldmail);
			$size -= $oldmail->{'size'};
			}
		}

	my $dest;
	if (@delmails) {
		if ($auto->{'all'} == 1) {
			# Clear the whole folder
			&mailbox_empty_folder($f);
			}
		elsif ($auto->{'all'} == 0) {
			# Just delete mails that are over the limit
			&mailbox_delete_mail($f, reverse(@delmails));
			}
		elsif ($auto->{'all'} == 2) {
			# Move to another folder
			($dest) = grep { &folder_name($_) eq $auto->{'dest'} }
				       @folders;
			if (!$dest) {
				print STDERR "destination folder ".
					    "$auto->{'dest'} does not exist!\n";
				next;
				}
			&mailbox_move_mail($f, $dest, reverse(@delmails));
			}
		}
	}
Private