Fix support of $spam_ variables at delivery time. Bug 1647
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 22 Jun 2015 12:21:04 +0000 (13:21 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 22 Jun 2015 13:12:58 +0000 (14:12 +0100)
This change is forced on us by the documentation claiming clearly
the support is there, though the code does not and never has.
The doc change that introduced the claim is 7d9f747b5ef8

doc/doc-docbook/spec.xfpt
src/src/spool_in.c
src/src/spool_out.c

index e61bc1e6ed8e668ac36aaa802486b9f9c3ec646d..6c3d155d95598898d944d4b09569174643e118a5 100644 (file)
@@ -31196,7 +31196,11 @@ it always return &"true"& by appending &`:true`& to the username.
 
 .cindex "spam scanning" "returned variables"
 When the &%spam%& condition is run, it sets up a number of expansion
-variables. These variables are saved with the received message, thus they are
+variables.
+.new
+Except for &$spam_report$&,
+.wen
+these variables are saved with the received message so are
 available for use at delivery time.
 
 .vlist
@@ -31219,6 +31223,9 @@ headers, since MUAs can match on such strings.
 .vitem &$spam_report$&
 A multiline text table, containing the full SpamAssassin report for the
 message. Useful for inclusion in headers or reject messages.
+.new
+This variable is only usable in a DATA-time ACL.
+.wen
 
 .new
 .vitem &$spam_action$&
index 1a5bf4ec8a3e0e9262b22b2aaec59faad7113247..fdc83e5a7565e1959881a25dd62eba472f6150a7 100644 (file)
@@ -298,6 +298,8 @@ tls_in.ocsp = OCSP_NOT_REQ;
 #endif
 
 #ifdef WITH_CONTENT_SCAN
+spam_bar = NULL;
+spam_score = NULL;
 spam_score_int = NULL;
 #endif
 
@@ -573,6 +575,10 @@ for (;;)
     if (Ustrncmp(p, "ender_set_untrusted", 19) == 0)
       sender_set_untrusted = TRUE;
 #ifdef WITH_CONTENT_SCAN
+    else if (Ustrncmp(p, "pam_bar ", 8) == 0)
+      spam_bar = string_copy(big_buffer + 10);
+    else if (Ustrncmp(p, "pam_score ", 10) == 0)
+      spam_score = string_copy(big_buffer + 12);
     else if (Ustrncmp(p, "pam_score_int ", 14) == 0)
       spam_score_int = string_copy(big_buffer + 16);
 #endif
index 92bf0aa64c05793386f58cf4d755b7fbec0ad5fa..39d0fea25376ebd1e87bce25997279bdac99039c 100644 (file)
@@ -218,7 +218,9 @@ if (sender_local) fprintf(f, "-local\n");
 if (local_error_message) fprintf(f, "-localerror\n");
 if (local_scan_data != NULL) fprintf(f, "-local_scan %s\n", local_scan_data);
 #ifdef WITH_CONTENT_SCAN
-if (spam_score_int != NULL) fprintf(f,"-spam_score_int %s\n", spam_score_int);
+if (spam_bar)       fprintf(f,"-spam_bar %s\n",       spam_bar);
+if (spam_score)     fprintf(f,"-spam_score %s\n",     spam_score);
+if (spam_score_int) fprintf(f,"-spam_score_int %s\n", spam_score_int);
 #endif
 if (deliver_manual_thaw) fprintf(f, "-manual_thaw\n");
 if (sender_set_untrusted) fprintf(f, "-sender_set_untrusted\n");