Subject: Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
List archive
Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées
- 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";
}
-
[sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées,
bruno.malaval, 08/16/2022
-
Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées,
Guillaume Tournat, 03/16/2016
- Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées, bruno.malaval, 08/16/2022
-
Re: [sympa-fr] Commandes (DISTRIBUTE, REJECT, CONFIRM, ...) non traitées,
Guillaume Tournat, 03/16/2016
Archive powered by MHonArc 2.6.19+.