Skip to Content.
Sympa Menu

fr - Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées

Subject: Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

List archive

Chronological Thread  
  • From: Guillaume Tournat <address@concealed>
  • To: address@concealed
  • Subject: Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées
  • Date: Wed, 16 Mar 2016 14:58:24 +0100

Le 16/03/2016 14:01, address@concealed a écrit :
Bonjour,

Suite à la migration de notre serveur (5.3.4 => 6.2.14), les commandes de
modération, confirmation, etc ... ne sont plus traitées.
Je précise que nous avons également changé de serveur.

Le problème :
J'ai une liste modérée.
Un utilisateur envoie un message à la liste, le modérateur reçoit le message
de modération, valide l'envoi (mail DISTRIBUTE xxx xxxxx)
Le message de validation arrive bien sur le serveur SYMPA, il passe par
procmail mais le message reste dans la boite mail de l'utilisateur sympa (/
var/mail/sympa) et cela s'arrete là .....

La modération n'est pas traitée par SYMPA

Le mail est bien en attente dans /usr/local/sympa/spool/moderation

Le fichier main.cf de postfix contient :
mailbox_command = procmail -a "$EXTENSION"

Je ne connais pas exactement le processus pour le traitement de ces mails (par
quel script/daemon cela passe-t-il ..? )
Donc un peu difficile de debogger cela.



Les messages de commande par email sont envoyés à un script (via un alias postfix) :
sympa: "/usr/lib/sympa/bin/queue address@concealed"

Je profite de ce thread pour savoir comment vous gérer ces messages entrants dans Sympa.
J'ai régulièrement des messages de spam envoyés sur cette adresse, avec liens foireux, et Sympa y répond avec une erreur, générant un spam vers une adresse d'expéditeur usurpée.

J'ai codé un petit script en Perl pour analyser ces emails avant de les passer effectivement à "queue" (cf piece jointe) :
sympa: "| /data/admin/mailcheck.pl address@concealed"

Peut-être avez-vous plus propre/efficace ?


gu!llaume

#! /usr/bin/perl -w

use warnings; use File::Temp;
# use strict;

## VARS

my $logfile="/var/log/mailcheck.log";
my $workdir="/data/mailcheck";

my $is_header=1; my $is_body=0; my $fout; my $fname;
my $headers=""; my $body=""; my $subject=""; my $report=""; my $ligne;
my $dest = $ARGV[0] || ''; my $from=""; my $rp="";

## INIT

open(LOG,">>$logfile"); &debug("---");

## START

while (<STDIN>) {
chomp; $ligne=$_;
if($ligne =~ /^$/) { $is_header=0; $is_body=1; }

if($is_header) {
if($ligne =~ /^From: (.*)/) { $from=$1; }
if($ligne =~ /^Return-Path: (.*)/) { $rp=$1; }
if($ligne =~ /^Subject: (.*)/) {
$subject=$1;
next if($subject =~ /^$/);

if($subject !~
/^(HELP|INFO|LIS|REV|WHICH|SUB|UNS|SET|IND|GET|INVITE|CONFIRM|QUIE?T|ADD|DEL|STATS|REM
IND|DISTRIBUTE|REJECT)/)
{ $report .= "Bad command passed in subject,"; }
}

$headers .= "$ligne\n";
}
if($is_body) {
next if($ligne =~ /^$/);
if($ligne =~ /(https?:\/\/.*)/) {
$report .= "Bad link found in body: $1";
}
# if($ligne !~
/^(HELP|INFO|LIS|REV|WHICH|SUB|UNS|SET|IND|GET|INVITE|CONFIRM|QUIE?T|ADD|DEL|STATS|REMIND|DISTRI
BUTE|REJECT)/) {
# $report .= "Bad command passed in body,";
# }

$body .= "$ligne\n";
}
}

## PROCESSING

&debug("Original sender is '$from'");
&debug("Return-Path is '$rp'");
&debug("Final destination is '$dest'");

if($subject ne '') { &debug("Subject is '$subject'"); }
else { &debug("Subject is empty, looking at body"); }

## IF ERROR REPORTING
if($report ne '') {
## BAD
&debug($report);

$fout = File::Temp->new( TEMPLATE => 'spool.XXXXX',
DIR => '/data/mailcheck',
SUFFIX => '.spam', UNLINK => 0);

$fname = $fout->filename;
&debug("Spool file will be '$fname'");

print $fout "$headers\n$body\n";
&debug("Message is ignored, suspected as spam");
}
## ELSE SUBMITTING MSG TO SPOOL
else
{
## GOOD

$fout = File::Temp->new( TEMPLATE => 'spool.XXXXX',
DIR => '/data/mailcheck',
SUFFIX => '.mail', UNLINK => 1);
$fname = $fout->filename;
&debug("Spool file will be '$fname'");

print $fout "$headers\n$body\n";

&debug("Message queued for Sympa processing to '$dest'");
qx#/usr/lib/sympa/bin/queue $dest < $fname#;
}


## FUNCTIONS

sub error {
print STDERR "Error: $_[0].\n";
exit 1;
}

sub debug {
my $debugstring = $_[0];
print LOG localtime(time)." - $debugstring\n";
}



Archive powered by MHonArc 2.6.19+.

Top of Page