Browse Source

[Minor] Convert milter macros to HTTP headers

tags/1.6.0
Vsevolod Stakhov 7 years ago
parent
commit
b058b87fa1
2 changed files with 54 additions and 0 deletions
  1. 52
    0
      src/libserver/milter.c
  2. 2
    0
      src/libserver/protocol_internal.h

+ 52
- 0
src/libserver/milter.c View File

@@ -424,6 +424,11 @@ rspamd_milter_process_command (struct rspamd_milter_session *session,
msg_debug_milter ("got macro: %T -> %T",
name_tok, value_tok);

if (rspamd_ftok_cstr_equal (name_tok, "{mail_host}", FALSE)) {
session->hostname = rspamd_fstring_assign (session->hostname,
value_tok->begin, value_tok->len);
}

cmdlen -= zero_val - pos;
pos = zero_val + 1;
}
@@ -1085,6 +1090,51 @@ rspamd_milter_session_ref (struct rspamd_milter_session *session)
return session;
}

#define IF_MACRO(lit) RSPAMD_FTOK_ASSIGN (&srch, (lit)); \
found = g_hash_table_lookup (session->macros, &srch); \
if (found)

static void
rspamd_milter_macro_http (struct rspamd_milter_session *session,
struct rspamd_http_message *msg)
{
rspamd_ftok_t *found, srch;

/*
* We assume postfix macros here, sendmail ones might be slightly
* different
*/

if (!session->macros) {
return;
}

IF_MACRO("i") {
rspamd_http_message_add_header_len (msg, QUEUE_ID_HEADER,
found->begin, found->len);
}

IF_MACRO("{daemon_name}") {
rspamd_http_message_add_header_len (msg, MTA_TAG_HEADER,
found->begin, found->len);
}

IF_MACRO("{v}") {
rspamd_http_message_add_header_len (msg, USER_AGENT_HEADER,
found->begin, found->len);
}

IF_MACRO("{cipher}") {
rspamd_http_message_add_header_len (msg, TLS_CIPHER_HEADER,
found->begin, found->len);
}

IF_MACRO("{tls_version}") {
rspamd_http_message_add_header_len (msg, TLS_VERSION_HEADER,
found->begin, found->len);
}
}

struct rspamd_http_message *
rspamd_milter_to_http (struct rspamd_milter_session *session)
{
@@ -1125,5 +1175,7 @@ rspamd_milter_to_http (struct rspamd_milter_session *session)
}
}

rspamd_milter_macro_http (session, msg);

return msg;
}

+ 2
- 0
src/libserver/protocol_internal.h View File

@@ -75,6 +75,8 @@
#define USER_AGENT_HEADER "User-Agent"
#define MTA_TAG_HEADER "MTA-Tag"
#define PROFILE_HEADER "Profile"
#define TLS_CIPHER_HEADER "TLS-Cipher"
#define TLS_VERSION_HEADER "TLS-Version"


#endif //RSPAMD_PROTOCOL_INTERNAL_H

Loading…
Cancel
Save