Sendmail + SpamAssassin "system-wide" sous NetBSD ================================================= iMil , 01 / 2005 Voici une méthodologie simple pour faire fonctionner Spamassassin avec Sendmail sous NetBSD en impactant l'ensemble des utilisateurs. . Installez le logiciel "procmail" via le pkgsrc ; # cd /usr/pkgsrc/mail/procmail/ && make install clean . Installez le logiciel "Spamassassin" via le pkgsrc : # cd /usr/pkgsrc/mail/spamassassin/ && make install clean . Spécifiez dans l'/etc/rc.conf que vous souhaitez démarrer spamd au boot : # echo "spamd=YES" >> /etc/rc.conf . Préparez Spamassassin à l'utilisation des filtres Bayesiens "system-wide" # mkdir /var/tmp/spamassassin # chmod 777 /var/tmp/spamassassin # cat /usr/pkg/etc/spamassassin/local.cf bayes_path /var/tmp/spamassassin/bayes bayes_file_mode 0777 bayes_ignore_header ReSent-Date bayes_ignore_header ReSent-From bayes_ignore_header ReSent-Message-ID bayes_ignore_header ReSent-Subject bayes_ignore_header ReSent-To bayes_ignore_header Resent-Date bayes_ignore_header Resent-From bayes_ignore_header Resent-Message-ID bayes_ignore_header Resent-Subject bayes_ignore_header Resent-To . Creez un fichier de configuration global pour procmail : # cat /usr/pkg/etc/procmailrc SHELL=/bin/sh # chaque utilisateur aura une boite nommée caughtspam dans laquelle SpamAssassin # delivrera le spam supposé SPAMBOX=$HOME/mail/caughtspam DROPPRIVS=yes # on abandonne les provilèges et on devient l'utilisateur :0fw | /usr/pkg/bin/spamc -s 256000 :0: * ^X-Spam-Flag: YES $SPAMBOX . Créez votre fichier .mc pour sendmail : # cd /usr/share/sendmail/m4 # cat votre.mc divert(0) include(`../m4/cf.m4')dnl VERSIONID(`Mon serveur SMTP')dnl OSTYPE(bsd4.4)dnl DOMAIN(generic) dnl dnl issu de https://www.freebsd.uwaterloo.ca/twiki/bin/view/Freebsd/MailServer dnl quelques options de sécurisation define(`confMAX_MIME_HEADER_LENGTH', `256/128') define(`confPRIVACY_FLAGS', `authwarnings,restrictmailq,goaway') define(`confSMTP_LOGIN_MSG', `$j $b') define(`confCONNECTION_RATE_THROTTLE', `3') define(`confTO_IDENT', `10s') define(`confDONT_EXPAND_CNAMES', `True') dnl Drop double-bounced messages -- "error: cannot deliver 'error message'" define(`confDOUBLE_BOUNCE_ADDRESS', `') dnl dnl le fichier de domaines locaux dnl define(`confCW_FILE', `-o /etc/mail/local-host-names')dnl dnl l'endroit ou se trouve le procmailrc define(`PROCMAIL_MAILER_PATH',`/usr/pkg/bin/procmail')dnl dnl on accepte des mails de 5 megas au maximum define(`confMAX_MESSAGE_SIZE', 5000000)dnl dnl dnl on veut utiliser procmail comme MDA FEATURE(local_procmail)dnl dnl on utilise les features de reecriture virtusertable et genericstable FEATURE(virtusertable)dnl FEATURE(genericstable)dnl dnl dnl bonus, quelques directives relatives à majordomo dnl define(`ALIAS_FILE',`/etc/mail/aliases,/etc/mail/aliases.majordomo')dnl define(`confTRUSTED_USERS', majordom)dnl define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile,IncludeFileInGroupWrita bleDirPath')dnl dnl MAILER(local)dnl MAILER(smtp)dnl . Compilez la configuration en sendmail.cf : # m4 votre.mc > sendmail.cf # mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.orig # cp sendmail.cf /etc/mail/ . Démarrez spamd # /usr/pkg/etc/rc.d/spamd start . Redémarrez sendmail : # /etc/rc.d/sendmail restart . Vérifiez que le mail transite bien par spamd : # tail -f /var/log/maillog Vous devriez voir des lignes du type : Jan 9 14:02:10 votre-serveur spamd[18473]: result: Y 11 - DNS_FROM_RFC_POST,HTML_60_70,HTML_MESSAGE,RCVD_HELO_IP_MISMATCH,RCVD_IN_NJABL_PROXY,RCVD_NUMERIC_HELO,URIBL_AB_SURBL,URIBL_SC_SURBL,URIBL_WS_SURBL scantime=0.4,size=1537,mid=,autolearn=no Veillez également à ce que l'autolearning Bayesien se fasse correctement, vous devriez de temps en temps voir dans le maillog des lignes comme celle-ci : Jan 9 14:02:40 votre-serveur spamd[20945]: result: Y 22 - DNS_FROM_AHBL_RHSBL,DNS_FROM_RFC_BOGUSMX,DRUGS_ANXIETY,DRUGS_ANXIETY_EREC,DRUGS_ANXIETY_OBFU,DRUGS_ERECTILE,DRUGS_ERECTILE_OBFU,FORGED_RCVD_HELO,INFO_TLD,LONGWORDS,RCVD_HELO_IP_MISMATCH,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DSBL,RCVD_IN_XBL,RCVD_NUMERIC_HELO,URIBL_SBL,URIBL_WS_SURBL,VIA_GAP_GRA scantime=4.7,size=1459,mid=,autolearn=spam Ceci aura pour effet de peupler la base de tokens du filtre Bayesien, verifiez leur existance dans le répertoire précédemment crée : # ls /var/tmp/spamassassin/ bayes_seen bayes_toks Il vous appartient désormais de peupler cette base avec le logiciel sa-learn(1) livré avec SpamAssassin.