• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Spamassassin mit UsingSQL und Postfix/Cyrus

treebeard

Newbie
Hallo,

ich habe unter Suse 10.1 ein Postfix/Cyrus-Mailserver. Da ich inzwischen auch von der Spamflut geplagt bin, habe ich mir den Spamassassin installiert. Um nun für mehrere Benutzer eine Whitelist/Blacklist zu ermöglichen habe ich diesen mit einer MySQL-Datenbank verbunden.

Hier die Anleitungen, die ich benutzt habe und mir geholfen haben:
Spamassassin unter Suse mit Postfix installieren
Spamassassin Wiki - Using SQL
Loading SpamAssassin User Preferences From An SQL Database

Die Tabelle userpref ist so aufgebaut:
Code:
CREATE TABLE `userpref` (
  `id` int(8) unsigned NOT NULL auto_increment,
  `username` varchar(128) NOT NULL default '',
  `preference` varchar(64) NOT NULL default '',
  `value` varchar(128) default NULL,
  `descript` varchar(128) default NULL,
  `added` datetime NOT NULL default '2003-01-01 00:00:00',
  `added_by` varchar(128) NOT NULL default '',
  `modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  UNIQUE KEY `id` (`id`),
  KEY `type` (`preference`),
  KEY `added_by` (`added_by`),
  KEY `preference` (`preference`),
  KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Spamassassin Preferences' AUTO_INCREMENT=15 ;

Hier der Code meiner SQL.cf in /etc/mail/spamassassin/:

Code:
[root@mailgw spamassassin]# cat sql.cf
user_scores_dsn                  DBI:mysql:logs:localhost:3306
user_scores_sql_password         password
user_scores_sql_username         username
user_scores_sql_custom_query     SELECT preference, value FROM _TABLE_ WHERE username = _USERNAME_ OR username = '$GLOBAL' OR username = CONCAT('%',_DOMAIN_) ORDER BY username ASC
(ohne Zeilenumbruch bei den 4 Zeilen)


Hier zum Problem:
Es scheint dass der username nicht richtig ausgewertet wird.

Ich habe mal diesen Datensatz in die Tabelle userpref angelegt:
Code:
INSERT INTO `userpref` (`id`, `username`, `preference`, `value`, `descript`, `added`, `added_by`, `modified`) VALUES 
('', '$GLOBAL', 'blacklist_from', 'boese@mail.de', NULL, '', '', '');

Damit klappt die Filterung auch. $GLOBAL wird ausgewertet und die Mails von boese@mail.de vom Spamassassin als Spam markiert (102 Punkte).

Wenn ich statt $GLOBAL meine eigene Mailadresse angebe, dann klappt das nicht:
Code:
INSERT INTO `userpref` (`id`, `username`, `preference`, `value`, `descript`, `added`, `added_by`, `modified`) VALUES 
('', 'meine@email.de', 'blacklist_from', 'boese@mail.de', NULL, '', '', '');

Die Mail wird nicht als Spam markiert.

In welcher Konfiguration muss ich ansetzen, damit diese Mails auf username-Basis gefiltert werden?
 
Oben