PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einzeluser-Mailsystem unter debian, mit exim4, mutt, procmail und spamassassin



carnil
26.11.04, 20:42
Inhaltsverzeichnis

0 Vorwort, "Copyright und Anmerkungen" (http://www.linuxforen.de/forums/showpost.php?p=1009011&postcount=1)

0.1 Vorwort
0.2 Copyright zum Vorlagehowto
0.3 Anmerkungen
0.4 Quellen

1 Exim4 einrichten (http://www.linuxforen.de/forums/showpost.php?p=1009016&postcount=2)
2 Procmail einrichten (http://www.linuxforen.de/forums/showpost.php?p=1009020&postcount=3)
3 Fetchmail einrichten (http://www.linuxforen.de/forums/showpost.php?p=1009024&postcount=4)
4 Spamassassin einrichten (http://www.linuxforen.de/forums/showpost.php?p=1009026&postcount=5)
5 Mutt als MUA einrichten (http://www.linuxforen.de/forums/showpost.php?p=1009030&postcount=6)

5.1 Grundkonfiguration von Mutt
5.2 vim als Editor für die e-mails
5.3 abook - Addressbuch
5.4 urlview
5.5 Anhänge und Html-Mails



0 Vorwort, "Copyright und Anmerkungen"
0.1 Vorwort
In diesem kleinen Howto soll es um das Einrichten von exim4, procmail, fetchmail, spamassassin und mutt als MUA unter Debian auf einem Einzelusersystem gehen. Dabei orientiere ich mich sehr stark an zwei im Internet gefundenen Howto's auf Englisch - die ich grösstenteils auch einfach übersetzt habe, diesbezüglich bitte dann Unterkapitel 0.2 beachten. Einerseits, die Einrichtung von exim4, procmail, fetchmail und mutt [1] (http://homepage.ntlworld.com/lativy/articles/debian-mutt/) und andererseits für spamassassin [2] (http://people.debian.org/~andrelop/txt/spamassassin-debian.txt), sowie auch ein allgemeinerer Artikel [3] (http://brneurosci.org/linuxsetup49.html). Ich hoffe, dass durch diese kleine Übersetzung, und trotzdem doch nicht ganz eins zu eins übernommen, sonst hätte ich ja einfach den Link posten können, kann ich jemandem damit helfen, obiges einzurichten, genauso wie es mir unheimlich geholfen hat. Nochmals: Dies bezieht sich jetzt mal explizit auf Debian, wie im Titel des howto's erwänt.

0.2 Copyright zum Vorlagehowto
Die "Hauptidee" habe ich von [1], einerseits habe ich eine Übersetzung stellenweise gemacht, andererseits auch schon nur die Idee davon als Basis genommen, und eingedeutscht. Foglich, muss ich hier noch einen Verweis auf die FDL angeben, weil es der dortige Author möchte.


Copyright (C) 2004 Nicholas Lativy
Contributors: Florian Schlichting
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the licence can be found here (http://www.gnu.org/licenses/fdl.txt).


0.3 Anmerkungen
Ich glaube nicht, dass dieses wirklich sehr kleine Howto einfach ein Abklatsch und Übersetzung der Links [1],[2] und [3] geworden ist, auch ist es auf eine spezifische Distribution bezogen. Mit etwas wenig Arbeit lässt es sich bestimmt auch auf andere Distributionen übertragen, entsprechend halt den Schritten die wirklich auf debian bezogen sind (apt-get, dpkg-reconfigure, usw ...).
Kritik und Verbesserungsvorschläge sind natürlich sehr herzlich villkommen, auch wenn jemand beim Testen grobe Fehler bemerkt, bitte melden!

Folgende Basisprogramme sind dabei nötig: cron muss installiert sein, wenn man dann fetchmail so einrichten möchte, dass es automatisch mails abholen wird.
Als Editor für die e-mails wird dann vim eingesetzt also auch dies installieren, jeder beliebige andere Editor geht aber natürlich auch, man wird nur die entsprechende Schritte anpassen müssen.

Das ganze wurde/wird bei mir auf einem Debian Sid getestet. Unter sarge wird es auch noch klappen, bei woody habe ich es nicht ausprobiert, müsste im Prinzip trotzdem gehen, obwohl woody exim benützt, anstatt exim4.

Als weiteres sein noch angefügt, dass hier in Forum auch schon ein weiteres älteres Howto [4] (http://www.linuxforen.de/forums/showthread.php?t=117155) zu etwas ähnlichem existiert, allgemeiner, aber nicht mit exim4 als mailserver.

0.4 Quellen
[1] (http://homepage.ntlworld.com/lativy/articles/debian-mutt/) Email for the single user in Debian: http://homepage.ntlworld.com/lativy/articles/debian-mutt/
[2] (http://people.debian.org/~andrelop/txt/spamassassin-debian.txt) Fighting Spam on Debian with SpamAssassin: http://people.debian.org/~andrelop/txt/spamassassin-debian.txt
[3] (http://brneurosci.org/linuxsetup49.html) Installing spam assassin: http://brneurosci.org/linuxsetup49.html
[4] (http://www.linuxforen.de/forums/showthread.php?t=117155) Einfach & sicher mailen mit ssmtp, fetchmail, procmail und mutt: http://www.linuxforen.de/forums/showthread.php?t=117155

MfG carnil

carnil
26.11.04, 20:50
1 Exim4 einrichten
Als erstes installieren wir alle benötigten Pakete nach:


# apt-get update && apt-get install cron exim4 fetchmail mutt procmail vim

exim4 wird häufig schon installiert sein, falls man bei der Debian-Installation keinen anderen MTA ausgewählt hat. Ebenso wird auch cron schon installiert sein. Wie schon in 0.2 erwähnt, kann man anstelle von vim natürlich auch einen anderen Editor auswählen.

Normalerweise wird exim4 als MTA installiert, bei einer debian-installation. Sollte also schon eingerichtet worden sein. Zur Sicherheit - um die Einstellung bezüglich Mailversand noch richtig einzustellen - machen wir ein:


# dpkg-reconfigure -phigh exim4-config

und konfigurieren exim4. Dabei wollen wir nur die Fragen mit hoher Priorität bei debconf beantworten. Wir wählen:


mail sent by smarthost; recieved via SMTP or Fetchmail

So siehts aus: http://www.linuxforen.de/forums/attachment.php?attachmentid=10868

Mit obigen Befehl garantieren wir, dass nur diejenigen Fragen gestellt werden, die debconf als "von hoher Priorität" einstuft, beim Rest werden automatisch Einstellungen gemacht.

Als nächstes, müssen wir die e-mail addressen, konfigurieren, die in das Feld "From"/"Von" eingesetzt werden sollen, dafür editieren wir die Datei /etc/email-addresses:


# This is /etc/email-addresses. It is part of the exim package
#
# This file contains email addresses to use for outgoing mail. Any local
# part not in here will be qualified by the system domain as normal.
#
# It should contain lines of the form:
#
#user: someone@isp.com
#otheruser: someoneelse@anotherisp.com
$LOCALUSERNAME: $EMAIL-ADDRESSE
Also wie im Hilfetext eine entsprechende Zeile für das/die e-mail-account(s) einsetzen.
Man ersetze also user mit dem lokalen Usernamen $LOCALUSERNAME, und die e-mail Adresse.

carnil
26.11.04, 20:53
2 Procmail einrichten
Zunächst, was ist denn Procmail überhaupt? Dies ist sehr leicht auch über ein apt-cache show procmail möglich zu lesen:


Description: Versatile e-mail processor
Can be used to create mail-servers, mailing lists, sort your incoming
mail into separate folders/files (real convenient when subscribing to one
or more mailing lists or for prioritising your mail), preprocess your
mail, start any programs upon mail arrival (e.g. to generate different
chimes on your workstation for different types of mail) or selectively
forward certain incoming mail automatically to someone.

Procmail ist also bei uns dazu da, e-mails zu filtern, sagen wir z.B. um spam auszufiltern, und wenn man z.B. an mehere Mailinglisten angemeldet ist, um deren mails in verschiedene Verzeichnisse zu verschieben. Schreiben wir mal folgendes in die ~/.procmailrc


# Wo befindet sich das Mail-Verzeichnis?
MAILDIR=$HOME/mail/
# Wohin soll das log-file? Da wir hier alles für einen Einzel-User machen:
LOGFILE=$HOME/.procmaillog
# procmail soll nicht im verbose-Mode laufen
VERBOSE=no

# Die nächsten Einträge werden dann für die Konfiguration
# spamassassin von Belang sein, siehe dafür weiter unten,
# für eine Erklärung:
:0 fhw
| spamc

:0 fhw
* ^X-Spam-Status: Yes
spam/

## Mailinglisten. Für dieses Howto nehmen wir mal an, wir
# in den mailinglisten debian-user und debian-user-german
# eingeschrieben:

# debian-user-german
:0
* ^TO_debian-user-german
debian-user-german/

# debian-user
:0
* ^TO_debian-user
debian-user/

# Alle anderen, nicht gefilterten Mails sollen in inbox
# verschoben werden.
:0
inbox/

Man beachte bitte die abschliessenden "/" für die mailboxen, damit wird procmail amgewiesen, dass es diese Verzeichnisse als Verzeichnisse im maildir-format verwenden soll.
Wir erstellen anschliessend die benötigten Verzeichnisse mit


$ mkdir -p ~/mail/inbox/{cur,new,tmp}
$ mkdir -p ~/mail/sent/{cur,new,tmp}
$ mkdir -p ~/mail/spam/{cur,new,tmp}
$ mkdir -p ~/mail/debian-user/{cur,new,tmp}
$ mkdir -p ~/mail/debian-user-german/{cur,new,tmp}

Ist natürlich selbstverständlich, dass man diejenigen Verzeichnisse für debian-user, oder debian-user-german ausslassen kann, wenn man nicht in einer solchen Mailingliste eingeschrieben ist.

carnil
26.11.04, 20:56
3 Fetchmail einrichten
Da wir hier nur ein "System" mit einem Einzelusermailaccount zum abholen betrachten wollen, schreiben wir die benötigten Einstellungen einfach in die lokale ~/.fetchmailrc, da dies "die" einfachste Methode ist, fetchmail so einzurichten, dass es auch als denjenigen User läuft, für den die mails abgeholt werden sollen. Schreiben wir also in die ~/.fetchmailrc folgendes hinein:


poll pop.isp.com with protocol pop3,
user isp_username there is local_username here,
with password isp_password;

mda '/usr/bin/procmail -f fetchmail'

Wir ersetzen, natürlich pop.isp.com, isp_username und local_username mit den entsprechenden Werten, sowie natürlich auch pop3 für das entsprechende zu verwendende Protokol (es sei hier mal z.B. angemerkt, dass mit pop3 fetchmail unverschlüsselt das Passwort sendet, man kann also auch apop dafür verwenden). Die Unterstützten Protokolle kann man in der Manpage von fetchmail nachlesen.
Für gmx macht man z.B. folgende Einstellungen:


poll pop.gmx.net with protocol pop3,
user $LOGINNAME@gmx.net there is $LOCALUSER here,
with password $PASSWORT;

Die ganze Prozedur, soll natürlich für jedes mail-account von dem man mails abholen möchte wiederholen.
Man beachte, dass hier die Passworter im Klartext eingegeben werden!
Die Mails werden, dann direkt procmail übergeben, der dann diese eintsprechend den in ~/.procmailrc Filterregeln sortiert werden.

Nun Testen wir, ob fetchmail richtig eingerichtet ist, dafür geben wir in einer Konsole


fetchmail -vk

ein. Es werden nicht "real" die mails abgeholt, sondern nur getestet, siehe dazu was in der Manpage zu fetchmail zu den Parametern -k und -v steht:


-v | --verbose
Verbose mode. All control messages passed between fetchmail and
the mailserver are echoed to stdout. Overrides --silent. Dou-
bling this option (-v -v) causes extra diagnostic information to
be printed.
-k | --keep
(Keyword: keep) Keep retrieved messages on the remote
mailserver. Normally, messages are deleted from the folder on
the mailserver after they have been retrieved. Specifying the
keep option causes retrieved messages to remain in your folder
on the mailserver. This option does not work with ETRN or ODMR.

Also lassen wir es sicherheitshalber im verbose-Modus laufen, dass alle Meldungen auf der Konsole erscheinen werden, und zusätzlich weisen wir fetchmail an, die e-mails auf dem/den server(n) zu belassen.

Funktioniert alles wie gewünscht, richten wir jetzt für den lokalen User die crontab entsprechend ein. Mit


$ crontab -e

und stellen wir fetchmal so ein, dass es alle 10 Minuten, Mails abholen soll. Zusätzlich übergeben wir noch die Option -s mit, damit es nicht ständig Meldungen ausgibt.


*/10 * * * * fetchmail -s

carnil
26.11.04, 20:59
4 Spamassassin einrichten
Als nächstes richten wir noch spamassassin ein. Falls es noch nicht installiert worden ist, kann man dies jetzt an dieser Stelle mit


# apt-get install spamassassin

nachholen, wobei die benötigten Abhängigkeiten schön aufgelöst werden.

Nun editieren wir die Datei /etc/default/spamassassin und ersetzen


ENABLED=1

Um spamd erlauben zu können, zu starten. Anschliessend können wir mit


# /etc/init.d/spamassassin start

den spamassassin daemon starten. Der obige Befehl startet spamd, eine Daemon-Version von Spamassassin, welches viel schneller als die offizielle Perl-Version sein soll. Anschliessen können wir auch die anfangs gemachten Einträge in ~/.procmailrc erklären:


:0 fhw
| spamc

übergibt alle mails spamc (dem client, welche mit spamd kommuniziert), und welcher alle e-mails scannt. Will man die E-Mails die als Spam "markiert" werden von den anderen sauberen trennen, kann man dies durch folgende weitere Filterregel einrichten:


:0 fhw
* ^X-Spam-Status: Yes
spam/


Des weiteren editieren wir noch die Datei /etc/spamassassin/local.cf


required_hits 4.2
rewrite_subject 1
rewrite_header Subject *****SPAM*****
report_safe 0
report_header 1
auto_learn 1

Anschliessend starten wir, spamassassin nochmals:


# /etc/init.d/spamassassin restart

carnil
26.11.04, 21:02
5 Mutt als MUA einrichten
5.1 Grundkonfiguration von Mutt
Diese schreiben wir jetzt in die ~/.muttrc:


set mbox_type=maildir
set mbox="~/mail/inbox/"
set spoolfile="~/mail/inbox/"
set folder="~/mail/"
set record="~/mail/sent/"

# Füge hier für jede Mailbox einen Eintrag hinzu:
mailboxes ~/mail/inbox ~/mail/debian-user ~/mail/debian-user-german


# Wir wollen in der Header, nur die Informationen "from", "resent-from"
# "reply-to", "x-mailer" "user-agent" "date" "to" "cc" und "subject" an-
# zeigen lassen.

ignore *
unignore from resent-from reply-to x-mailer user-agent date to cc subject

# In welcher Reihenfolge sollen diese gewünschten Header angezeigt werden?
hdr_order From: Resent-From: Reply-To: X-Mailer: User-Agent: Date: To: Cc: Subject:

# Wie sollen die Mail sortiert werden?
set sort=threads

# Soll beim antworten, atomatisch zitiert werden? In diesem Fall
# ja
set include=yes

# Wie soll zitiert werden
set indent_str="> "

# Zeige den body nur an, wenn eine Mail editiert wird.
unset edit_headers

# Möchten auch Mutt so einstellen, dass man auch fetchmail manuell
# aufrufen kann. Durch eingegen von G wird fetchmail aufgerufen.
macro index G "!fetchmail\n" "Invoke fetchmail"
macro pager G "!fetchmail\n" "Invoke fetchmail"

# Gebe mutt an, an welche Mailinglisten wir angemeldet sind
subscribe debian-user-german debian-user

# Mit der nächsten Einstellung, richten wir mutt so ein, dass der
# Author des Mails angezeigt wird, in der Liste
set index_format="%4C %Z %{%b %d} %-15.15F (%?l?%4l&%4c?) %s"

# Suche mithilfe von abook als Adressbuch (siehe weiter unten!)
set query_command="abook --mutt-query '%s'"

# muttprint installieren, dann folgende Zeile auskommentieren, damit
# man auch in Mutt die e-mails ausdrucken kann.
# set print_command="muttprint"

# urlview: Ausgeben von links die in einer e-mail vorhanden sind,
# zur Weiterverwendung mit einem Browser
macro index \cb "|urlview\n"
macro pager \cb "|urlview\n"

# Durch drücken der Taste a, kann man den Absender in das
# Addressbuch aufnehmen
macro index a "|abook --add-email\n" 'add sender to abook'
macro pager a "|abook --add-email\n" 'add sender to abook'

# Signatur ide für die e-mails verwendet werden soll. Man lasse hier
# die Pipe "|" weg, wenn es sich um ./signature um kein skipt handeln
# sollte
set signature="~/.signature|"

# Farben definieren für Mutt
color normal default default
color hdrdefault cyan default
color signature green default
color attachment brightyellow default
color indicator brightyellow default
color quoted green default
color quoted1 white default
color tilde blue default
color tree red default

color body cyan default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
color body brightwhite default "(http|ftp|news|telnet|finger)://[^ \">\t\r\n]*"
color body brightwhite default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"

color header brightmagenta default ^(Date):
color header brightyellow default ^Subject:

color body brightred default " [;:]-*[)>(<|]"


5.2 vim als Editor für die e-mails
Man ergänze (wegen der "e-mail-netiquette) folgende Zeilen in der ~/.vimrc


augroup mail
autocmd!
autocmd FileType mail set textwidth=70 wrap nonumber
augroup END

Damit setzt man die anzahl der Zeichen pro Ziele auf 70 Zeichen, sowie deaktiviert Zeilennummerierung, falls diese woanders aktiviert worden ist.

5.3 abook - Addressbuch
Zunächst installieren wir abook, falls dies noch nicht installiert sein sollte.


# apt-get install abook

In der ~/.muttrc füge man nun die schon oben kommentierten Zeilen hinzu:


set query_command="abook --mutt-query '%s'"
macro index a "|abook --add-email\n" 'add sender to abook'
macro pager a "|abook --add-email\n" 'add sender to abook'

Ersteres erlaubt eine Suche im Addressbuch, zweiteres erlaubt durch betätigen der Taste a, das Hinzufügen des Absenders einer e-mail ins Addressbuch.
Das Addressbuch durchsuchen kann dann durch die betätigen von Q (grosses q) erfolgen.

5.4 urlview
Zunächst auch hier installieren:


# apt-get install urlview

Durch hinzufügen der folgenden Zeilen in die ~/.muttrc


macro index \cb "|urlview\n"
macro pager \cb "|urlview\n"

kann dan ndurch Ctrl+B die e-mail nach urls "abgescannt" werden, ide dann in einer Liste ausgegen werden. Auswählen mit den Pfeiltasten, und mit Enter wird die ausgewählte Url dann von demjenigen Browser gestartet, der in /etc/alternatives/x-www.browser gestartet. Will man beispielsweise /usr/bin/mozilla dazu verwenden:


# update-alternatives --set x-www-browser /usr/bin/mozilla


5.5 Anhänge und HTML-Mails
In diesem Schritt verwenden wir explizit lynx als Browser zum darstellen von HTML-Mails (jeder beliebige Browser sollte natürlich auch funktionieren)
Zunächst installieren wir also das benötigte Programm


# apt-get install lynx

Und fügen der (eventuell noch zu erstellenden) Datei ~/.mailcap folgende Zeile an:


text/html; /usr/bin/lynx -force_html '%s'; needsterminal; description=HTML Text; nametemplate=%s.html

Nun können html-Mails die als Anhang angefügt werden, mit lynx gelesen werden.

Ganz analog, kann man nun für das öffnen von beliebigen Attachments vorgehen, beispelsweise noch, zum öffnen von pdf-Files:


application/pdf; /usr/bin/pdftotext '%s' -; copiousoutput; description="PDF File"; nametemplate=%s.pdf

Man beachte, dass dafür aber natürlich pdftotext installiert sein muss, welches sich in xpdf befindet.