Found this the hard way by playing with the new filter API. When sending a plaintext message, which has an '|' in the text it would cut of the data at that point. The diff below pushes the parameter split to after handling the filter-dataline.
Fixes my usecase. OK? martijn@ Index: lka_filter.c =================================================================== RCS file: /cvs/src/usr.sbin/smtpd/lka_filter.c,v retrieving revision 1.34 diff -u -p -r1.34 lka_filter.c --- lka_filter.c 15 Jan 2019 04:49:50 -0000 1.34 +++ lka_filter.c 8 Apr 2019 06:20:26 -0000 @@ -458,14 +458,14 @@ lka_filter_process_response(const char * return 0; response = ep+1; - if ((ep = strchr(response, '|'))) { - parameter = ep + 1; - *ep = 0; - } - if (strcmp(kind, "filter-dataline") == 0) { filter_data_next(token, reqid, response); return 1; + } + + if ((ep = strchr(response, '|'))) { + parameter = ep + 1; + *ep = 0; } if (strcmp(response, "proceed") != 0 &&