openbsd-ports/mail/smtp-vilter/patches/patch-bin_smtp-vilter_engine_c
jasper e4750f009c - add patches from "MARTIN" to pass sasl auth status to the spam backend
this will be integrated into the next upstream release.
2009-11-26 14:02:58 +00:00

82 lines
2.8 KiB
Plaintext

$OpenBSD: patch-bin_smtp-vilter_engine_c,v 1.5 2009/11/26 14:02:58 jasper Exp $
--- bin/smtp-vilter/engine.c.orig Sun Jan 21 13:09:38 2007
+++ bin/smtp-vilter/engine.c Fri Oct 23 09:41:28 2009
@@ -501,18 +501,62 @@ smtp_vilter_envfrom(SMFICTX *ctx, char **argv)
}
}
+ /* report authentication symbol values */
+ if (verbose >= 2)
+ warnx("SASL authentication parameters: {auth_type}=%s, "
+ "{auth_authen}=%s, {auth_ssf}=%s, {auth_author}=%s",
+ smfi_getsymval(ctx, "{auth_type}"),
+ smfi_getsymval(ctx, "{auth_authen}"),
+ smfi_getsymval(ctx, "{auth_ssf}"),
+ smfi_getsymval(ctx, "{auth_author}"));
+
/* Write an artifical Received: from: Header to the message */
if (gethostname(hostname, sizeof(hostname))) {
syslog(LOG_ERR, "can't get local hostname");
strlcpy(hostname, "localhost", sizeof(hostname));
}
- if (conn->clientaddr == NULL)
- fprintf(msg->fp, "Received: from %s by %s\r\n", conn->hostname,
- hostname);
- else
- fprintf(msg->fp, "Received: from %s (%s) by %s\r\n",
- conn->heloname, conn->clientaddr, hostname);
+ if (verbose >= 2)
+ warnx("header_options = 0x%lx", header_options);
+ if (header_options == 0x0L) {
+ /* plain 'Received:' header (legacy behaviour) */
+ if (conn->clientaddr == NULL)
+ fprintf(msg->fp, "Received: from %s by %s\r\n",
+ conn->hostname, hostname);
+ else
+ fprintf(msg->fp, "Received: from %s (%s) by %s\r\n",
+ conn->heloname, conn->clientaddr, hostname);
+ }
+ if (header_options & 0x1L) {
+ /* include SASL auth info in 'Received:' header */
+ if (verbose >= 2)
+ warnx("including SASL auth info in header");
+ if (smfi_getsymval(ctx, "{auth_authen}") != NULL) {
+ /* SASL authenticated sender */
+ if (conn->clientaddr == NULL)
+ fprintf(msg->fp, "Received: from %s "
+ "(Authenticated sender: %s) by %s\r\n",
+ conn->hostname,
+ smfi_getsymval(ctx, "{auth_authen}"),
+ hostname);
+ else
+ fprintf(msg->fp, "Received: from %s (%s) "
+ "(Authenticated sender: %s) by %s\r\n",
+ conn->heloname,
+ conn->clientaddr,
+ smfi_getsymval(ctx, "{auth_authen}"),
+ hostname);
+ } else {
+ /* non authenticated sender */
+ if (conn->clientaddr == NULL)
+ fprintf(msg->fp, "Received: from %s by %s\r\n",
+ conn->hostname, hostname);
+ else
+ fprintf(msg->fp, "Received: from %s (%s) by %s\r\n",
+ conn->heloname, conn->clientaddr, hostname);
+ }
+ }
+
return SMFIS_CONTINUE;
}
@@ -1764,6 +1808,8 @@ e_main(uid_t uid, gid_t gid, int pipe_m2e[2])
syslog(LOG_INFO, "dropped privileges, running as %d:%d", uid, gid);
/* Initialize sendmail milter */
+ bzero(&desc, sizeof(desc));
+
desc.xxfi_name = "smtp-vilter";
desc.xxfi_version = SMFI_VERSION;
desc.xxfi_flags = SMFIF_ADDHDRS | SMFIF_CHGHDRS;