Επόμενο Προηγούμενο Περιεχόμενα
Το 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}
Επόμενο Προηγούμενο Περιεχόμενα