[AMaViS-user] adding header to mail

Stefan Jakobs stefan at localside.net
Wed Feb 29 17:15:29 CET 2012


Replying to an very old thread:

On Friday, 8th January 2010, 19:25:36 you wrote:
> Replying to an old thread, with some new information:
> 
> On Monday 05 October 2009 20:01:29 Stefan wrote:
> > > I'm using SpamAssassin with the URICountry Plugin. Now I would like to
> > > add a X-URI-Country: header to the scanned message. Therefore I added
> > > the
> > > 
> > > following lines to the URICountry.pm module:
> > >   # Build a string of all found countries and export it as a tag
> > >   my $countries = "";
> > >   foreach my $country (keys(%countries)) {
> > >   
> > >     $countries .= uc($country) ." ";
> > >   
> > >   }
> > >   chop $countries;
> > >   $opts->{permsgstatus}->set_tag("URICOUNTRY", $countries);
> > >   
> > >   
> > >   package Amavis::Custom;
> > >   [...]
> > >   sub before_send {
> > >   
> > >     my($self,$conn,$msginfo) = @_;
> > >     my($uri_country) = $msginfo->supplementary_info('URICOUNTRY');
> > >     if (defined $uri_country && $uri_country ne '') {
> > >     
> > >         my($hdr_edits) = $msginfo->header_edits;
> > >         my($all_local) = !grep { !$_->recip_is_local }
> > >         
> > >                                @{$msginfo-per_recip_data};
> > >         
> > >         $hdr_edits->add_header('X-URI-Countries',
> > >         
> > >           $uri_country)  if $all_local;
> > >     
> > >     }
> > >   
> > >   };
> > > 
> > > I can use the URICOUNTRY tag with the command 'spamassassin' (e.g. in a
> > > template like 30_text_de.cf). But amavisd doesn't add a header because
> > > URICOUNTRY is empty (=""). Why doesn't amavisd see the content of
> > > URICOUNTRY?
> > 
> > The concept I like to use is the same as with the RelayCountry plugin.
> > I guess the problem is that the RelayCountry plugin is collecting its data
> > much earlier (in the sub function extract_metadata) as the URICountry
> > plugin. The URICountry plugin is collecting its data in the sub function
> > parsed_metadata. Both plugins set the tag in the parsed_metadata function.
> > But only the RelayCountry plugin can create an additional header (with
> > put_metadata) in the extract_metadata function.
> > 
> > So maybe the problem is that the plugin can't create an additional header
> > and assign it to the tag. But on the other side is amavisd only evaluating
> > the tag and not the header.
> > 
> > So, any ideas why amavisd can not read the content of the tag URICOUNTRY?
> 
> The $msginfo->supplementary_info gets filled in a sub call_spamassassin
> from a list of 'interesting' tags. You need to add URICOUNTRY to that list:
> 
>         for my $t (qw(TESTS AUTOLEARN AUTOLEARNSCORE SC SCRULE SCTYPE
>                       LANGUAGES RELAYCOUNTRY ASN ASNCIDR DCCB DCCR DCCREP
>                       DKIMDOMAIN DKIMIDENTITY AWLSIGNERMEAN
>                       CRM114STATUS CRM114SCORE CRM114CACHEID)) {
>           $supplementary_info{$t} = $per_msg_status->get_tag($t);
>         }
> 
> 
> With the next release of amavisd, along with SpamAssassin 3.3.0, amavisd
> will be able to 'see' added header fields as prepared by SpamAssassin
> (through its 'add_header ... _URICOUNTRY_' config option),
> and insert them into the mail header section, which will eliminate the
> need to collect SA tags and pass them through the supplementary_info
> mechanism.

I use amavisd-new 2.7.0 and SpamAssassin 3.3.2, but I can't get it to work 
without custom hooks and the TAGs (RELAYCOUNTRY, URICOUNTRY) processed by 
$supplementary_info.

I tried it with
add_header all Relay-Countries _RELAYCOUNTRY_  
add_header all URI-Countries   _URICOUNTRY_

in local.cf and an empty custom-hooks.conf, but amavisd doesn't add the 
headers. What are the necessary steps to add these headers with amavisd?

>   Mark

Thanks
Stefan


More information about the amavis-users mailing list