소스 검색

[Feature] Allow to skip real action and add a header instead

tags/1.7.0
Vsevolod Stakhov 6 년 전
부모
커밋
bb56713f25
2개의 변경된 파일23개의 추가작업 그리고 0개의 파일을 삭제
  1. 21
    0
      src/libserver/milter.c
  2. 2
    0
      src/libserver/milter_internal.h

+ 21
- 0
src/libserver/milter.c 파일 보기

@@ -1482,6 +1482,12 @@ rspamd_milter_process_milter_block (struct rspamd_milter_session *session,
priv->discard_on_reject = FALSE;
}
}

elt = ucl_object_lookup (obj, "no_action");

if (elt && ucl_object_type (elt) == UCL_BOOLEAN) {
priv->no_action = ucl_object_toboolean (elt);
}
}

if (action == METRIC_ACTION_ADD_HEADER) {
@@ -1598,6 +1604,21 @@ rspamd_milter_send_task_results (struct rspamd_milter_session *session,
goto cleanup;
}

if (priv->no_action) {
msg_info_milter ("do not apply action %s, no_action is set",
str_action);
hname = g_string_new (RSPAMD_MILTER_ACTION_HEADER);
hvalue = g_string_new (str_action);

rspamd_milter_send_action (session, RSPAMD_MILTER_ADDHEADER,
hname, hvalue);
g_string_free (hname, TRUE);
g_string_free (hvalue, TRUE);
rspamd_milter_send_action (session, RSPAMD_MILTER_ACCEPT);

goto cleanup;
}

switch (action) {
case METRIC_ACTION_REJECT:
if (priv->discard_on_reject) {

+ 2
- 0
src/libserver/milter_internal.h 파일 보기

@@ -66,6 +66,7 @@ struct rspamd_milter_private {
enum rspamd_milter_io_state state;
int fd;
gboolean discard_on_reject;
gboolean no_action;
};

enum rspamd_milter_io_cmd {
@@ -151,4 +152,5 @@ enum rspamd_milter_connect_proto {
#define RSPAMD_MILTER_TEMPFAIL_MESSAGE "Try again later"
#define RSPAMD_MILTER_SPAM_HEADER "X-Spam"
#define RSPAMD_MILTER_DKIM_HEADER "DKIM-Signature"
#define RSPAMD_MILTER_ACTION_HEADER "X-Rspamd-Action"
#endif

Loading…
취소
저장