Re: [exim] Delting HTML attachments

Top Page
Delete this message
Reply to this message
Author: Cyborg
Date:  
To: exim-users
Subject: Re: [exim] Delting HTML attachments
Am 05.04.2013 18:10, schrieb Graeme Fowler:
> On Fri, 2013-04-05 at 16:51 +0100, Mark Goodge wrote:
>> Exim's job as a Mail Transfer Agent is to transfer mail. The same
>> applies to every other MTA. It's what they're for.
>>
>> If you want a Mail Editing Agent, then these are available. Some of them
>> may even be available as an external filter through which an MTA, such
>> as exim, can pass mail.
> And this is exactly what the OP asked for.
>
> There are several ways to do it. In terms of decreasing "ease" (in my
> opinion) of application:
>
> 1. A transport filter applied at the mailbox delivery level, or
> 1a. A pipe transport to a script/program which strips the necessary
> content and delivers the message to the mailbox
>
> 2. A system filter applied to all messages which calls a pipe
>


I think, a Transport Agent should not be used to mess with mails beyond
the absolutly needed at smtp level ( like Spam/virus- rejects ).

This said,

1. define a router :

autoresponder:
driver = redirect
domains = +local_domains
condition = ${if </WHATSNEEDEDTOIDENTIFYIT/>}{yes}{no}}
data = /usr/sbin/htmlremover
allow_fail
allow_defer
no_verify
no_expn
check_ancestor
unseen
more
pipe_transport = address_pipe
reply_transport = address_reply
redirect_router = autoresponder

2.

/usr/sbin/htmlremover can be a bashwrapper for java or perl / php ,
whatever you like.

Take the data delivered via stdin : ( java )

static public void main(String[] args) {

                 try {


                         BufferedReader ins = new BufferedReader(new 
InputStreamReader( System.in ));
                         String lines   = "";
                         String output  = "";
                         while ((lines = ins.readLine())!=null) {


                                 If ( line_youMayPass ) 
output=doWhatYouNeed(lines);
                         }


     ....
     Message msg = new MimeMessage(session);
     ...
     msg.setContent(output,contentType);
     ....
     Transport.send(msg);


                 }
}


and send it to you again.. Don't forget to add a custom header, which
you use to bypass the router condition !

3. Job done, without messing in exim with your mailcontent.