In the course of testing a modification to improve the handling of dacl statements, I noticed the strangest thing. It looks like there is a bug in dkimcheck.c that will prevent dkim from working.
Note this piece of code from the function dkimcheck_error():
106 break;
107 }
108
109 if (priv->priv_dkim != DKIM_STAT_OK) {
110 (void)dkim_free(priv->priv_dkim);
111 priv->priv_dkim = NULL;
112 }
113
114 return retval;
115 }
Line 109 checks the pointer priv->priv_dkim against an integer value. Since DKIM_STAT_OK equals 0, every time the pointer is not NULL, it will be reset. This is exactly what happens as a message goes through the SMTP stages in milter-greylist. As a result, no message is ever checked for dkim.
The correct code should be:
109 if (priv->priv_dkimstat != DKIM_STAT_OK) {
With this change the dkim checking seems to work properly.
Does this really mean no-one was ever able to run a successful DKIM check? Or am I overlooking something?Message
Re: Suggested improvements to dacl processing: what do you prefer?
2009-11-07 by reschauzier
Attachments
- No local attachments were found for this message.