getmail :: a very simple tutorial
Contents
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.
Greek Description
Το παραπάνω πρόγραμμα αποτελεί μία παραλλαγή του fetchmail και η χρησιμότητά του είναι
να "διαβάζει" και να "κατεβάζει" ηλεκτρονικά μηνύματα από έναν pop λογαριασμό ηλεκτρονικού ταχυδρομείου.
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
Δομή getmailrc
Το λογισμικό getmail "διαβάζει" εξ ορισμού το αρχείο: /.getmail/getmailrc
Αλλά με την παράμετρο -r μπορεί να διαβάσει πολλαπλά getmailrc αρχεία.
Το αρχείο ρυθμίσεων του getmail χωρίζεται κυρίως σε 4 κατηγορίες:
- Ρυθμίσεις
- Λογαριασμός
- Φίλτρα
- Προορισμός
και οι τέσσερις κατηγορίες ορίζονται στο αρχείο ρυθμίσεων ως εξής:
- [options]
- [retriever]
- [filter]
- [destination]
getmailrc
Όπως είπατε το default getmailrc:
/home/username/.getmail/getmailrc
κι ένα τυπικό παράδειγμα είναι το εξής:
[options] delete = true message_log = ~/.getmail/log verbose = 2 [retriever] type = SimplePOP3Retriever server = the_mail_server username = the_username password = the_password port = 110 [destination] type = Mboxrd path = /var/mail/the_username
Το οποίο περιγράφει τα εξής:
- Ρυθμίσεις
Διέγραψε τα 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
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 αφαιρούνται και ΔΕΝ παραδίδονται.
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")
Multi Rc files (aka multi email account)
Πως μπορούμε να κατεβάσουμε πολλαπλούς διαφορετικούς λογαριασμούς με πολλαπλά διαφορετικά rc αρχεία.
απλά μπορούμε να πληκτρολογήσουμε την εξής εντολή:
$ getmail -r getmailrc1 -r getmailrc2 -r getmailrc3 -r getmailrc4
debug
getmail --dump or getmail --trace
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