Konstantin Kubatkin wrote:
Нужно это для следующего: при приходе письма надо запускать скриптик
который отсылает sms на указаный номер.
все ящики обрабатывать не надо потому что не всем это нужно, а ящиков
много.
у меня это делает сам exim:
virtual_home:
debug_print = "T: virtual_home for [EMAIL PROTECTED]"
driver = appendfile
directory = ${extract{maildir}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}
create_directory
delivery_date_add
envelope_to_add
return_path_add
maildir_format
directory_mode = 0700
mode = 0600
user = VIRTUAL_USER
group = VIRTUAL_GROUP
mode_fail_narrower = false
maildir_use_size_file
maildir_tag = ,S=$message_size
maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash).*)$
quota = ${extract{quota}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}
shadow_transport = virtual_sms
shadow_condition = ${if eq{${extract{dlvr_nom}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}}{}{no}{yes}}
virtual_sms:
debug_print = "T: virtual_sms for [EMAIL PROTECTED]"
driver = pipe
path = "/bin:/usr/bin:/usr/local/bin:/usr/local/sbin"
command = /usr/local/sbin/service_new.sh \
${sender_address} \
"${extract{dlvr_nom}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}"
user = VIRTUAL_USER
group = VIRTUAL_GROUP
return_path_add
delivery_date_add
envelope_to_add
Спасибо, буду пробовать и это тоже.
в /etc/courier/authmysqlrc
откуда то из старых версий осталась строчка
MYSQL_QUERY_LASTREAD UPDATE account SET lastlogin=now() WHERE
Mailbox='%s'
но сейчас она не срабатывает.
это такой патч был
http://home.raxnet.net/downloads/courier-imap/courier-authlib-056-sql-updates.patch
Да, я это тоже обнаружил.
и ещё - как сделать так, чтобы можно было проверить переполнение
квоты получателем при приёме письма во время smtp сессии, а не после
приёма и генерировать отлуп.
virtual_domains_check_quota:
debug_print = "R: check_quota for [EMAIL PROTECTED]"
driver = redirect
domains = +virtual_domains
user = VIRTUAL_USER
group = VIRTUAL_GROUP
condition = ${perl {check_quota} \
{${extract{maildir}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}} \
{${extract{quota}{${lookup
pgsql{MAIN_VIRTUAL_USER}{$value}fail}}}} \
{$message_size} \
}
verify_only
allow_fail
data = ${lookup pgsql{MAIN_VIRTUAL_USER}{:fail:Over
quota}{:fail:User unknown}}
exim.pl (c) не мой
# >0 - quota exceed
# $1 - dir $2 - quota $3 - message_size
sub check_quota {
$SIG{__WARN__} = sub { Exim::log_write($_[0]) }; # causes warnings to
be logged by Exim.
my $dir = $_[0];
$dir .= '/' unless $dir =~ /\/$/;
my $quota = $_[1];
my $msize = $_[2];
return 0 if $dir =~ /^$/;
return 0 if $quota <= 0;
my $verbose = 1;
my $File = $dir.'maildirsize';
my $quota_ok = 1;
if( -f $File && -r $File ) {
# Calculating the occupied size
my $size = 0;
open( MD, $File );
while( <MD> ) {
chomp;
if( /^\s*(-?\d+)\s+/ ) {
$size += $1;
}
}
close( MD );
if( $verbose ) { Exim::log_write( "check_quota: $File has used
$size bytes, message $msize bytes" ) }
if( $msize != -1 ) { $size += $msize; }
$quota_ok = ( $size < $quota ) ? 0 : 1;
return $quota_ok;
} else {
if( $verbose ) { Exim::log_write( "check_quota: Cannot open $File
file; is assumed that it does not have quota" ) }
return 0;
}
}
Я не совсем понял, а где там вызывается exim.pl ?
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]