Re: [exim] Subject String Manipulation

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Sebastian Nielsen
Date:  
À: 'Mailing List'
Sujet: Re: [exim] Subject String Manipulation
Something like this should work:

    remove_header = subject
    add_header = Subject: ${rfc2047:${sg{$h_subject:}{\[EXTERNAL\]}{}}}


(You need to condition this for outgoing mails too)

The trick is the rfc2047 command.

-----Ursprungligt meddelande-----
Från: Ole Klinck via Exim-users <exim-users@???>
Skickat: den 16 mars 2022 11:51
Till: exim-users@???
Ämne: [exim] Subject String Manipulation



Heya,



I am currently trying to distinguish between internal Users and External
users. For that I want to add [EXTERNAL] to the beginning of the Subject of
incoming Mails. (ie. I want to add this only for messages coming from a
domain which isn't owned by us). This part is actually working fine. The
Problem I am now facing, is to remove the [EXTERNAL] for outgoing mails.
This is important for replies, since these contain "Re: [EXTERNAL] <original
subject>". Not only is this not great when sending replies to other entities
outside of our organisation, it also gets really funny in long chains...
"[EXTERNAL] Re: [EXTERNAL] Re: [EXTERNAL] Re: [EXTERNAL] <original
subject>".

Problem is, that I have no clue how to remove the [EXTERNAL]. I found no
solution which works in exim itself, so I tried to push the Mail to Perl in
acl_check_data and let Perl do the heavy lifting. I gave Perl
$header_subject, stripped the [EXTERNAL] with Perls regex string
manipulation, applied the RFC 2047 encoding to the string (in case that
there are non ASCII characters in the subject), returned the result to Exim
and Exim embedded that with "add_header = Subject: $
{perl{subject_extern}}". This worked great in my test environment but broke
in Production. Apparently Exim sometimes failed to decode the message and
just gave the RFC 2047 string to Perl, which then got encoded with RFC 2047
again. This double encoded header resulted in a RFC 2047 string in the
subject line in HCL Notes. I have yet to figure out why Exim sometime
decides to not decode messages with $header_subject.

My current iteration gives the subject with $rheader_subject to Perl, and
after that I use Encode::MIME::Header in Perl to decode the header, apply my
String manipulation, reencode the Message and give the result back to Exim.
Again, works great in my testing environment but breaks in Production. For
some reason sometimes the BODY of the message gets encoded with RFC 2047?
Yeah no clue whats up with that. Oh and sometimes the header gets cut off at
around 15 characters.

So yeah.. before I bash my head further against a wall, is there a Proper
way in Exim to do that?



--- Ole
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/