Re: [exim] router condition, problem with "and"

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Jonas Forsberg
Date:  
À: exim-users
Sujet: Re: [exim] router condition, problem with "and"
On Thu, 19 Aug 2010 10:12:29 +0200, Marcin Mirosław <marcin@???>
wrote:
> W dniu 19.08.2010 09:06, Jonas Forsberg pisze:
>>
>>
>> Hello.
>> I am fairly new to exim4, so please be patient with me.
>>
>> I'm
>> trying to get a condition for a router to work as I expect, but I
>> clearly have issues understanding the syntax.
>>
>> The condition consists of
>> two parts:
>>
>> 1st a check in the Subject field after a string, that I have
>> got to work.
>>
>> condition = ${lookup mysql{
>> SELECT email FROM users
>>
>> WHERE email='${quote_mysql:$local_part}@${quote_mysql:$domain}'}
>>
>> {true}{false}}
>>
>> 2nd a check in a MySQL table, which I have been
>> working.
>>
>> condition = ${if match
>> {$h_subject:}{N^KalleKalas$N}{yes}{no}}
>>
>> but to combine those two into a
>> "and rule" makes my head spin. What ever I do exim4 logs that it can not
>> expand the condition.
>
> Hello!
> If you want to join this two condition with logical "and", it would be
> looks in this way:
>
> condition = ${if and{
> {lookup mysql{SELECT 1 FROM users WHERE
> email='${quote_mysql:$local_part}@${quote_mysql:$domain}'}}
> {if match {$h_subject:}{N^KalleKalas$N}{yes}{no}}}
> }
>
> I can't test it, i'm not sure about sql query (mayby it shoud be write
> in such way: {eq {1}{SELECT 1 FROM users WHERE
> email='${quote_mysql:$local_part}@${quote_mysql:$domain}'}
> )
>
> Regards,
> Marcin
>
> --
> xmpp (jabber): marcin [at] mejor.pl


Thanks for trying to help out.

Let me try to break down things a bit.

This works as I said before:


condition = ${if match {$h_subject:}{\N^kallekalas$\N}{yes}{no}}

if I replace that with a very stupid rule
condition = ${if and{ \
                     {eq \
                        {1} \
                        {1} \
                     } \
                     {eq \
                        {1} \
                        {1} \
                     } \
                   } \
                   {yes}{no} \
             }



it works like a charm. Changing one of the 1 to a 0 will not trigger
the condition.
I've broken down the "and" into several lines just to make it more
visible for me...

When I try to replace the first eq condition with my subject match like
this
condition = ${if and{ \
                     {match \
                        {$h_subject:} \
                        {\N^kallekalas$\N} \
                        {yes}{no} \
                     } \
                     {eq \
                        {1} \
                        {1} \
                     } \
                   } \
                   {yes}{no} \
             }


and it looks ok to me, but I get this in the mainlog
* 1Om1IO-0005ro-Bs failed to expand condition "${if and{ {match
{$h_subject:} {\N^kallekalas$\N} {yes}{no} } {eq {1} {1} } } {yes}{no}
}" for vmail_init router: missing } at end of condition inside "and"
group

I just can't understand why....

Cheers
Jonas