Hits :
4518
getmail :: a very simple tutorial
getmail
http://pyropus.ca/software/getmail/
getmail is a mail retriever designed to allow you to get your mail from one or more mail accounts on various mail servers to your local machine for reading with a minimum of fuss. getmail is designed to be secure, flexible, reliable, and easy-to-use. getmail is designed to replace other mail retrievers such as
fetchmail[link1].
top
Greek Description
Το παραπάνω πρόγραμμα αποτελεί μία παραλλαγή του
fetchmail[link1] και η χρησιμότητά του είναι
να "διαβάζει" και να "κατεβάζει" ηλεκτρονικά μηνύματα από έναν pop λογαριασμό ηλεκτρονικού ταχυδρομείου.
top
Installation
Η εγκατάσταση του getmail είναι αρκετά απλή, αρκεί φυσικά να έχουμε εγκατεστημένο ένα python interpreter.
wget -c http://pyropus.ca/software/getmail/old-versions/getmail-4.13.0.tar.gz
tar zxvf getmail-4.13.0.tar.gz
cd getmail-4.13.0
python setup.py build
python setup.py install
top
Δομή getmailrc
Το λογισμικό getmail "διαβάζει" εξ ορισμού το αρχείο:
/.getmail/getmailrc
Αλλά με την παράμετρο -r μπορεί να διαβάσει πολλαπλά getmailrc αρχεία.
Το αρχείο ρυθμίσεων του getmail χωρίζεται κυρίως σε 4 κατηγορίες:
- Ρυθμίσεις
- Λογαριασμός
- Φίλτρα
- Προορισμός
και οι τέσσερις κατηγορίες ορίζονται στο αρχείο ρυθμίσεων ως εξής:
- [options]
- [retriever]
- [filter]
- [destination]
getmailrc
Όπως είπατε το default getmailrc:
/home/username/.getmail/getmailrc
κι ένα τυπικό παράδειγμα είναι το εξής:
Formatter "highlight/html" not found
Το οποίο περιγράφει τα εξής:
Διέγραψε τα email όταν τα κατεβάσεις από τον λογαριασμό (delete=true),
εμφάνισε όλα τα συμβάντα στο αρχείο /.getmail/log (message_log)
και το επίπεδο των λεπτομερειών που θα εμφανίζονται ως συμβάντα να είναι το 2 (verbose = 2)
Ο λογαριασμός είναι POP3 (type = SimplePOP3Retriever), κι ο mail server ο the_mail_server (server = the_mail_server),
με όνομα χρήστη: the_username (username = the_username) και συνθηματικό: the_password (password = the_password),
στην πόρτα TCP: 110 (port = 110)
Να αποθηκεύσει τα email που κατεβάζει σε mailbox format (type = Mboxrd) στο mbox αρχείο: /var/mail/the_username
top
Filter
SpamAssassin
Το παρακάτω παράδειγμα χρησιμοποιεί την directive filter ώστε να 'περνάει" τα email που "κατεβάζει"
πριν τα παραδώσει στο τελικό αρχείο. Με αυτό τον τρόπο μπορούμε να χρησιμοποιήσουμε το spamassassin
ώστε να "μαρκάρουμε" ένα email ως spam.
[filter-spamassassin]
type = Filter_external
path = /usr/bin/spamassassin
ΠΡΟΣΟΧΗ: Εάν έχουμε μόνο ένα φίλτρο τότε μπορούμε να χρησιμοποιήσουμε την εξής δήλωση: [filter],
εάν έχουμε πολλαπλά φίλτρα τότε χρειάζεται να τα ορίσουμε ως εξής: [filter-
NAME_OF_FILTER]
ClamAv
Εάν θέλουμε να προσθέσουμε ένα ακόμα φίλτρο ώστε να ελέγχει τα email για ιοιούς (virus):
[filter-ClamAv]
type = Filter_classifier
path = /usr/local/bin/clamscan
arguments = ("--quiet", "--no-summary", "--stdout", "--infected", "--remove", "-")
exitcodes_drop = (1,)
ΠΡΟΣΟΧΗ: Με το παραπάνω φίλτρο τα infected mails αφαιρούνται και ΔΕΝ παραδίδονται.
top
Multi Destination
Από τα πιο ωραία πράγματα που μπορείς να κάνεις με το getmail είναι ότι μπορείς να παραδώσεις τα email σε παραπάνω από 1 διαδρομές (mailboxes).
Οπότε μπορείς να "μοιράσεις" τα email από έναν λογαριασμό σε πολλαπλούς λογαριασμούς με αποτέλεσμα πολλοί χρήστες να παραλαμβάνουν τα ίδια emails
σε διαφορετικούς λογαριασμούς (δουλεύει και ως λύση backup)
[destination]
type = MultiDestination
destinations = ( '[Mbox]', '[Maildir]', '[Postfix]', '[Dovecot-LDA]' )
Mailbox Format
[Mbox]
type = Mboxrd
path = /var/mail/ebalaskas1
user = ebal
Maildir Format
[maildir]
type = Maildir
path = /var/mail/ebalaskas2
user = ebal
External MDA: Postfix/Sendmail
Εάν θέλουμε το getmail να ΜΗΝ τα παραδίδει σε κάποιο λογαριασμό email αλλά να τα προωθεί προς άλλο λογαριασμό (bounce) μέσω postfix ή sendmail:
[Postfix]
type = MDA_external
path = /usr/sbin/sendmail
arguments = ("-i", "-bm", "ebalaskas@ebalaskas.gr")
unixfrom = true
External MDA: Dovecot LDA
Κι εάν θέλουμε να τα παραδίδει ο local deliver agent του Dovecot:
[Dovecot-LDA]
type = MDA_external
path = /usr/local/libexec/dovecot/deliver
arguments = ("-f", "ebalaskas", "-d", "ebalaskas")
top
Multi Rc files (aka multi email account)
Πως μπορούμε να κατεβάσουμε πολλαπλούς διαφορετικούς λογαριασμούς με πολλαπλά διαφορετικά rc αρχεία.
απλά μπορούμε να πληκτρολογήσουμε την εξής εντολή:
$ getmail -r getmailrc1 -r getmailrc2 -r getmailrc3 -r getmailrc4
top
debug
getmail --dump
or
getmail --trace
top
A simple bash script to use it via cron
#!/bin/bash
# COMMAND='/usr/bin/getmail -vvvvvvvvvvvvvvvvv'
COMMAND='/usr/bin/getmail -q'
FILELOCK=~/.getmail/getmail.lock
if [ ! -f "$FILELOCK" ]; then
lockfile -l 120 $FILELOCK
OUTPUT="`$COMMAND 2>&1`"
if [ -n "$OUTPUT" ]; then
echo $OUTPUT | /usr/bin/mail -s 'Getmail error! ' ebalaskas _AT_ ebalaskas _DOT_ gr fi
rm -f $FILELOCK
else
echo " Is locked man "
fi
top