Procmail
Installation
apt-get install procmail
installer les ~/.procmailrc tels que celui-ci:
Exemple de ~/.procmailrc:
#Preliminaries SHELL=/bin/bash #Use the Bourne shell (check your path!) MAILDIR=${HOME}/Maildir/ #First check what your mail directory is! LOGFILE=${MAILDIR}procmail.log DEFAULT=${MAILDIR} ORGMAIL=${MAILDIR} #LOG="--- Logging ${LOGFILE} for ${LOGNAME}, " UMASK=007 COMSAT=no # If you don't use biff/comsat notifier #Troubleshooting: VERBOSE=no #LOGABSTRACT=all LOGABSTRACT=no #Whatever recipes you'll use #The order of the recipes is significant ## Pour utiliser une install locale de spamassassin: ## On trie ce qui a déjà été scanné et taggué comme spam: :0 * ^X-Spam-Status: Yes|\ ^X-Spam-Flag: YES|\ ^Subject: \*\*\*\*\*SPAM\*\*\*\*\* .SPAM/ ## On appelle spamassassin puis on continue les règles de tri :0fw: spamassassin.lock * < | /usr/local/bin/spamassassin -a ## On écarte les mails taggués comme spam :0 * ^X-Spam-Flag: YES .Internet.SPAM/ ## Exemple complexe pour envoyer un SMS via un mail avec pour sujet: "[1] corps du SMS" ## [SMS:] #:0 c #* ^Subject: \[SMS:[0-9]+\] #|gawk '/^Subject: \[SMS/{sub(/^Subject: \[SMS:[0-9]+\]/,"");print}'|linuxsms -server:gomobile2 -prefix:32 -number:$MATCH :0 * ^From: root@teuwen\.org .Logs/ # Pour trier toutes les mailing-lists de Debian dans des folders séparés: :0 * ^X-Mailing-List: <debian-.+@lists\.debian\.org> * ^X-Mailing-List: <debian-\/[-a-zA-Z0-9]+ .Debian.$MATCH/
Voir MailServer, section Procmail pour plus d'infos
ainsi que:
apt-get install procmail-lib
Pour vérifier la syntaxe du fichier:
proclint ~/.procmailrc
Nombreuses recettes dans /usr/share/procmail-lib qu'on peut inclure via INCLUDERC,
cf /usr/share/doc/procmail-lib/examples
winmail.dat
Pour décoder les attachements d'Outlook, utiliser ytnef et éventuellement l'intégrer à procmail:
apt-get install ytnef libmime-perl libmailtools-perl
(en tant q'utilisateur:)
mkdir -p ~~/.ytnef/output
dans ~/.procmailrc, ajouter qqch comme:
PATH=/bin:/usr/bin HOME=/home/<user> :0fw * > 0 | /usr/bin/ytnef-filter
Sort and copy
Le but de ce setup est de trier les mails, les marquer comme lus, et placer une copie non-lue dans un répertoire commun .
Ainsi pour consulter les nouveaux mails, un seul répertoire à regarder où l'on efface au fur et à mesure les mails qu'on a lu.
Les mails triés habituellement servent alors uniquement d'archives.
.procmail-file.rc
#.procmail-file.rc # # Author: Philippe Teuwen <phil@teuwen.org> # # Set these variables before invoking: # # As global: # COPYDEST Destination to drop a copy of the filed mail, this copy will be left unread # Per rule: # REGEXn With n=1..3, allows to have up to three regexps on the headers (^ is already prepend) # DEST Destination into which addressed mail will be dropped, this copy will be marked as read # NOCOPY=1 (opt) Set the variable to avoid leaving the copy, only filing and marking as read # INCLUDERC=.procmail-file.rc :0 * $REGEX3 ?? . * $REGEX2 ?? . * $REGEX1 ?? . * $ ^$REGEX1 * $ ^$REGEX2 * $ ^$REGEX3 { :0 c * ! $NOCOPY ?? . $COPYDEST # To file the mail as usual (c is just to continue rules processing, the copy won't be used) :0 c $DEST # To mark the last mail as read by renaming the file :0 ai * LASTFOLDER ?? ()\/[^/]+^^ |mv "$LASTFOLDER" "$DEST/cur/$MATCH:2,S" } :0 * ! $REGEX3 ?? . * $REGEX2 ?? . * $REGEX1 ?? . * $ ^$REGEX1 * $ ^$REGEX2 { :0 c * ! $NOCOPY ?? . $COPYDEST # To file the mail as usual (c is just to continue rules processing, the copy won't be used) :0 c $DEST # To mark the last mail as read by renaming the file :0 ai * LASTFOLDER ?? ()\/[^/]+^^ |mv "$LASTFOLDER" "$DEST/cur/$MATCH:2,S" } :0 * ! $REGEX3 ?? . * ! $REGEX2 ?? . * $REGEX1 ?? . * $ ^$REGEX1 { :0 c * ! $NOCOPY ?? . $COPYDEST # To file the mail as usual (c is just to continue rules processing, the copy won't be used) :0 c $DEST # To mark the last mail as read by renaming the file :0 ai * LASTFOLDER ?? ()\/[^/]+^^ |mv "$LASTFOLDER" "$DEST/cur/$MATCH:2,S" } REGEX1= REGEX2= REGEX3= NOCOPY=
.procmailrc
COPYDEST=.Already_filed/ FILER="${HOME}/.procmail-file.rc" # Example: 2 regex to select mail s from root and with subject Cron REGEX1="From:.*root" REGEX2="Subject: Cron" DEST=.Logs.Cron/ INCLUDERC=$FILER # Another example: reminders are folded and marked as read but # we don't even want to see them in our COPYDEST REGEX1="Subject:.*mailing list memberships reminder" NOCOPY=1 DEST=.Mailing-lists.reminders/ INCLUDERC=$FILER