From the documentation that Jeremy quoted, I think that your script
should use "exit 0" and "exit 1" (or other non-zero value).
Your exim config snippet does not use $value in the match;
you need to do that or do the match in your script and use exit 0 *only if there is a match*.

Interesting idea to use the whois database to detect spammers.
Since whois data has expiry info and doesn't change every day,
I wonder how easy it would be to cache the results.

whois isn't as easy to script as you may wish (Tony Finch
has a rant about this at
        https://fanf.dreamwidth.org/113367.html
) but it may be sufficient for your use.

On Tue, 20 Feb 2018, Mueller via Exim-users wrote:

So when I run Exim in verbose. It turns out the expansion is working, but
nervertheless it points to false but it should be true?:


13:54:04  9383 processing "defer"
13:54:04  9383 expanding: run{/etc/exim/panama  $sender_address_domain
13:54:04  9383    result: run{/etc/exim/panama  timerunr.com
13:54:04  9383 expanding: NameCheap <-------------------------------------
13:54:04  9383    result: NameCheap
<---------------------------------------
13:54:04  9383 condition: match{run{/etc/exim/panama
$sender_address_domain}{NameCheap}
13:54:04  9383    result: false
13:54:04  9383 expanding: true
13:54:04  9383    result: true
13:54:04  9383 skipping: result is not used
13:54:04  9383 expanding: false
13:54:04  9383    result: false
13:54:04  9383 expanding: ${if match{run{/etc/exim/panama
$sender_address_domain}{NameCheap}{true}{false}}
13:54:04  9383    result: false
13:54:04  9383 check condition = ${if match{run{/etc/exim/panama
$sender_address_domain}{NameCheap}{true}{false}}
13:54:04  9383                 = false
13:54:04  9383 defer: condition test failed

So what is going wrong ?




-----Ursprüngliche Nachricht-----
Von: Jeremy Harris via Exim-users [mailto:exim-users@exim.org]
Gesendet: Dienstag, 20. Februar 2018 10:35
An: exim-users@exim.org
Betreff: Re: [exim] Get the value of an external script in a condition

On 20/02/18 09:15, Mueller via Exim-users wrote:
#!/bin/bash
out=$(/usr/bin/whois $1|grep "Registrar:"| cut -d ':' -f2| awk '{print
$1}') echo "$out"

I tried it with the $run command, but it uis always set to false!

defer condition= ${if match{run{/etc/exim/panama
$sender_address_domain}{NameCheap}{true}{false}}

The docs say:

"If the command succeeds (gives a zero return code) <string1> is expanded
and replaces the entire item; during this expansion, the standard
output/error from the command is in the variable $value. If the command
fails, <string2>, if present, is expanded and used."
--
Jeremy

--
## 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/


--
## 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/

--
## 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/

Reply via email to