Hits : 4517

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.


top


Greek Description


Το παραπάνω πρόγραμμα αποτελεί μία παραλλαγή του fetchmail και η χρησιμότητά του είναι
να "διαβάζει" και να "κατεβάζει" ηλεκτρονικά μηνύματα από έναν 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


κι ένα τυπικό παράδειγμα είναι το εξής:


[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


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