Short Version:
Mimedefang 2.75 doesn't implement delay on filter_relay routine.
I think that is a bug. Where do I submit patches?
Long Version:
I'm trying to run a small experiment to delay on relay connect
Under special circumstances, and I'm having some problems.
It appears that the perl filter_relay routine
Returns an 5 element list
( code, message, code, dsn, delay)
Of course many of these can be undef.
In examining the source code, and milter specifications,
A few things captivate me.
The first thing is that we cant call smfi_setreply
from connect callback. Ok. That is a limit, but
the delay is not implemented in the smfi callbacks,
it is instead implemented by the mimedefang process.
The mimedefang sources carefully pass the list
( message, code, dsn, delay)
Back through
- from the mimedefang-filter
- through the intermediary multiplexor and its communication buffers
- and into mfconnect routine mimedefang.c
In the mfconnect routine the code reads
if (doRelayCheck) {
char buf2[SMALLBUF];
int n = MXRelayOK(MultiplexorSocketName, buf2, data-hostip,
data-hostname, data-hostport, data-myip,
data-daemon_port);
if (n == MD_REJECT) {
/* Can't call smfi_setreply from connect callback */
/* set_dsn(ctx, buf2, 5); */
cleanup(ctx);
DEBUG_EXIT(mfconnect, SMFIS_REJECT);
return SMFIS_REJECT;
}
if (n = MD_TEMPFAIL) { ... }
if (n == MD_ACCEPT_AND_NO_MORE_FILTERING) {
/* Can't call smfi_setreply from connect callback */
/* set_dsn(ctx, buf2, 2); */
cleanup(ctx);
DEBUG_EXIT(mfconnect, SMFIS_ACCEPT);
return SMFIS_ACCEPT;
}
if (n == MD_DISCARD) { ... }
}
DEBUG_EXIT(mfconnect, SMFIS_CONTINUE);
return SMFIS_CONTINUE;
}
The set_dsn routine is responsible for
- decoding the arguments from the multiplexor
- implementing the delay
- calling smfi_set_reply but only when the third parameter is 4 or 5.
If you'll examine the code above you'll see
- that we don't explicty check for MD_CONTINUE
- that filter routine always avoids calling set_dsn, even when num param is
not 4 or 5
I believe that it is a bug that the 2.75 version of mimedefang
does not implement the delay on filter_relay , especially on 'CONTINUE'.
I sincerely hope that you agree.
I will have some patches I would like to submit.
Where should I submit them?
Dale Moore
___
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID. You may ignore it.
Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list MIMEDefang@lists.roaringpenguin.com
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang