X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fdkim_transport.c;h=28d567b035936483a111622f10dcc68bf01aa6d8;hb=e04bfa34ece182e956a33fdf8986813f245d76f3;hp=866df263f047dc72b8cb3811ea48e930ca01d412;hpb=f9ba5e2255cf18092750fffacb6a9603571a2be5;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/dkim_transport.c b/src/src/dkim_transport.c index 866df263f..28d567b03 100644 --- a/src/src/dkim_transport.c +++ b/src/src/dkim_transport.c @@ -129,6 +129,7 @@ uschar * hdrs; gstring * dkim_signature; int hsize; const uschar * errstr; +uschar * verrstr; BOOL rc; DEBUG(D_transport) debug_printf("dkim signing direct-mode\n"); @@ -160,6 +161,16 @@ if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET, return FALSE; } +#ifdef EXPERIMENTAL_ARC +if (dkim->arc_signspec) /* Prepend ARC headers */ + if (!(dkim_signature = + arc_sign(dkim->arc_signspec, dkim_signature, &verrstr))) + { + *err = verrstr; + return FALSE; + } +#endif + /* Write the signature and headers into the deliver-out-buffer. This should mean they go out in the same packet as the MAIL, RCPT and (first) BDAT commands (transport_write_message() sizes the BDAT for the buffered amount) - for short @@ -268,6 +279,15 @@ if (!(dkim_signature = dkim_exim_sign(dkim_fd, 0, NULL, dkim, &errstr))) else dlen = dkim_signature->ptr; +#ifdef EXPERIMENTAL_ARC +if (dkim->arc_signspec) /* Prepend ARC headers */ + { + if (!(dkim_signature = arc_sign(dkim->arc_signspec, dkim_signature, USS err))) + goto CLEANUP; + dlen = dkim_signature->ptr; + } +#endif + #ifndef OS_SENDFILE if (options & topt_use_bdat) #endif @@ -351,7 +371,8 @@ dkim_transport_write_message(transport_ctx * tctx, { /* If we can't sign, just call the original function. */ -if (!(dkim->dkim_private_key && dkim->dkim_domain && dkim->dkim_selector)) +if ( !(dkim->dkim_private_key && dkim->dkim_domain && dkim->dkim_selector) + && !dkim->force_bodyhash) return transport_write_message(tctx, 0); /* If there is no filter command set up, construct the message and calculate