====== 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 .*backup
.Admin.Backup/