Milter and Postfix

Help
Kay Zenner
2007-11-13
2013-04-22
  • Kay Zenner
    Kay Zenner
    2007-11-13

    I've found out that the milter doesn't work with the postfix-milter implementation.
    This happens because the xxfi_negotiate function is not implemented.
    Sendmail seems to ignore this, but postfix needs this function.

    I've patched the sourcecode with an implementation of this function. This shouldn't touch the sendmail functionallity but makes the milter lib work with postfix.

    Greets
    Kay

    patch >>> snip here <<<

    diff -Naur Sendmail-Milter-0.18.org/callbacks.c Sendmail-Milter-0.18/callbacks.c
    --- Sendmail-Milter-0.18.org/callbacks.c        2000-07-19 08:20:36.000000000 +0200
    +++ Sendmail-Milter-0.18/callbacks.c    2007-11-12 16:15:12.000000000 +0100
    @@ -50,6 +50,7 @@

    /* Callback prototypes for first-level callback wrappers. */

    +sfsistat hook_negotiate(SMFICTX *,unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long *,unsigned long *,unsigned lon
    g *,unsigned long *);
    sfsistat hook_connect(SMFICTX *, char *, _SOCK_ADDR *);
    sfsistat hook_helo(SMFICTX *, char *);
    sfsistat hook_envfrom(SMFICTX *, char **);
    @@ -165,6 +166,8 @@
            desc->xxfi_version = SMFI_VERSION;
            desc->xxfi_flags = flags;

    +       desc->xxfi_negotiate =  hook_negotiate;
    +
            if (hv_exists_ent(my_callback_table, KEY_CONNECT, 0))
            {
                    init_callback(GLOBAL_CONNECT,
    @@ -766,3 +769,17 @@
            return retval;
    }

    +sfsistat
    +hook_negotiate(ctx, f0, f1, f2, f3, pf0, pf1, pf2, pf3)
    +        SMFICTX    *ctx;
    +       unsigned long f0;
    +        unsigned long f1;
    +       unsigned long f2;
    +        unsigned long f3;
    +       unsigned long *pf0;
    +        unsigned long *pf1;
    +        unsigned long *pf2;
    +       unsigned long *pf3;
    +{
    +       return SMFIS_ALL_OPTS;
    +}