smeserver-mailsorting/root/etc/e-smith/templates-user/.procmailrc/60user

168 lines
4.7 KiB
Plaintext
Raw Normal View History

{
use esmith::config;
use esmith::db;
my %processmail;
tie %processmail, 'esmith::config', '/home/e-smith/db/processmail';
# get users rules
my @pmRules = ();
foreach (sort keys %processmail)
{
push (@pmRules, $_)
if (db_get_type(\%processmail, $_) eq $USERNAME);
}
# if they have rules add them to the templete
my $pmRules = @pmRules || '0';
if ($pmRules > 0)
{
$OUT .= "\n";
$OUT .= "# ---- user rules ------------------\n";
my $pmRule;
foreach $pmRule (sort @pmRules)
{
my $basis = db_get_prop(\%processmail, $pmRule, "basis") || '';
my $criterion = db_get_prop(\%processmail, $pmRule, "criterion") || '';
my $basis2 = db_get_prop(\%processmail, $pmRule, "basis2") || '';
my $secondtest = db_get_prop(\%processmail, $pmRule, "basis2") || '';
my $criterion2 = db_get_prop(\%processmail, $pmRule, "criterion2") || '';
my $deliver = db_get_prop(\%processmail, $pmRule, "deliver") || '';
my $deliver2 = db_get_prop(\%processmail, $pmRule, "deliver2") || '';
my $copy = db_get_prop(\%processmail, $pmRule, "copy") || '';
my $action = db_get_prop(\%processmail, $pmRule, "action") || '';
my $action2 = db_get_prop(\%processmail, $pmRule, "action2") || '';
#allow for spaces _ to \_
unless (($zarafa1 eq 'enabled') || ($zarafa2 eq 'enabled'))
{
$deliver =~ s/ /\\ /g;
$deliver2 =~ s/ /\\ /g;
}
foreach ($basis, $basis2)
{
## headers include the basis in the criterion
if ($_ eq 'headers')
{
$_ = '';
}
## size doesn't use '^. *' but needs a space
if ($_ ne '<')
{
if ($_ ne '>')
{
#[sme 2264] remove .* after TO_ macro
if ($_ eq 'TO_')
{
#[sme 6061 remove space after TO_
$_ = "^"."$_"."";
}
else
{
$_ = "^"."$_".".*";
}
}
else
{
$_ = $_.' ';
}
}
else
{
$_ = $_.' ';
}
}
##construct the deliver line
if (($action eq 'sort') || ($action eq 'create'))
{
# to a folder
if (($zarafa1 eq 'enabled') || ($zarafa2 eq 'enabled'))
{
if ($deliver eq 'junkmail')
{ $deliver = "| zarafa-dagent -j $USERNAME"; }
else
{ $deliver = "| zarafa-dagent $USERNAME -C -F 'Inbox\\$deliver'"; }
}
else
{ $deliver = "\$MAILDIR/".'.'."$deliver"."/"; }
}
elsif ($action eq 'forward')
{
# to an email
$deliver = "! "."$deliver";
}
elsif ($action eq 'delete')
{
# delete it
$deliver = '/dev/null';
}
else
{
# freeform
$deliver = "$deliver";
}
##construct the 2nd deliver line
if ($action2 eq 'sort')
{
# to a folder
if (($zarafa1 eq 'enabled') || ($zarafa2 eq 'enabled'))
{
if ($deliver eq 'junkmail')
{ $deliver = "| zarafa-dagent -j $USERNAME"; }
else
{ $deliver = "| zarafa-dagent $USERNAME -C -F 'Inbox\\$deliver'"; }
}
else
{ $deliver = "\$MAILDIR/".'.'."$deliver2"."/"; }
}
elsif ($action2 eq 'forward')
{
# to an email
$deliver2 = "! "."$deliver2";
}
## construct the rule
if ($secondtest ne '')
{
$secondtest = "* "."$basis2"."$criterion2"."\n";
}
if ($copy eq 'no')
{
$OUT .= "\n";
$OUT .= ":0\n";
$OUT .= "* "."$basis"."$criterion"."\n";
$OUT .= $secondtest;
$OUT .= "$deliver\n";
}
elsif ($copy eq 'yes' && $action2 eq 'inbox')
{
$OUT .= "\n";
$OUT .= ":0 c\n";
$OUT .= "* "."$basis"."$criterion"."\n";
$OUT .= $secondtest;
$OUT .= "$deliver\n";
}
else
{
$OUT .= "\n";
$OUT .= ":0\n";
$OUT .= "* "."$basis"."$criterion"."\n";
$OUT .= $secondtest;
$OUT .= "\{\n";
$OUT .= " :0 c\n";
$OUT .= " $deliver\n";
$OUT .= " \n";
$OUT .= " :0\n";
$OUT .= " $deliver2\n";
$OUT .= "\}\n";
}
}#foreach rule
}#if rules exist
}