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 18:31 by niccolo