You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Thomas Cameron <th...@camerontech.com> on 2012/06/03 23:44:27 UTC

Could not retrieve sendmail macro "_"!. Please add it to confMILTER_MACROS_CONNECT for better spamassassin results

I am getting $SUBJECT on my RHEL6 box running sendmail, spamassassin, 
spamass-milter, clamav-milter, and milter-greylist. My sendmail.mc looks 
like this:

[root@spamcatcher ~]# grep -v "^dnl" /etc/mail/sendmail.mc
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

INPUT_MAIL_FILTER(`spamassassin', 
`S=unix:/var/run/spamass-milter/spamass-milter.sock, F=, 
T=C:15m;S:4m;R:4m;E:10m')dnl
define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, 
{if_name},{if_addr}')dnl
define(`confMILTER_MACROS_ENVRCPT',confMILTER_MACROS_ENVRCPT`, b, r, v, 
Z')dnl

INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clamav-milter.sock, F=, 
T=S:4m;R:4m')dnl

INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock')dnl
define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnl
define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnl
define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl

define(`confINPUT_MAIL_FILTERS', `spamassassin, clmilter, greylist')

What have I done wrong? I confess I am not an m4 maven, I just copied 
recommended settings from various web sites.

TC

Re: Could not retrieve sendmail macro "_"!. Please add it to confMILTER_MACROS_CONNECT for better spamassassin results

Posted by Dave Funk <db...@engineering.uiowa.edu>.
On Sun, 3 Jun 2012, Thomas Cameron wrote:

> I am getting $SUBJECT on my RHEL6 box running sendmail, spamassassin, 
> spamass-milter, clamav-milter, and milter-greylist. My sendmail.mc looks like 
> this:
>
> [root@spamcatcher ~]# grep -v "^dnl" /etc/mail/sendmail.mc
> divert(-1)dnl
> include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
> VERSIONID(`setup for linux')dnl
> OSTYPE(`linux')dnl
[snip..]
> EXPOSED_USER(`root')dnl
> DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
> FEATURE(`accept_unresolvable_domains')dnl
> LOCAL_DOMAIN(`localhost.localdomain')dnl
> MAILER(smtp)dnl
> MAILER(procmail)dnl
>
> INPUT_MAIL_FILTER(`spamassassin', 
> `S=unix:/var/run/spamass-milter/spamass-milter.sock, F=, 
> T=C:15m;S:4m;R:4m;E:10m')dnl
> define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name},{if_addr}')dnl
> define(`confMILTER_MACROS_ENVRCPT',`, b, r, v, Z')dnl
>
> INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clamav-milter.sock, F=, 
> T=S:4m;R:4m')dnl
>
> INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock')dnl
> define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl
> define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnl
> define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnl
> define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl
>
> define(`confINPUT_MAIL_FILTERS', `spamassassin, clmilter, greylist')
>
> What have I done wrong? I confess I am not an m4 maven, I just copied 
> recommended settings from various web sites.
>
> TC

Your problem is that you have two different "define(`confMILTER_MACROS_CONNECT"
statements, the first one has what you need the second one does not. As
the M4 processing is done squentially, the second one overwrite the first
and blows out your '_' parameter.

Get rid of that line that says:
   define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl

(it's a proper subset of that first confMILTER_MACROS_CONNECT def)

Take those two different "confMILTER_MACROS_ENVRCPT" and properly merge
their parameter list into one statement:

  define(`confMILTER_MACROS_ENVRCPT',confMILTER_MACROS_ENVRCPT`, b, r, v, Z')dnl
  define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl

(that first one is borked anyway) delete them and replace with:

  define(`confMILTER_MACROS_ENVRCPT', `b, r, v, Z, {greylist}')dnl

IE you want only ONE of each of those "define(`confMILTER_MACROS_*',..."
kind of statements.
If your different milters want different sets of parameters you need to
make a compilation of parameters for each kind of statement.

Onec you've made these edits, re-make your sendmail.cf file and restart
sendmail to use the new .cf


-- 
Dave Funk                                  University of Iowa
<dbfunk (at) engineering.uiowa.edu>        College of Engineering
319/335-5751   FAX: 319/384-0549           1256 Seamans Center
Sys_admin/Postmaster/cell_admin            Iowa City, IA 52242-1527
#include <std_disclaimer.h>
Better is not better, 'standard' is better. B{

Re: [sendmail,milter,ident] Could not retrieve sendmail macro "_"!. Please add it to confMILTER_MACROS_CONNECT for better spamassassin results

Posted by "Andrzej A. Filip" <an...@gmail.com>.
On 06/03/2012 11:44 PM, Thomas Cameron wrote:
> I am getting $SUBJECT on my RHEL6 box running sendmail, spamassassin,
> spamass-milter, clamav-milter, and milter-greylist. My sendmail.mc
> looks like this:
>
> [root@spamcatcher ~]# grep -v "^dnl" /etc/mail/sendmail.mc
> [....]
> define(`confTO_IDENT', `0')dnl
> [....]
> INPUT_MAIL_FILTER(`spamassassin',
> `S=unix:/var/run/spamass-milter/spamass-milter.sock, F=,
> T=C:15m;S:4m;R:4m;E:10m')dnl
> define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name},
> {if_name},{if_addr}')dnl
> [...]
> What have I done wrong? I confess I am not an m4 maven, I just copied
> recommended settings from various web sites.
By setting confTO_IDENT to zero you have disabled ident lookups.

Anyway disabling ident lookups is not a bad idea because AFAIK most
hosts nowadays do not support it.