From 3ecf64721aea62f951481e8d39386347ced81db6 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sat, 4 Oct 2008 15:04:42 +0200 Subject: [PATCH] Add hostname match on recipient_domain and sender_domain. Signed-off-by: Florent Bruneau --- postlicyd/policy_tokens.sh | 4 ++++ postlicyd/strlist.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/postlicyd/policy_tokens.sh b/postlicyd/policy_tokens.sh index 2b2b07e..f5361c6 100755 --- a/postlicyd/policy_tokens.sh +++ b/postlicyd/policy_tokens.sh @@ -137,6 +137,10 @@ exit 0 ## reverse_client_name ## instance # +# helpers +## sender_domain +## recipient_domain +# # postfix 2.2+ ## sasl_method ## sasl_username diff --git a/postlicyd/strlist.c b/postlicyd/strlist.c index a8316a4..19fd0b2 100644 --- a/postlicyd/strlist.c +++ b/postlicyd/strlist.c @@ -49,10 +49,11 @@ typedef struct strlist_config_t { int hard_threshold; unsigned is_email :1; + unsigned is_hostname :1; + unsigned match_sender :1; unsigned match_recipient :1; - unsigned is_hostname :1; unsigned match_helo :1; unsigned match_client :1; unsigned match_reverse :1; @@ -276,6 +277,8 @@ static bool strlist_filter_constructor(filter_t *filter) CASE(HELO_NAME, helo, hostname); CASE(CLIENT_NAME, client, hostname); CASE(REVERSE_CLIENT_NAME, reverse, hostname); + CASE(SENDER_DOMAIN, sender, hostname); + CASE(RECIPIENT_DOMAIN, recipient, hostname); CASE(SENDER, sender, email); CASE(RECIPIENT, recipient, email); #undef CASE @@ -339,6 +342,9 @@ static filter_result_t strlist_filter(const filter_t *filter, const query_t *que if ((!part && trie_lookup(trie, rev ? reverse : normal)) \ || (part && trie_prefix(trie, rev ? reverse : normal))) { \ sum += weight; \ + if (sum >= config->hard_threshold) { \ + return HTK_HARD_MATCH; \ + } \ } \ } \ } @@ -349,6 +355,8 @@ static filter_result_t strlist_filter(const filter_t *filter, const query_t *que LOOKUP(helo, helo_name); LOOKUP(client, client_name); LOOKUP(reverse, reverse_client_name); + LOOKUP(recipient, recipient_domain); + LOOKUP(sender, sender_domain); } #undef LOOKUP if (sum >= config->hard_threshold) { -- 2.20.1