procmail: Στο ψητό
Description: This is issue 30 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #30
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 2. Στο ψητό ### 2.1 Η κατάσταση των διανομών σε σχέση με το procmail σήμερα Το procmail έρχεται σήμερα ως ο default mail delivery agent σε SuSE 6.4 και Slackware 7.1. Αυτό σημαίνει ότι όχι μόνο το procmail έρχεται έτοιμο σε αυτές τις διανομές αλλά και ότι το sendmail είναι έτσι ρυθμισμένο ώστε να χρησιμοποιεί το procmail σαν mail delivery agent (MDA) αντί του παραδοσιακού mail. Σύμφωνα με τα παραπάνω συμπεραίνω (μπορεί και εσφαλμένα βέβαια) ότι το procmail έρχεται ως ο default MDA στις περισσότερες διανομές. ### 2.2 Εάν το procmail δεν έχει έρθει μαζί με την διανομή μου τι κάνω; Εάν είναι αυτή η περίπτωση σας τότε θα πρέπει να κατεβάσετε το procmail απο το http://www.procmail.org, να το κάνετε compile σύμφωνα με τις οδηγίες που σας δίνει και να το εγκαταστήσετε. Τώρα έχετε δύο επιλογές: Mπορείτε να ρυθμίσετε το sendmail ώστε να χρησιμοποιεί απευθείας το procmail σαν MDA ή Nα βάλετε μέσα στο .forward την παρακάτω γραμμή:
    |exec /usr/bin/<bf/procmail/
Βεβαίως υπάρχουν και άλλοι τρόποι για να ξεκινήσεις το procmail αλλά αυτοί ξεφεύγουν απο τον σκοπό αυτού του κειμένου ο οποίος είναι να δείξει τις βασικές ρυθμίσεις και λειτουργίες του procmail. ### 2.3 Κατάφερα να ξεκινήσω το procmail μετά τι κάνω; Το procmail αφού ξεκινήσει διαβάζει τις οδηγίες που του έχετε γράψει εσείς μέσα στο .procmailrc στο home directory σας. Μέσα σε αυτο το αρχείο δηλώνονται κάποιες μεταβλητές περιβάλλοντος και οι οδηγίες επεξεργασίας του εισερχόμενου e-mail ας κοιτάξουμε ένα απο τα παραδείγματα που δίνει το procmail μαζί με τον κώδικά του. Εξετάζουμε το 1procmailrc #### Οι μεταβλητές περιβάλλοντος Στην αρχή δηλώνει κάποιες μεταβλητές περιβάλλοντος όπως το `PATH`, το `DEFAULT MAILBOX`, το `MAILDIRECTORY`, το `LOGFILE` και ένα `LOCKFILE`. Το `MAILDIRECTORY` είναι το directory μέσα στο οποίο θα μπούν όλα τα αρχεία που θα δημιουργηθούν απο το procmail μετά απο την επεξεργασία των e-mail. Το `DEFAULT MAILBOX` είναι το directory μέσα στο οποίο θα καταλήξουν τα e-mail που δεν θα πληρούν καμία απο τις συνθήκες φιλτραρίσματος απο αυτές που έχετε γράψει παρακάτω. Δεν είναι απαραίτητο να ορίσετε `DEFAULT MAILBOX`. Εάν δεν ορίσετε `DEFAULT MAILBOX` τα e-mail θα παραμείνουν στο `/var/spool/username`. Το `LOGFILE` είναι το αρχείο που καταγράφονται όλες οι κινήσεις του procmail. Όσο για το `LOCKFILE` είναι το αρχείο που χρησιμοποιείται για το κλείδωμα του `DEFAULT MAILBOX` για να αποφευχθεί η περίπτώση να έρθουν δύο e-mail συγχρόνως και να προσπαθόυν δύο procmail να γράψουν στο `DEFAULT MAILBOX` την ίδια στιγμή με αποτέλεσμα να χάσετε ένα απο τα δύο e-mail. #### Filtering rules Ο τρόπος που συντάσσονται οι κανόνες φιλτραρίσματος για το procmail είναι ο παρακάτω:
    :0<flags>:lockfile

    contitions

    exactly one action.
Φυσικά μπορούμε να χρησιμοποιήσουμε πολλα τέτοια block εντολών μέσα σε ένα .procmailrc #### Flags Στην πρώτη γραμμή δηλώνουμε ότι ξεκινάμε ένα νέο `block απο filtering rules` (χρησιμοποιώντας το `:0`). Δηλώνουμε με τι `flags` θέλουμε να γίνει αυτο το φιλτράρισμα και αν θέλουμε όσο γίνεται αυτο να έχουμε κλειδωμένο το αρχείο ή τα αρχεία στα οποία αναφέρεται αυτο το `block` με ένα `lockfile`. Μερικά απο τα πιο κοινά `flags` είναι το `c` και το `f` με το πρώτο δημιουργούμε ένα πιστό αντίγραφο του μυνήματος που βρίσκεται υπο επεξεργασία και δουλεύουμε πάνω σε αυτό. Αυτό το flag χρησιμοποιείται όταν θέλουμε να στείλουμε ή να προωθήσουμε ένα μύνημα σε πολλούς παραλήπτες ή σε πολλούς φακέλους. Το δεύτερο flag χρησιμοποιείται όταν θέλουμε να θεωρήσουμε το ένα `pipe` σαν φίλτρο. Φυσικά το πιο κοινό είναι να μην χρησιμοποιήσουμε καθόλου `flags` και να επεξεργαστούμε το ίδιο το e-mail με το procmail χωρίς να το περάσουμε σε ένα άλλο πρόγραμμα ή να εργαστούμε πάνω σε ένα αντίγραφο του. Υπάρχουν και άλλα πολλά `flags` τα οποία συνδιαζόμενα δίνουν στο procmail τεράστια ευελιξία αλλά δεν θα αναφερθούν έδω. Περιγράφονται αναλυτικά στο σχετικό manual page (`man procmailrc`). #### Lockfiles Το γιατί μπορεί κάποιος να θέλει να χρησιμοποιήσει `lockfiles` έχει αναφερθεί παραπάνω. Το όνομα ενός `lockfile` δηλώνεται ως εξής :
    :0<flags>:lockfilename
Μπορούμε να παραλείψουμε το όνομα του `lockfile` και η προηγούμενη έκφραση να γίνει η εξής
    :0<flags>:
οπότε το procmail χρησιμοποιεί το όνομα του αρχείου στο οποίο αναφέρεται αυτο το `block` εντολών για να φτιάξει ένα `lockfile`. Ασφαλώς μπορούμε να μην χρησιμοποιήσουμε καθόλου `lockfile` σε ένα block εντολών οπότε η έκφραση γίνεται
    :0<flags>
Υπάρχουν δύο περιπτώσεις όπου η χρήση `lockfile` δεν έχει νόημα. Η μια περίπτωση είναι αυτή οταν κατευθύνεις κάποιο μύνημα στο /dev/null και ή δέυτερη είναι όταν κάνεις forward ένα μύνημα σε κάποια άλλη διέυθυνση e-mail (όπως στο παράδειγμα procmailrc ). #### Conditions Το procmail για να δει εάν το μύνημα που επεξεργάζεται αυτή την στιγμή πληρεί τις συνθήκες που εσείς του έχετε δηλώσει περνάει όλο το μύνημα μέσα απο την `egrep` δίνοντας της σαν `regular expression` τα contitions που έχετε γράψει εσείς. Δηλαδή τα contitions αυτά δεν είναι τίποτα άλλο απο `regular expressions`. Για περισσότερα για τις `regular expressions, man egrep.` #### Action(s) Τα actions του procmail μπορεί να είναι οτιδήποτε (σχεδόν) απο ένα απλό όνομα οπότε το procmail γράφει τα μυνήματα που πληρούν τις συνθήκες σε ένα αρχείο με αυτο το όνομα μέσα στο `MAILDIRECTORY`, μια ή πολλές e-mail adress οπότε το procmail απλά κάνει forward το μύνημα σε αυτές τις διευθύνσεις ή τέλος το input οποιουδήποτε προγράμματος. Όπως έχω γράψει παραπάνω την σύνταξη των `filtering rules` είμαστε αναγκασμένοι να χρησιμοποιήσουμε μόνο ένα `action`. Μπορούμε όμως με την χρήση των αγκύλων {} να κάνουμε `nest` πολλά `blocks` απο `actions` τα οποία μπορεί να είναι ακόμα και condition rules :
    :0:
    condition
    {action1,action2,action3}
Επόμενο Προηγούμενο Περιεχόμενα