[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