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

2012-06-03 Thread Thomas Cameron
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', `200')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 -TTMPF -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

2012-06-03 Thread Dave Funk

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.eduCollege of Engineering
319/335-5751   FAX: 319/384-0549   1256 Seamans Center
Sys_admin/Postmaster/cell_adminIowa 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

2012-06-03 Thread Andrzej A. Filip
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.