X-Git-Url: http://git.jankratochvil.net/?p=PerlMail.git;a=blobdiff_plain;f=perlmail-accept;h=9cea4a80b6bc3ef25dd0dac9540a30188c7997e4;hp=9ba5cf57dea0b80d533a8a80b4f2b56805fc8674;hb=0bbe2cd392f227450f9096b267db413744e3a0af;hpb=3ed0a9ec3b0f25730b258c20815dc1d7d44e7192 diff --git a/perlmail-accept b/perlmail-accept index 9ba5cf5..9cea4a8 100755 --- a/perlmail-accept +++ b/perlmail-accept @@ -75,6 +75,7 @@ our $procmailFROM_MAILER=qr'^(((Resent-)?(From|Sender)|X-Envelope-From):|>?From my $opt_mode; my $opt_smstest; # 1 or $smscount my $opt_idle; +my $opt_dry; sub process; @@ -431,10 +432,9 @@ sub smssend { my($ignorenewmail,$smscount,%args)=@_; - my %aliases=muttrc_aliases(); my $text=audit_sms( "subject"=>unmime($Audit->subject()), - "from"=>[ map({ $_=$_->address(); $_="\L$_"; $aliases{$_} || $_; } Mail::Address->parse(unmime($Audit->from()))) ], + "from"=>[ Mail::Address->parse(unmime($Audit->from())) ], "body"=>substr(body_simple(),0,$MaxBodySMS*(1+0.25*$smscount)), %args); my $texthead=""; @@ -526,15 +526,16 @@ my($folder,$profile,%args)=@_; $profile=$store_profile if !$profile; my %do=map({ (!/=/ ? ($_=>1) : ($`=>$')); } profile_eval($profile)); - Sys::Syslog::syslog("info","%s%s: %s: %s", + Sys::Syslog::syslog("info","%s%s%s: %s: %s", + (!$opt_dry ? "" : "--dry: "), (!$store_ignore ? "" : "IGNORED[$store_ignore]: "), map({ cut($_); } $folder,address_show(unmime($Audit->from())),unmime($Audit->subject())), ) - if $do{"syslog"}; + if $do{"syslog"} || $opt_dry; $folder=~s/;.*$//s; $folder="$Mail/".$' if $folder=~/^=/; push @AuditStored,$folder if $do{"did"}; - return if $store_ignore; + return if $store_ignore || $opt_dry; $DoBell++ if $do{"bell"}; write_message($folder); smssend_tryall $store_ignorenewmail,$do{"sms"},%args if $do{"sms"}; @@ -559,6 +560,7 @@ sub write_message { my($folder)=@_; + return if $opt_dry; local *F; open F,">>$folder" or do { warn "Append \"$folder\": $!"; return 0; }; { @@ -636,7 +638,8 @@ sub Received_for my($for)=($hdr=~/\bfor\s+\?\b/); return $for if !wantarray(); push @r,$for if $for; - my($from,$fromaddr)=($hdr=~/\bfrom\s+(\S+)\b.*?\[((?:\d{1,3}\.){3}\d{1,3})\]/); + my($from,$fromaddr)=($hdr=~/\bfrom\s+(?:(\S+)\b.*?)??\[((?:\d{1,3}\.){3}\d{1,3})\]/); + $from=$fromaddr if !defined $from; push @r,"$from:$fromaddr" if $from; } return @r; @@ -742,7 +745,7 @@ sub muttrc_aliases for my $addrobj (Mail::Address->parse($')) { my $addr=$addrobj->address(); my $ref=\$r{"\L$addr"}; - $$ref=$key; # use always the last occurence to prefer nicks + $$ref=$key if !$$ref; # use always the first occurence to prefer nicks } } return %r; @@ -866,6 +869,7 @@ $Getopt::Long::ignorecase=0; die "GetOptions error" if !Getopt::Long::GetOptions( "inetd" ,sub { $opt_mode=\&inetd; }, "stdin" ,sub { $opt_mode=\&stdin; }, + "dry" ,\$opt_dry, "smstest:s",sub { $opt_mode=\&stdin; $opt_smstest=($_[1] || 1); }, "idle!" ,\$opt_idle, "idletest" ,sub { syslogging_restore(); print((defined($_=useridle()) ? $_ : "")."\n"); exit 0; },