Επόμενο Προηγούμενο Περιεχόμενα
Το procmail έρχεται σήμερα ως ο default mail
delivery agent σε SuSE 6.4 και Slackware 7.1.
Αυτό σημαίνει ότι όχι μόνο το procmail έρχεται
έτοιμο σε αυτές τις διανομές αλλά και ότι το sendmail
είναι έτσι ρυθμισμένο ώστε να χρησιμοποιεί το
procmail σαν mail delivery agent (MDA) αντί του
παραδοσιακού mail. Σύμφωνα με τα παραπάνω συμπεραίνω
(μπορεί και εσφαλμένα βέβαια) ότι το procmail
έρχεται ως ο default MDA στις περισσότερες διανομές.
Εάν είναι αυτή η περίπτωση σας τότε θα πρέπει να
κατεβάσετε το procmail απο το http://www.procmail.org, να
το κάνετε compile σύμφωνα με τις οδηγίες που σας δίνει
και να το εγκαταστήσετε. Τώρα έχετε δύο επιλογές:
Mπορείτε να ρυθμίσετε το sendmail ώστε να χρησιμοποιεί
απευθείας το procmail σαν MDA ή
Nα βάλετε μέσα στο .forward την παρακάτω γραμμή:
|exec /usr/bin/<bf/procmail/
Βεβαίως υπάρχουν και άλλοι τρόποι για να ξεκινήσεις το
procmail αλλά αυτοί ξεφεύγουν απο τον σκοπό αυτού
του κειμένου ο οποίος είναι να δείξει τις βασικές ρυθμίσεις
και λειτουργίες του
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}
Επόμενο Προηγούμενο Περιεχόμενα