User Tools

Site Tools


doc:appunti:prog:esempi_procmail

Esempi regole procmail

Con questa regola alcuni messaggi vengono processati per estrarre un allegato e salvarlo su disco.

#-------------------------------------------------------------------------
# $HOME/.procmailrc
#
# When specifying a destination directory, append a trailing "/"
# to save in Maildir format.
#
# When saving messages into a file (mbox or Maildir), we want to use
# a lock file. So each rule begin with a line with a trailing ":".
#-------------------------------------------------------------------------

PATH=/usr/local/bin:/usr/bin:/bin

SHELL=/bin/bash
UMASK=007

# Use user's Maildir instead of /var/mail/.
MAILDIR=$HOME/Maildir/
ORGMAIL=$MAILDIR
DEFAULT=$MAILDIR

#LOGFILE=$HOME/procmail.log
#VERBOSE=yes

#-----------------------------------------------------------------------
# Estrae l'attach MIME dalla posta che proviene da un determinato
# indirizzo e con un determinato Subject.
# Un eventuale file esistente viene sovrascritto.
#
# Durante l'esecuzione del comando viene creato un file di lock
# (config.lock) nella home directory dell'utente, il flag "w"
# indica di attendere che il comando sia completato prima di
# procedere.
#
# In questo modo viene processata una sola mail per volta e si
# dovrebbero evitare vari problemi riscontrati. In alcuni casi
# allegati differenti vengono salvati nello stesso file che
# quindi risulta corrotto (pare che munpack crei file temporanei
# in modo non sicuro). In altri casi il messaggio pare non
# passare per la regola procmail e viene recapitato nella
# mailbox.
#-----------------------------------------------------------------------
FOLDER=/home/backup/config
DEBUG=/var/log/backup_procmail.log

:0 w : config.lock
* ^From:.*root
* ^Subject:.*Host config$
| echo -n "$(date "+%Y-%m-%d %H:%M:%S") " >> "${DEBUG}" ; /usr/bin/munpack -f -C "${FOLDER}" >> "${DEBUG}"

#-------------------------------------------------------------------------
# Filter the mail with ClamAV
#-------------------------------------------------------------------------
:0 fw
| /usr/bin/sanitizer /etc/sanitizer.cfg

#-------------------------------------------------------------------------
# Filter the mail with SpamAssassin
#-------------------------------------------------------------------------
:0 fw
* < 256000
| /usr/bin/spamc

#-------------------------------------------------------------------------
# Messages marked by Spamassassin.
#-------------------------------------------------------------------------
:0 :
* ^X-Spam-Flag: YES
.Spam/

Espressioni regolari

Le espressioni regolari che si possono usare per selezionare i messaggi possono contenere caratteri speciali:

^ Inizio stringa.
$ Fine stringa.
. Il punto corrisponde a un carattere qualsiasi, eccetto un newline.

Questi sono i modificatori standard:

* Zero o più occorrenze.
+ Una o più occorrenza.
? Zero o una occorrenza.

Si possono definire degli atom raggruppando dei caratteri in partentesi tonde () e definire dei branch (condizioni alternative) separandoli con il carattere | (pipe).

Nell'esempio che segue la regola include tutti i messaggi generati da cron da tre host diversi, che contengono anche la parola backup nell'oggetto:

:0:
* ^Subject: Cron <root@((totem)|(nagila)|(manitu))>.*backup
.Admin.Backup/
doc/appunti/prog/esempi_procmail.txt · Last modified: 2022/03/09 17:31 by niccolo