X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ftransport.c;h=aca33762b12c10036da01ac4a3c7567ebe8632b5;hb=45f35410b4bdd59614dd9811ee99aea6a5d1164c;hp=b8a4636b60818fe2cc4220d5ff8de4ebb7ab2cec;hpb=4c04137d73637107669e02b21f890387aaa2ef34;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/transport.c b/src/src/transport.c index b8a4636b6..aca33762b 100644 --- a/src/src/transport.c +++ b/src/src/transport.c @@ -1062,18 +1062,16 @@ Returns: TRUE on success; FALSE (with errno) for any failure BOOL dkim_transport_write_message(int out_fd, transport_ctx * tctx, - struct ob_dkim * dkim) + struct ob_dkim * dkim, const uschar ** err) { int dkim_fd; int save_errno = 0; BOOL rc; uschar * dkim_spool_name; -int sread = 0; -int wwritten = 0; -uschar *dkim_signature = NULL; -int siglen = 0; +uschar * dkim_signature = NULL; +int sread = 0, wwritten = 0, siglen = 0, options; off_t k_file_size; -int options; +const uschar * errstr; /* If we can't sign, just call the original function. */ @@ -1088,6 +1086,7 @@ if ((dkim_fd = Uopen(dkim_spool_name, O_RDWR|O_CREAT|O_TRUNC, SPOOL_MODE)) < 0) /* Can't create spool file. Ugh. */ rc = FALSE; save_errno = errno; + *err = string_sprintf("dkim spoolfile create: %s", strerror(errno)); goto CLEANUP; } @@ -1109,7 +1108,7 @@ if (!rc) /* Rewind file and feed it to the goats^W DKIM lib */ dkim->dot_stuffed = !!(options & topt_end_dot); lseek(dkim_fd, 0, SEEK_SET); -if ((dkim_signature = dkim_exim_sign(dkim_fd, dkim))) +if ((dkim_signature = dkim_exim_sign(dkim_fd, dkim, &errstr))) siglen = Ustrlen(dkim_signature); else if (dkim->dkim_strict) { @@ -1122,6 +1121,7 @@ else if (dkim->dkim_strict) save_errno = EACCES; log_write(0, LOG_MAIN, "DKIM: message could not be signed," " and dkim_strict is set. Deferring message delivery."); + *err = errstr; rc = FALSE; goto CLEANUP; } @@ -1959,7 +1959,7 @@ DEBUG(D_transport) debug_printf("transport_pass_socket entered\n"); if ((pid = fork()) == 0) { - int i = 17; + int i = 19; const uschar **argv; /* Disconnect entirely from the parent process. If we are running in the @@ -1982,7 +1982,15 @@ if ((pid = fork()) == 0) if (smtp_peer_options & PEER_OFFERED_PIPE) argv[i++] = US"-MCP"; if (smtp_peer_options & PEER_OFFERED_SIZE) argv[i++] = US"-MCS"; #ifdef SUPPORT_TLS - if (smtp_peer_options & PEER_OFFERED_TLS) argv[i++] = US"-MCT"; + if (smtp_peer_options & PEER_OFFERED_TLS) + if (tls_out.active >= 0 || continue_proxy) + { + argv[i++] = US"-MCt"; + argv[i++] = sending_ip_address; + argv[i++] = string_sprintf("%d", sending_port); + } + else + argv[i++] = US"-MCT"; #endif if (queue_run_pid != (pid_t)0)