Outils pour utilisateurs

Outils du site


ateliers:serveurmail:rspamd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ateliers:serveurmail:rspamd [2018/01/28 13:30] – Plus de détail sur l'installation okhinateliers:serveurmail:rspamd [2018/01/28 14:01] (Version actuelle) – Typos okhin
Ligne 30: Ligne 30:
 FIXME: A écrire FIXME: A écrire
  
 +<code|python /usr/local/bin/rspamd.py>
 +#!/usr/bin/env python3
 +# Python 3.5+ required
 +# Script by https://sitedethib.com/
 +# Source adapted to 3.5 from dashie version https://dev.sigpipe.me/dashie/setup_mail/src/master/rspamd.py
  
-==== Configuration ==== +import sys 
 +import smtplib 
 +import subprocess 
 +import syslog 
 +import time
  
-FIXME: A écrire+t_start = time.time()
  
-Script qui permet de faire le pont vers du lmtpOn émule en environnement mail lmtp+SMTP_HOST   = '127.0.0.1' 
-Actuellement fonctionnel mais probablement amené à être réécris en GOland+SMTP_PORT   = 10025 
 +RSPAMC_BIN  = '/usr/bin/rspamc' 
 +RSPAMC_ADDR = '127.0.0.1:11333'
  
 +mail_from     = sys.argv[1]
 +rcpt_to       = sys.argv[2]
  
 +def size(size, decimal_places):
 +    for unit in ['','KB','MB','GB','TB']:
 +        if size < 1024.0:
 +            break
 +        size /= 1024.0
 +    return "{size:.{decimal_places}f}{unit}".format(size=size, decimal_places=decimal_places, unit=unit)
  
-<code|h /usr/local/bin/rspamd.sh> +syslog.openlog(logoption=syslog.LOG_PID, facility=syslog.LOG_MAIL)
-#!/bin/sh+
  
-mail_file=$(/bin/mktemp)+# Pipe stdin to rspamc, and get the processed mail back 
 +#XXX: this means the processed mail stays in RAM, which may not be what we want? 
 +completed_process subprocess.run([RSPAMC_BIN, '--mime', '-h', RSPAMC_ADDR, '-P', 'saucisse'], 
 +                                   stdin=sys.stdin, stdout=subprocess.PIPE, 
 +                                   check=True)
  
-/bin/echo 'HELO localhost>> $mail_file +# Remove 'Delivered-Toheader from rspamc's output 
-/bin/echo "MAIL FROM: <$1>" >> $mail_file +mail_contents = completed_process.stdout 
-/bin/echo "RCPT TO: <$2>" >> $mail_file +mail_contents = b'\n'.join(l for l in mail_contents.split(b'\n') if not l.startswith(b'Delivered-To'))
-/bin/echo 'DATA>> $mail_file+
  
-/usr/bin/rspamc --mime -h 127.0.0.1:11333 -P q1 >> $mail_file+with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as smtp: 
 +    smtp.sendmail(mail_from, rcpt_to, mail_contents)
  
-/bin/echo '' >> $mail_file +t_end = time.time()
-/bin/echo '.' >> $mail_file +
-/bin/echo 'QUIT' >> $mail_file+
  
-cut_file=$(/bin/mktemp) +syslog.syslog("rspamd-bridge processed {} mail in {}".format(size(len(mail_contents), 1), t_end - t_start))
-/bin/sed '/Delivered-To/d' $mail_file > $cut_file +
-/bin/rm "$mail_file" +
- +
-count=0; IFS=''; while read -r line ; do if [ "$count" -gt "5" ]; then sleep 0.05; else sleep 0.1; fi; echo "$line"; count=$((count+1)); done < "$cut_file" | /bin/netcat 127.0.0.1 10025 +
- +
-/bin/rm "$cut_file"+
 </code> </code>
ateliers/serveurmail/rspamd.1517142646.txt.gz · Dernière modification : 2018/01/28 13:30 de okhin