SMRazor comme filtre anti-spam dans Sendmail

Le filtre SMRazor appelle Vipul's Razor et ajoute un en-tête X-SMRazor: SPAM si razor-check déclare que le message est un spam. Évidemment, tout cela n'est possible que si Sendmail dispose de la bibliothèque Milter… Pour vérifier :

$ sendmail -bt -d0.4 </dev/null|grep MILTER
 Compiled with: FOO MILTER BAR

On trouve SMRazor .

Plutôt que de marquer les messages, le patch (sur la version 0.2.1) suivant les bloque.

--- smrazor.c.orig	2007-08-26 23:06:02.000000000 +0200
+++ smrazor.c	2007-08-28 23:17:24.000000000 +0200
@@ -17,13 +17,13 @@
 #include 
 #include 
 
-#include "libmilter/mfapi.h"
+#include 
 
-#ifndef true
+/* #ifndef true
 typedef int bool;
 # define false	0
 # define true	1
-#endif /* ! true */
+#endif * ! true */
 
 #ifdef DEBUG
 #define DPRINTF(x) dprintf##x
@@ -31,10 +31,10 @@
 #define DPRINTF(x)
 #endif /* DEBUG */
 
-#define PERL_BIN_PATH "/usr/bin/perl"
-#define RAZOR_CHECK_PATH "/usr/local/bin/razor-check"
-#define DEFAULT_PID_FILE_NAME "/var/run/smrazor.pid"
-#define ERROR_FILE_NAME "/tmp/smrazor.err"
+#define PERL_BIN_PATH "/usr/pkg/bin/perl"
+#define RAZOR_CHECK_PATH "/usr/pkg/bin/razor-check"
+#define DEFAULT_PID_FILE_NAME "/var/spool/milter/smrazor.pid"
+#define ERROR_FILE_NAME "/var/spool/milter/smrazor.log"
 #define ERR_TIME_FORMAT "[%m/%d/%Y %H:%M:%S] "
 #define RAZOR_CHECK_TIMEOUT 30
 
@@ -431,9 +431,11 @@
 	}
 	else
 	{
-		smfi_addheader(ctx, "X-SMRazor", "SPAM");
+		smfi_setreply(ctx, "554", "5.7.1",
+			"Mail refused, see http://www.example.com/mail-filter.html");
+		rstat = SMFIS_REJECT;
 		DPRINTF(("Rejected: %p\n", ctx));
-		log_file = fopen("/tmp/razored.log", "a");
+		log_file = fopen(ERROR_FILE_NAME, "a");
 		if (log_file != NULL)
 		{
 			fprintf(log_file, "%s\t%s\n", 

Installer Razor2. Ne pas oublier de permettre tcp/2703 en sortie sur la machine.

Ajouter la ligne kivabien dans /etc/mail/sendmail.cf :

XSMRazor, S=unix:/var/spool/milter/smrazor.sock

et ajouter SMRazor à la liste des filtres (variable InputMailFilters dans /etc/mail/sendmail.cf) :

O InputMailFilters=milter-regex,SMRazor

Lancer le filtre :

$ sudo -u smmsp smrazor -p unix:/var/spool/milter/smrazor.sock

Enfin relancer Sendmail. Attention au fichier socket (emplacement et droits).

Après greylisting : un message sur trois est encore un spam en période normale, deux sur trois sinon.

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • user/pc/sysadmin/sendmail-smrazor.txt
  • Dernière modification : 2011/07/22 18:32
  • de pc