#!/usr/bin/php5 -q
<?php
/***************************************************************************
- * Copyright (C) 2003-2008 Polytechnique.org *
+ * Copyright (C) 2003-2009 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
require('./connect.db.inc.php');
ini_set('max_execution_time', '75');
+ini_set('memory_limit', '128M');
$sent_mails = 0;
$handler = time();
$action = 1; /** 1 = ACCEPT **/
$subject = "Message accepté";
$append = "a été accepté par $prenom $nom.\n";
+ $type = 'nonspam';
$count += count($mem) + count($own);
break;
case 'refuse':
$action = 2; /** 2 = REJECT **/
$subject = "Message refusé";
$append = "a été refusé par $prenom $nom avec la raison :\n\n" . $reason;
+ $type = 'nonspam';
$count += count($own) + 1;
break;
case 'delete':
$append = "a été supprimé par $prenom $nom.\n\n"
. "Rappel: il ne faut utiliser cette opération "
. "que dans le cas de spams ou de virus !\n";
+ $type = 'spam';
$count += count($own);
break;
}
- if ($client->handle_request($list, $mid, $action, $reason)) {
+ // if the mail was classified as Unsure, feed bogo
+ $raw_mail = html_entity_decode($client->get_pending_mail($list, $mid, 1));
+ // search for the X-Spam-Flag header
+ $end_of_headers = strpos($raw_mail, "\r\n\r\n");
+ if ($end_of_headers === false) { // sometimes headers are separated by \n
+ $end_of_headers = strpos($raw_mail, "\n\n");
+ }
+ $x_spam_flag = '';
+ if (preg_match('/^X-Spam-Flag: ([a-zA-Z]+), tests=bogofilter/m', substr($raw_mail, 0, $end_of_headers + 1), $matches)) {
+ $x_spam_flag = $matches[1];
+ }
+ if ($x_spam_flag == 'Unsure') {
+ $mailer = new PlMailer();
+ $mailer->addTo($type . '@' . $globals->mail->domain);
+ $mailer->setFrom('"' . $prenom . ' ' . $nom . '" <web@' . $globals->mail->domain . '>');
+ $mailer->setTxtBody($type . ' soumis par ' . $prenom . ' ' . $nom . ' via la modération de la liste ' . $list . '@' . $domain);
+ $mailer->addAttachment($raw_mail, 'message/rfc822', $type . '.mail', false);
+ $mailer->send();
+ }
+
+ // send feedback to the mailing list owners
+ if ($client->handle_request($list, $mid, $action, utf8_decode($reason))) {
$sent_mails += $count;
$texte = "le message suivant :\n\n"
. " Auteur: {$mail['sender']}\n"