View source for getmail

{{anchor href="top"}}
Hits :  **{{hits}}**

== getmail :: a very simple tutorial ==

{{ToC from="h2" to="h3"}}

=== 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 ((http://fetchmail.berlios.de/ fetchmail)).

((#top))
-----------

=== Greek Description ===

Το παραπάνω πρόγραμμα αποτελεί μία παραλλαγή του ((http://fetchmail.berlios.de/ fetchmail)) και η χρησιμότητά του είναι
να "διαβάζει" και να "κατεβάζει" ηλεκτρονικά μηνύματα από έναν pop λογαριασμό ηλεκτρονικού ταχυδρομείου.

((#top))
-----------

=== Installation ===

Η εγκατάσταση του getmail είναι αρκετά απλή, αρκεί φυσικά να έχουμε εγκατεστημένο ένα python interpreter.

%%(code)
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 **

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

%%(html)

[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.

%%(code)
[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)

%%(code)
[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 αρχεία.

απλά μπορούμε να πληκτρολογήσουμε την εξής εντολή:
%%(code)
$ getmail -r getmailrc1 -r getmailrc2 -r getmailrc3 -r getmailrc4
%%

((#top))
-----------

=== debug ===

%%(code)
getmail --dump

or

getmail --trace
%%

((#top))
-----------

=== A simple bash script to use it via cron ===

%%(bash)
#!/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))
-----------