Anyone knows why this Regexp, embedded in a text substitution with sg,
is not working (i.e. no replacement get's done)?

headers_add     = "Subject: [$local_part] ${sg {this is a [test] for \
                   not having done so}{\N\[\w*\]\s\N}{}}"

having this line in exim4.conf returns the following subject:
  [sysop] this is a [test] for not having done so

testing the pattern with pcretest works and even exim -be
works like charm.

[EMAIL PROTECTED]:~$ exim4 -be
 > headers_add     = "Subject: [$local_part] ${sg {this is a [test] for \
                    not having done so}{\N\[\w*\]\s\N}{}}"
headers_add     = "Subject: [] this is a for not having done so"

what I'm trying to achieve is to remove any word-character used in
brackets and leave the rest of the subject intact. the string feeded to 
sg is currently a test, if working I would use $h_subject: instead.
the whole config is needed for running a simplified mailinglist.

my config is exim 4.50 on debian sarge with a custom configfile
guided from the specs (see full listing below).

thanks in advanced for any hints, Marcel



/etc/exim4/exim4.conf
###### the MAIN section ######

primary_hostname = shran.labex.ch

# host and labex.ch is defined as local domain
domainlist local_domains = @ : 127.0.0.1 : labex.ch

#only localhost would be allowed (if enabled?)
hostlist   relay_from_hosts = 127.0.0.1

#### Definiert den ACL-Part (wird zu SMTP-Zeit aufgerufen)
# SMTP: RCPT (wird fuer jede Adresse einmal aufgerufen)
acl_smtp_rcpt = acl_check_rcpt

# FQDN oder wie wird der domainname zusammengesetzt. Default mal leer
# qualify_domain =
# qualify_recipient =

# obwohl im RFC, keine mail mit der form [EMAIL PROTECTED] annehmen
# allow_domain_literals

# trigger guard, falls mal durch einen config-fehler eine mail als root 
transportiert werden sollte
# ist eigentlich schon waehrend dem compilieren fix gesetzt
never_users = root

# do reverse lookup on all remote hosts
host_lookup = *

# disable ident-calls
rfc1413_hosts = *
rfc1413_query_timeout = 0s

percent_hack_domains =

#convert bounce-msg in the queue to frozen after 2 days and leave them 
for a month
ignore_bounce_errors_after = 2d
timeout_frozen_after = 30d

# defaultstuff plus smtp-infos
#log_selector = +smtp_connection +smtp_protocol_error +smtp_syntax_error 
+deliver_time +received_recipients
log_selector = +all

# wem wird SMTP-AUTH angeboten: jedermann aus worf und localhost
# auth_advertise_hosts = !worf : !127.0.0.1

###### the Auth section #######
begin authenticators
# annika als server
# fixed_cram:
# driver        = cram_md5
#  public_name   = CRAM-MD5
#  server_secret = ${if eq{$1}{bambole}{oRn2hoLb}fail}

# annika als client gegenueber calisto als smarthost
fixed_login :
   driver       = plaintext
   public_name  = LOGIN
   client_send   = : smtp : hepwsm

###### the ACL section (aka shall we accept?) ######
begin acl

#----------------------------
# this one runs after each RCPT command
acl_check_rcpt:

   ##### accept unconditionally all recipients in messages that are #####
   # submitted by SMTP from local processes using the standard
   # input and output (that is, not using TCP/IP)
   accept  hosts = :

   ##### Character Test #####
   # denies bad characters in the local part for local domains
#  deny    domains       = +local_domains
#         log_message   = $sender_host_address has bad characters
#          local_parts   = ^[.] : [EMAIL PROTECTED]/|]

   # and be less restrict with all other (routed) domains
#  deny    domains       = !+local_domains
#         log_message   = $sender_host_address has bad characters
#          local_parts   = ^[./|] : [EMAIL PROTECTED] : ^.*/\\.\\./

   ##### accepts the postmaster@ for all domains listed in local_domains 
but only sent from worf or localhost #####
   accept  hosts                = worf : 127.0.0.1
          local_parts   = postmaster : root
           domains       = +local_domains

   ##### check of the sender could be reached (basic verification checks 
only the domain) #####
   #  require verify       = sender

   ##### Accept without auth only, if from worf or localhost #####
   # accepts the incoming recipient address if its domain is one of the 
local domains
   accept  hosts                = worf : 127.0.0.1
          domains       = +local_domains
           endpass
           message       = unknown user
           # verify        = recipient

   # accept if authenticated with CRAM-MD5
   # accept  authenticated = fixed_cram

   ##### the end #####
   # if a msg reaches this, it will be denied (cause its the end, baby)
   deny    message       = relay not permitted

###### the ROUTER section (aka where to go!) ######
begin routers

# checks if the msg is spam-tagged and user want's to keep it. else delete
   delete_spam:
        driver          = accept
        local_parts     = ! /etc/exim4/spam.lovers
        condition       = "${if and {\
                                {def:h_X-Spam-Status:} \
                                {match {$h_X-Spam-Status:}{Yes}} \
                           } {1}{0}}"
        transport       = sent_to_bin

# checks, if the user is in /etc/aliases and replaces them accordingly
   system_aliases:
        driver          = redirect
        allow_fail
        allow_defer
        data            = ${lookup{$local_part}lsearch{/etc/aliases}}
        # user          = exim
        file_transport  = address_file
        pipe_transport  = address_pipe

# checks, if the mail is sent to a mailinglist
   lists:
        driver          = redirect
        file            = /etc/exim4/lists/$local_part
        headers_remove  = Subject : Reply-to
        headers_add     = "Subject: [$local_part] ${sg {this is a \
                           [test] for not having done so\       
                           }{\N\[\w*\]\s\N}{}}"
#       headers_add     = "Subject: [$local_part] ${sg {$h_subject: \
                           }{\N\[\w*\]\s\N}{}}"
        forbid_pipe
        forbid_file
        skip_syntax_errors


#handles all connections except @bambole.ch & @annika.labex.ch
   dnslookup:
        driver          = dnslookup
        domains         = ! +local_domains
        transport       = smarthost
        ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
        no_more

# after all, only valid localusers stay (otherwise it get's bounced)
#  localuser:
#       driver          = accept
#       check_local_user
#       transport       = local_delivery

# after all, only valid localusers stay (otherwise it get's bounced)
   procmail:
        driver          = accept
        check_local_user
        transport       = procmail_pipe

###### the TRANSPORT section (aka what to do!) ######
begin transports

# deletes the message without further notice
   sent_to_bin:
        driver          = appendfile
        file            = /dev/null

# schickt alles an calisto
smarthost:
        driver          = smtp
         hosts          = calisto.umlaufbahn.ch
        hosts_require_auth = calisto.umlaufbahn.ch
        hosts_override  

# deliver over SMTP, all options are default
   remote_smtp:
        driver          = smtp

# deliver local
   local_delivery:
        driver          = appendfile
        file            = /var/mail/$local_part
        delivery_date_add
        envelope_to_add
        return_path_add
        group           = mail
        mode            = 0660

# deliver through procmail
procmail_pipe:
        driver          = pipe
        command         = /usr/bin/procmail -d $local_part
        group           = mail
        check_string    = "From "
        escape_string   = ">From "
        delivery_date_add
        envelope_to_add
        return_path_add

# handles connection over pipes (used by /etc/alias)
   address_pipe:
        driver          = pipe
        return_output

# handling delivers to files caused from redirection (etc/alias)
   address_file:
        driver          = appendfile
        delivery_date_add
        envelope_to_add
        return_path_add

###### the RETRY section (aka what to do if you can't deliver!) ######
begin retry
*   *   F,2h,15m; G,16h,1h,1.5; F,4d,6h

# This causes any temporarily failing address to be retried every 15 
minutes for 2 hours, then at
# intervals starting at one hour and increasing by a factor of 1.5 until 
16 hours have passed, then
# every 6 hours up to 4 days. If an address is not delivered after 4 
days of failure, it is bounced.



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

Reply via email to