Fetchmail - LinuxUserGroup Wernigerode (2024)

Inhaltsverzeichnis

1 Warum brauche ich Fetchmail?

1.1 Installation von Fetchmail
1.2 Wie wird ein Fetchmail eingerichtet

1.2.1 Fetchmail mit LDAP

1.2.1.1 Installation von OpenLDAP

1.2.1.1.1 Installation des neuen Schemas
1.2.1.1.2 Konfiguration des LDAP Servers

1.2.1.2 Fetchmail Starten

2 Fragen, Anregungen und Verbesserungen

Wenn man auf seinem Server einen eigenen Mail-Dienst laufen hat, entsteht schnell der Wunsch, seine ganzen Postächer z.b. GMX und Co. auf seinem eigenen Server automatisch zu sammeln.

Installation von Fetchmail

Unter Debian wie gewohnt einfach mit dem Befehl

apt-get install fetchmail

Wie wird ein Fetchmail eingerichtet

Auf das "normale" Einrichten von fetchmail möchte ich hier ersteinmal nicht eingehen, dazu gibt es mehr als genug Anleitungen; empfehlen kann ist die Fetchmail anleitung von Tuxhausen(http://www.tuxhausen.de/fetchmail.html). Ich habe, da ich auf meinem Server einen LDAP laufen habe, eine Erweiterung von Fetchmail für LDAP geschrieben, auf die ich nun näher eingehen möchte.

Fetchmail mit LDAP

Um Fetchmail mit LDAP nutzen zu können, muß ein LDAP-Server installiert werden und dieser muß dann noch um eine Schemata erweitert werden.

Installation von OpenLDAP

Die Installation von LDAP unter Debian Linux wie gewohnt einfach mit folgendem Befehl:

apt-get install slapd
Installation des neuen Schemas

Nun muss im Verzeichnis /etc/ldap/schema/ eine Datei mit dem Namen fetchmail.schema angelegt werden.

Listing1 das Fetchmail Schema

attributetype ( 1.1.2.1.1.1 NAME ( 'FMMail' ) DESC 'The mail adress wehre the mails fetched from' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{255} SINGLE-VALUE )attributetype ( 1.1.2.1.1.2 NAME ( 'FMMailServerType' ) DESC 'The mailservertype POP3, IMAP ...' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) attributetype ( 1.1.2.1.1.3 NAME ( 'FMMailServer' ) DESC 'The mailserver DNS name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE )attributetype ( 1.1.2.1.1.4 NAME ( 'FMUserName' ) DESC 'The username for loginto the mailserver' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE )attributetype ( 1.1.2.1.1.5 NAME ( 'FMUserPasswd' ) DESC 'The passwd for loginto the mailserver' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE )attributetype ( 1.1.2.1.1.6 NAME ( 'FMFetchMode' ) DESC 'The fetchmailmode kep, all ...' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE )objectClass ( 1.1.2.2.1.1 NAME 'FMFetchMail'DESC 'Additional Objectclass for FetchMail'MUST (FMMail $ FMMailServerType $ FMMailServer $ FMUserName $ FMUserPasswd $ FMFetchMode))

Das Schema sollte nun noch in die /etc/ldap/slap.conf

...include=/schema/fetchmail.schema...

Nun ist der Server fertig und es kann an den LDAP-Baum gehen:-)

Konfiguration des LDAP Servers

Der LDAP Server ist ein Verzeichnisserver, das heisst, es muss eine Baumstruktur aufgebaut werden, die man in *.ldif Dateien beschreibt.

Generell kann unsere LDAP-Server-Konfiguration in die folgenden Teile zerlegt werden, wobei sich der letzte Teil für jeden Benutzer wiederholt.

Anlegen des Stamms zu erkennen an objectClass: top

dn: dc=attanet,dc=dedc: attaneto: attanetobjectClass: topobjectClass: dcObjectobjectClass: organization

Anlegen eines neuen Astes mit Namen UserObjects

dn: ou=UserObjects,dc=attanet,dc=deobjectClass: topobjectClass: organizationalUnitou: UserObjects

Anlegen des LDAP Administrator

dn: cn=admin,dc=attanet,dc=decn: admindescription: LDAP administratorobjectClass: simpleSecurityObjectobjectClass: organizationalRoleuserPassword: Geheim

In den Ast UserObjects einen Benutzer "ansgar" einfügen

dn: uid=ansgar, ou=UserObjects,dc=attanet,dc=deobjectclass: personobjectclass: uidObjectcn: Ansgar Jazdzewskisn: Jazdzewskiuid: ansgarmail: ansgar@attanet.deuserPassword: Geheim

Fügt dem User Ansgar ein Postfach hinzu, das für ihn abgeholt werden soll

dn: FMMail=Spam@web.de,uid=ansgar,ou=UserObjects,dc=attanet,dc=deobjectClass: topobjectclass: fetchmailFMMail: Spam@web.deFMMailServerType: pop3FMMailServer: pop3.web.deFMUserName: SpamFMUserPasswd: secretFMFetchMode: all

Und noch eine Weitere Email-Adresse, die abgeholt werden soll

dn: FMMail=Spam@gmx.de,uid=ansgar,ou=UserObjects,dc=attanet,dc=deobjectClass: topobjectclass: fetchmailFMMail: Spam@gmx.deFMMailServerType: pop3FMMailServer: pop.gmx.de.deFMUserName: SpamFMUserPasswd: secretFMFetchMode: all

Fügt man nun die Teile zu einer ldif-Datei zusammen und führt sie mit dem Befehl

slapadd -l /pfad/zur/datei.lidf

aus, dann ergibt sich folgende Struktur:

de | +- attanet -+ | +- UserObject -+ | +- ansgar -+ | | | +- FMMail=Spam@web.de | | | +- FMMail=Spam@gmx.de | +- ... | +- ...

Fetchmail Starten

Der LDAP-Server ist soweit fertig; nun können wir uns um das eigentliche Sammeln der Mails kümmern, dazu legen wir einen neues Bash-Skript an mit dem Namen fetchmail-ldap.sh und speichern es im Verzeichnis /usr/local/bin/

Das Bash-Skript zum Lesen der Informationen aus dem LDAP und übergeben an Fetchmail

#!/bin/shbasedn="ou=Users,ou=OxObjects,dc=attanet,dc=de"username="cn=admin,dc=attanet,dc=de"#passwd=absdefusers=`ldapsearch -LLL -h localhost -D $username -w abcdef -x -b $basedn uid | grep uid: | cut -d ' ' -f 2 | sed -e 's/\n/ /g'`for user in $users; do searchbase="uid="$user","$basedn temp1=`ldapsearch -LLL -h localhost -D $username -w abcdef -x -b $searchbase mail FMMail` EMAILTO=`echo "$temp1" | grep mail: | cut -d ' ' -f 2 | sed -e 's/^$//g'` TOFETCH=`echo "$temp1" | grep FMMail: | cut -d ' ' -f 2 | sed -e 's/^$//g'` if [ "x$TOFETCH"!= "x" ]; then for EMAILFROM in $TOFETCH; do fetchmailsearchbase="FMMail="$EMAILFROM",uid="$user","$basedn temp=`ldapsearch -LLL -h localhost -D $username -w abcdef -x -b $fetchmailsearchbase FMMailServer FMMailServerType FMUserName FMUserPasswd FMFetchMode` SERVERNAME=`echo "$temp" | grep FMMailServer: | cut -d ' ' -f 2 | sed -e 's/^$//g'` PROTOCOL=`echo "$temp" | grep FMMailServerType: | cut -d ' ' -f 2 | sed -e 's/^$//g'` NAME=`echo "$temp" | grep FMUserName: | cut -d ' ' -f 2 | sed -e 's/^$//g'` PASSWORD=`echo "$temp" | grep FMUserPasswd: | cut -d ' ' -f 2 | sed -e 's/^$//g'` MODE=`echo "$temp" | grep FMFetchMode: | cut -d ':' -f 2 | sed -e 's/^$//g'` echo "poll $SERVERNAME protocol $PROTOCOL username \"$NAME\" password \"$PASSWORD\" $MODE to $EMAILTO" | fetchmail -f - done fidone


Zum Schluß muss nun nur noch fetchmail in regelmäßigen Abständen gestartet werden, das kann man auf vielen Wegen erreichen als Daemon, als Skript beim Aufbau einer Internetverbindung (bei Modem- oder ISDN-Anbindung), oder mit einem Cronjob, auf den ich hier eingehen möchte, da ich fetchmail so benutze;-)

Also eine Datei mit Namen fetchmail in /etc/cron.d/ anlegen und mit folgenden Inhalt füllen

# /etc/cron.d/fetchmail: crontab fragment for fetchmail# Look for and purge old sessions every 15 minutes00,15,30,45 * * * * fetchmail /usr/local/bin/fetchmail_ldap.sh > /dev/null

nun noch ein

/etc/init.d/cron restart

und fetchmail lauft.

Solltet ihr Fragen an mich haben, dann bitte ich euch, mir einfach eine Mail zu schreiben!AnsgarJ@gmx.de

Ich hoffe, ich konnte euch nun ein wenig helfen!

Von "http://www.lug-wr.de/wiki/index.php/Fetchmail"

Diese Seite wurde bisher 10475 mal abgerufen. Diese Seite wurde zuletzt geändert um 23:53, 23. Mär 2006. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.

Fetchmail - LinuxUserGroup Wernigerode (2024)
Top Articles
Latest Posts
Article information

Author: Prof. An Powlowski

Last Updated:

Views: 5953

Rating: 4.3 / 5 (44 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Prof. An Powlowski

Birthday: 1992-09-29

Address: Apt. 994 8891 Orval Hill, Brittnyburgh, AZ 41023-0398

Phone: +26417467956738

Job: District Marketing Strategist

Hobby: Embroidery, Bodybuilding, Motor sports, Amateur radio, Wood carving, Whittling, Air sports

Introduction: My name is Prof. An Powlowski, I am a charming, helpful, attractive, good, graceful, thoughtful, vast person who loves writing and wants to share my knowledge and understanding with you.