Yes, Dspam works well...still. It clobbers all my spam. It catches 3 to
4 times the spam that spamassassin catches...not sure why it's not more
popular.
Anyway, I had to change my stuff dot patch because of I may have been
misusing buffer_cat and buffer_ncat. Below is the updated patch:
--- ./src/dspam.c 2021-05-20 15:07:38.717943662 -0600
+++ ./src/dspam.new.c 2021-05-20 15:00:16.854513189 -0600
@@ -103,6 +103,54 @@
#define USE_SMTP (_ds_read_attribute(agent_config,
"DeliveryProto") && !strcmp(_ds_read_attribute(agent_config,
"DeliveryProto"), "SMTP"))
#define LOOKUP(A, B) ((_ds_pref_val(A, "localStore")[0]) ?
_ds_pref_val(A, "localStore") : B)
+const char * stuff_dot(const char * message);
+/*
+** const char * stuff_dot(char * message);
+**
+** DESCRIPTION
+** Stuff '.' where necessary for SMTP Protocol
+**
+** INPUT ARGUMENTS
+** const char * message
+**
+** RETURN VALUES
+** Returns const char * msg
+**
+** Author
+** Eric C. Broch
+**
+*/
+const char * stuff_dot(const char * message) {
+
+ char * msg;
+ int lmessage = strlen(message);
+ if (!lmessage) {
+ LOGDEBUG("stuff_dot: Message 0 length");
+ return NULL;
+ }
+ msg = (char *) malloc(lmessage);
+ if ( msg == NULL ) {
+ LOGDEBUG("stuff_dot: Unable to allocate memory, size: %d",lmessage);
+ return NULL;
+ }
+ int i = 0, j = 0,k = 0;
+ while(i<lmessage) {
+ msg[j] = message[i];
+ if ((message[i] == '\n') && (message[i + 1] && message[i + 1] ==
'.')) {
+ k++;
+ msg = (char *) realloc(msg,lmessage+k);
+ if ( msg == NULL ) {
+ free(msg);
+ LOGDEBUG("stuff_dot: Unable to reallocate memory, size: %d",
lmessage+k);
+ return NULL;
+ }
+ msg[++j] = '.';
+ }
+ i++;
+ j++;
+ }
+ k++;msg = (char *) realloc(msg,lmessage+k); if ( msg == NULL ) {
free(msg);LOGDEBUG("stuff_dot: Unable to NULL msg, size: %d",
lmessage+k);return NULL;} msg[lmessage+k-1]=0;return msg;
+}
int
main (int argc, char *argv[])
@@ -977,7 +1025,18 @@
(result == DSR_ISSPAM) ? "SPAM" : "INNOCENT");
if (mailer_args == NULL) {
- fputs (message, stream);
+ /* calling program: dspamc */
+ if (stream == ATX->sockfd) {
+ /* stuff dots before sending back to dspam client */
+ /* otherwise trunction of email can occur, Eric Broch 04-12-2021 */
+ char * msg = stuff_dot(message);
+ fputs(msg,stream);
+ free(msg);
+ }
+ /* calling program: dspam */
+ else {
+ fputs(message,stream);
+ }
return 0;
}
--- ./src/client.c 2012-04-11 12:48:33.000000000 -0600
+++ ./src/client.new.c 2021-05-19 16:51:42.793261161 -0600
@@ -228,6 +228,14 @@
exitcode = 99;
}
} else {
+ /* de-stuff dots from server, 04-12-2021, Eric C. Broch, 7 lines */
+ if((line[0] && line[0]=='.') && (line[1] && line[1]=='.')) {
+ size_t i, len = strlen(line);
+ for(i=0;i<len;i++){
+ line[i]=line[i+1];
+ }
+ line[len-1]=0;
+ }
printf("%s\n", line);
}
free(line);
On 7/2/2021 5:19 AM, Marco wrote:
Il 12/04/2021 21:44, Eric Broch has written:
dspam-users,
I'm not sure if anyone cares (anymore), but I still use dspam and it
works great.
I found one solution to the truncation of emails when dspamc (dspam
--client) is called (patch below).
Hello,
thank you. We can hope a day for a new Dspam life. Its working
principles are very valuable.
Regards
Marco
_______________________________________________
Dspam-user mailing list
Dspam-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspam-user
_______________________________________________
Dspam-user mailing list
Dspam-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspam-user