IMAP auf debianisierter FB

cwarlich

Neuer User
Mitglied seit
10 Nov 2007
Beiträge
115
Punkte für Reaktionen
0
Punkte
0
Hi,

da ich mir schon seit einiger Zeit einen lokalen IMAP-Server wünsche, sowas z.Z. aber nicht Teil von Freetz ist, hatte ich mir mittelfristig vorgenommen, sowas mal als Addon zu bauen. Um ein wenig zu üben, wollte ich erstmal in einer einfacheren Umgebung (Debian mit Postfix, fetchmail und Dovecot) anfangen.

Dazu habe ich (mit dem in Freetz enthaltenen debootstrap)
  • eine Debian-Mipsel Installation auf einem von der FB gemounteten USB Stick angelegt
  • das proc-Verzeichnis in diese Installation gemountet
  • mit chroot reingewechselt
  • apt-get install postfix fetchmail dovecot-imapd aufgerufen
  • kleine Anpassungen in /etc/postfix/main.cf, /etc/dovecot/dovecot.conf und .fetchmailrc gemacht
  • /etc/init.d/postfix start; /etc/init.d/fetchmail start und /etc/init.d/dovecot start aufgerufen

Jetzt läuft das ganze so gut, dass ich mich frage, ob es sich überhaupt lohnt, daraus ein Freetz-Addon zu bauen. Es scheint mir ganz im Gegenteil als eine überlegenswerte Alternative, das Freetz-Image auf ein Minimum (debbootstrap, mount, chroot, ...) zu beschränken und den überwiegenden Teil der restlichen gewünschen Dienste (z.B. Samba, VPN, ...) in der komfortablen zu erweiternden und auf dem aktuellen Stand zu haltenden Debian-Installation laufen zu lassen.

Ein paar Ausnahmen, die vieleicht besser im Freetz-Image aufgehoben sein könnten, mag es geben, wie z.B. dnsmasq, da er vor multid gestartet werden muß.

Ein weiterer Vorteil ist, dass das oft problematische Crosskompilieren großer Pakete für Mipsel naiv auf der FB erfolgen kann; dafür reicht als Voraussetzung in vielen Fällen ein "apt-get install gcc. Wer einmal versucht hat, Samba mit der Freetz-Toolchain zu übersetzen, weiss wovon ich rede. Aber das wird sowieso nur selten nötig sein, da es meistens schon fertige Debianpakete gibt und somit ein apt-get genügt.

Mich würde interessieren, was ihr generell davon haltet und welche Pakete besser im Freetz-Image und welche besser in der Debian-Umgebung aufgehoben sein könnten.

Gruß,

Christof
 
könntest du nochmal nen howto machen, wir du das debian auf den stick bekommen hast!?
 
Klar, gerne:

Ich gehe davon aus, dass die FB eine leere ext2 oder ext3 Partition unter "/var/media/ftp/uStor01" gemountet hat. Bei einer ext3-Partition sollte man dafür in "make menuconfig" unter "Patches->Automount filesystems->Automount ext3" auswählen, ich hab's bis jetzt aber nur mit ext2 probiert.

Ausserdem sollte man vor dem Bauen des Freetz-Images in "make menuconfig" "Package selection->Testing->Debootstrap" auswählen.

Nachdem das neue Image auf der FB läuft, installiert man das Debian-System z.B. mit:

Code:
debootstrap --arch=mipsel lenny /var/media/ftp/uStor01 http://ftp.us.debian.org/debian

Die bis hierhin beschriebene Prozedur kann man natürlich auch von jedem beliebigen anderen Linux-System aus machen, solange die ext2/3 Partition von dort aus für die Installation erreichbar gemacht werden kann und debootstrap verfügbar ist.

Egal, ist die Installation abgeschlossen und die Partition an der FB, muß man noch das proc-filesystem verfügbar machen und kann danach ins neue Debian-Systen wechseln:

Code:
mount -t proc proc /var/media/ftp/uStor01/proc
chroot /var/media/ftp/uStor01 su -

Jetzt kann man die Installation mit

Code:
apt-get uptate
apt-get install ....

beliebig erweitern.

Bei mir trat noch das etwas merkwürdige Problem auf, dass "/var/media/ftp/uStor01"
ohne jede Zugriffsrechte gemountet war. Sobald ich mich so als normaler User anmelden wollte, gab's ein "permission denied". Hier hat dann ein einmaliges

Code:
chmod 777 /var/media/ftp/uStor01

vor dem chroot geholfen.

Gruß,

Christof
 
Zuletzt bearbeitet:
danke, sehr interessant!

wie sieht es bei dem ganzen mit dem avm-teil der FB?
Geht das Webinterface und der dsld usw noch, kann man die nochsteuern?
 
Genau, beschreibe bitte, welche Nachteile man mit Debian sonst hat (was auf der Box nicht geht).

Wie sieht es unter Debian mit RAM aus? Hast du auch eine SWAP-Partition definiert?

Was interessant wäre:
1. So was ähnliches wie USB-Root, aber Debian-basiert als Paket zu haben. Dass man eine minimale Debian Installation schon mal auf der Box hat
2. Wenn schon ein IMAP-Server als Paket, dann bitte gleich auf USB (oder wohin auch immer) auslagern. Denn Platz auf der Box wird immer knapper...

MfG
 
Bei mir trat noch das etwas merkwürdige Problem auf, dass "/var/media/ftp/uStor01"
ohne jede Zugriffsrechte gemountet war. Sobald ich mich so als normaler User anmelden wollte, gab's ein "permission denied". Hier hat dann ein einmaliges

Code:
chmod 600 /var/media/ftp/uStor01

vor dem chroot geholfen.

Ich glaub dazu gibt es ein (geschlossenes) Ticket, da es nicht die passenden Sourcen gibt. Hast du sonst keine Probleme mit den Berechtigungen von Dateien?
 
@matze1985: Ja, Web-Interface, dsld, ... einfach alles geht immer noch weiter wie bisher. Soweit ich das verstanden habe, ist damit nur Schluß, wenn man mit pivot_root anstatt mit chroot ins neue Filesystem wechselt.

@hermann72pb: s.o., außerdem: Dem Debian steht das an RAM zur Verfügung, war Freetz übrig lässt. Der RAM-Bedarf wird in Summe (Freetz + Debian) allerdings eher größer sein, als wenn man alles unter Freetz laufen lassen würde, da gleiche Shared Libraries doppelt geladen werden. Swap kann man aktivieren oder auch nicht, geht beides. Ich denke mal, das es sogar egal ist, ob man swap schon in Freetz (z.B. über's Web-Interface) oder erst in Debian aktiviert.

Eine minimale Debian-Installation auf der Box ist in jedem Fall zu groß, man könnte bestenfalls ein Debian-tar-Archiv zum Entpacken auf den externen Speicher zur Verfügung stellen, zusammen mit einem Script oder Mini-Addon für die FB, welches beim Booten das Mounten von proc, das Setzen der richtigen Rechte fürs Rootdirectory und das Starten eines Debian-Init-Scripts für die gewünschten Services erledigt. Als Teil dieses tar-Archivs könnte dann der IMAP-Server mit drin sein, aber es bietet sich natürlich auch Samba und andere Services an.

@cuma: chmod 600 war falsch, man braucht 777. Ich ändere es gleich oben. Sonst habe ich bis jetzt keinerlei Probleme mit Berechigungen gehabt.
 
Warte mal, du hast aber eine 7270... Da sieht die Welt doch bisschen anders. Würde es auch eine 7170 mit ihrem USB1+WenigerRAM+schwächerer_Prozessor dies schaffen?

Ich habe es vom Grundsatz immer noch nicht verstanden: Was läuft denn bei dir auf der Box, Debian oder Fritz-Box-eigener-Linux (nennen wir erstmal so)? Was ist dann überhaupt mit Kernel, Busybox und AVM-eigenen Teilen? Wie verträgt sich das Ganze? Es ist zwar schön zu wissen, dass es geht, besser wäre noch zu verstehen, warum.

MfG
 
Coole Idee :) Hab irgendwann mit ipkg rumprobiert, aber debian finde ich interessanter.

Hast du das debootstrap-package aus freetz genommen? Dazu musste ich noch ein

Code:
export DEBOOTSTRAP_DIR=/usr/lib/debootstrap
setzen. Ausserdem bietet die enthaltete Version (noch) keinen Support für lenny, sondern maximal etch:

Code:
/usr/lib/debootstrap # ls -l /usr/lib/debootstrap/scripts
lrwxrwxrwx    1 root     root            3 Jul  1 22:07 etch -> sid
-rw-r--r--    1 root     root         8387 Jun 30 19:09 sarge
-rw-r--r--    1 root     root         5685 Jun 30 19:09 sid

d.h. hier fehlt noch ein symlink lenny -> sid


@Hermann
Ich denke die Grundidee ist, ein Mini-Freetz zu fahren und zusätzliche Applikationen vom Stick nachzuladen. Soweit also nichts Neues.
Das Elegante ist aber, dass hier die debian-packages genutzt werden, d.h. eine grosse Auswahl an Packages schon vorhanden (und getestet) ist. Aktualisierung auf die neuste Version der Packages ist damit auch mit apt-ge update und apt-get upgrade getan...
 
Zuletzt bearbeitet:
hermann72pb schrieb:
Würde es auch eine 7170 mit ihrem USB1+WenigerRAM+schwächerer_Prozessor dies schaffen?

Ich denke schon, zumindest mit Swap. Halt bloß langsamer. Und anstatt USB kanst man bestimmt auch einen NFS Share verwenden. Ich denke, dass es sogar mit WebDav (davfs) gehen würde, aber leider kann ich das nicht probieren, da man für die FB7270 bis jetzt keinen eigenen Kernel bauen kann und der Original-Kernel keinen Coda-Support hat :-(. Aber die 7170 kann WebDav über davfs :), siehe

http://www.ip-phone-forum.de/showthread.php?t=115302

Bleibt das Problem des begrenzten RAM, das sich mit Swap halt nur lindern lässt. Da hilft nur ausprobieren ...

hermann72pb schrieb:
Ich habe es vom Grundsatz immer noch nicht verstanden: Was läuft denn bei dir auf der Box, Debian oder Fritz-Box-eigener-Linux (nennen wir erstmal so)? Was ist dann überhaupt mit Kernel, Busybox und AVM-eigenen Teilen? Wie verträgt sich das Ganze?

Es läuft weiter der Freetz-Kernel, und auch das proc-Filesysten bleibt das Alte. Und man sieht auch von Debian aus mit "ps" weiter alle Freetz-Prozesse. Selbst die Netzwerkschnittstellen bleiben sichtbar (ifconfig). Nur statt der Busybox hast Du jetzt standardmäßig eine Bash, aber Du kannst natürlich wieder die Busybox unter Debian installieren, wenn Du Dich danach zurücksehnst ;-).

hermann72pb schrieb:
Es ist zwar schön zu wissen, dass es geht, besser wäre noch zu verstehen, warum.

Warum soll es nicht gehen? Der Kernel hat definierte Schnittstellen, damit ist es Debian egal, ob es aufeinem eigenen Kernel oder auf dem Kernel von Freetz läuft.

itzy schrieb:
Hast du das debootstrap-package aus freetz genommen? Dazu musste ich noch ein
export DEBOOTSTRAP_DIR=/usr/lib/debootstrap
setzen

Genau, ich hab das debootstrap aus Freetz genommen, aber man kann es auch von einem beliebigen Linux-PC aus machen, solange debootstrap darauf installiert ist. Ich kann mich allerdings nicht erinnern, dass ich so ein Export-Statement gebraucht habe, aber schaden kann's bestimmt nicht.

itzy schrieb:
Ausserdem bietet die enthaltete Version (noch) keinen Support für lenny, sondern maximal etch:
...
d.h. hier fehlt noch ein symlink lenny -> sid

Du hast recht, ich habe bei mir auch nur etch installiert, lenny war nur mein Zukunftsplan. Ich korrigiere das gleich oben. Aber Danke für Dein Howto, wie man lenny draufbekommt. Aber ist sid nicht immer unstable? Und lenny ist doch im Moment testing, oder?

itzy schrieb:
@Hermann
Ich denke die Grundidee ist, ein Mini-Freetz zu fahren und zusätzliche Applikationen vom Stick nachzuladen. Soweit also nichts Neues.

Ist wirklich nichts Neues, siehe:

http://www.ip-phone-forum.de/showthread.php?t=120304
und
http://www.ip-phone-forum.de/showthread.php?t=137008

Ich habe nur nicht verstanden, warum Boyz das so kompliziert über qemu macht. Ist mit debootstrap doch viel einfacher. Aber vielleicht ist mir da ja auch was entgangen ....
Aber auch die Idee mit debootstrap muss ja schon jemand gehabt haben, sonst wär's ja nicht in "make menuconfig" anwählbar .

Wegen Hermanns bedenken bzgl. der FB 7170: Boyz hat das ganze offensichtlich auf einer 7170 gemacht. Es geht also scheinbar auch mit nur 8MB.

Gruß,

Christof
 
aber es bedeutet doch, dass, alle Prozesse, die laufen, auch laufen, aber man sie nicht mehr starten kann, da man nich auf das originale filesystem kommt oder? durch das chroot, oder gilt das immer nur für die aktuelle shell???
 
das gilt nur für die gerade gestartete shell. man kann dann auch einfach mit einem "exit" den chroot wieder verlassen.

vereinfacht gesagt macht chroot einfach nur folgendes: es ändert dein root-verzeichnis in der neu gestarteten shell (meist "bash"). d.h., man kommt mit einem "cd /" nicht mehr "ganz nach oben" sondern nur noch in des gechrootete verzeichnis, nicht weiter. und genau das sehen alle programme, die man innerhalb des chroots startet, auch so.

d.h. bei einem "chroot" wird bis auf die neue shell (mit dem neuen root) kein weiteres programm (oder betriebssystem) gestartet. es passiert nichts weiter, alles andere bleibt unberührt und merkt davon eigentlich gar nichts.

du kannst dich natürlich ein zweites mal mit deiner box (per telnet/ssh) verbinden und landest dann wieder normal auf der fbox ohne chroot in der busybox.
 
kann man denn auch die shell verlassen, ohne das dass debian geschlossen wird, also das chroot verlassen wird?

bzw. eine Anschlussfrage, wenn man die Shell verlassen kann und das Debian bestehen bleibt, komme ich irgendwie wieder in das debian system, ohne nen 2 ssh server zu starten?
 
Zuletzt bearbeitet:
kann man denn auch die shell verlassen, ohne das dass debian geschlossen wird, also das chroot verlassen wird?

Am besten startest Du einfach die Programme, die Du in der Debian-Umgebung laufen lassen willst, direkt über chroot. In meinem Fall will ich z.B. postfix, fetchmail und dovecot laufen lassen. Also braucht's ein:

Code:
chroot /var/media/ftp/uStor01 /etc/init.d/postfix start
chroot /var/media/ftp/uStor01 /etc/init.d/fetchmail start
chroot /var/media/ftp/uStor01 /etc/init.d/dovecot start

Danach bist Du immer noch (bzw. wieder) in der Freetz-Umgebung und kannst sogar die neu gestarteten Prozesse (mit ps) sehen.
 
Das ist ja sehr interessant. Das heißt, man kann anstatt Debian ein beliebiges weiteres System so laufen lassen. Z.B. ein FritzBox-eigenes zu Testzwecken...

Zu deiner Frage ganz oben, ob es sich lohnt für IMAP ein Paket zu kreieren, würde ich unter diesen Umständen sagen "nein". Aber, dass man das "Debianisieren" der Box etwas benutzerfreundlicher macht (Skripte, WebGUI), das würde sich anbieten. Wie gesagt, ein minimales Debian (damit es sich wenigstens weiter upgraden und updaten kann) irgendwie "vorkompillieren" und per Skript oder wie auch immer auf USB drauf kriegen. WebGUI wäre vielleicht auch für einige Einstellungen oder zum "rumschieben" nicht verkehrt. Den Rest soll jeder für sich dann selbst machen.

MfG
 
Ich habe auch mal ein wenig darüber nachgedacht, wi man das Ganze möglichst leicht verdaulich verpacken könnte. Echt cool wäre folgendes:

Schon die _unmodifizierte_ FB mountet USB-Speicher doch automatisch, wenn er in den USB-Slot eingesteckt wird. Und bei dieser Gelegenheit sucht das Mount-Script auf dem gemounteten Device nach einer Datei namens tr69Starter.cfg oder so ähnlich. Wenn man diesen Mechanismus dazu misbrauchen könnte, dass die FB ein Script auf dem frisch gemounteten USB Speicher ausführt, dann könnte man FB-Erweiterungen für absolute Dummies anbieten:

USB-Stick in die mit Original-Firmware laufende FB einstecken, und schon werden beliebige zusätzliche Services (unter Debian) gestartet. Und das Bauen solcher Erweiterungen wäre dank Debian fast trivial .... wenn man es besonders schön machen will, baut man ein kleines Web-Interface a la Freetz ein, um die Services einheitlich und komfortabel zu konfigurieren.

Hat irgendjemand schon raus bekommen, ob man mit dieser tr69Starter.cfg was anfangen kann?

Gruß,

Christof
 
Von der tr69starter.cfg hab ich noch nie was gehört. Aber wie das ganze ohne modifizierte Firmware geht, hab ich dank diverser Beiträge schon rausgefunden.

Nachdem bei mir das Aufspielen eines Freetz Images immer zu einer ständig neustartenden Fritbox geführt hat, hab ich mich mal durch google gewühlt.

Folgendermaßen bin ich vorgegangen:
Code:
[LIST=1]
[*]USB Stick mit Ext2 Partition und Swap Partition (128MB) erstellen (z.B. über G-Parted Live CD)
[*]Mounten der neuen Ext2 Partition nach /media/usb an einem Linux Rechner (je nach Computer bzw. USB Anschluss muss /dev/sdb1 entsprechend angepasst werden)
[I]mount -t ext2 /dev/sdb1 /media/usb[/I]
[*]Erster Schritt zur Ausführung von Debootstrap
[I]sudo debootstrap --arch=mipsel --foreign etch /media/usb/ http://ftp.us.debian.org/debian[/I]
[*] Telnet auf Fritzbox über Telefon aktivieren: #96*7*
[*] modprobe ext2 ( mit /sbin/lsmod kann überprüft werden ob ext2 bereits geladen ist )
[*] Verzeichnis zum Mounten des USB-Sticks erstellen
[I]mkdir /var/tmp/chroot[/I]
[*] Mounten der ersten USB Partition (falls die Ext2 Partition die erste Partition war, andernfalls /dev/sda1 entsprechend anpassen)
[I]/bin/mount /dev/sda1 /var/tmp/chroot/ [/I]
[*] Von [URL="http://blog.rootserverexperiment.de/2007/01/27/fritzbox-rootserver/"] rootserverexperiment [/URL]aus dem Archiv [URL="http://fbh.mattiasschlenker.de/7170/ucchroot-0927-fritz7170.tar.gz"]ucchroot-0927-fritz7170.tar.gz[/URL]
die busybox_static extrahieren und nach /var/tmp/chroot/bin kopieren
[*]Executable Flag setzen: 
[I]chmod +x /var/tmp/chroot/bin/busybox_static[/I]
[*]Swap aktivieren: 
[I]/var/tmp/chroot/bin/busybox_static swapon /dev/sda2[/I]
[*] Dev und Proc des Debian Systems mounten
[I]/bin/mount -o bind /dev /var/tmp/chroot/dev
/bin/mount -t proc none /var/tmp/chroot/proc[/I]
[*] Zu Debian System wechseln:
[I]/var/tmp/chroot/bin/busybox_static chroot /var/tmp/chroot /bin/bash[/I]
[*]Debootstrap durch zweiten Schritt vollenden:
[I]debootstrap/debootstrap -–second-stage[/I]
[*] Verlassen der Chroot Umgebung über 
[I]exit[/I]
[*] Neustart der Box (nicht nötig aber um das ganze mal von grundauf zu testen):
[I]reboot[/I] 
[*] Kommandos nach Neustart:
[I]modprobe ext2  
mkdir /var/tmp/chroot
/bin/mount /dev/sda1 /var/tmp/chroot/ 
/var/tmp/chroot/bin/busybox_static swapon /dev/sda2
/bin/mount -o bind /dev /var/tmp/chroot/dev
/bin/mount -t proc none /var/tmp/chroot/proc[/I]
[/LIST]

Ich hab dann erstmal Samba und DnsMasq auf dem Debian System installiert und das ganze über folgende debug.cfg automatisch in die Box eingebunden:
Code:
modprobe ext2
mkdir /var/tmp/chroot
/bin/mount /dev/sda1 /var/tmp/chroot/
/var/tmp/chroot/bin/busybox_static swapon /dev/sda2
/bin/mount -o bind /dev /var/tmp/chroot/dev
/bin/mount -t proc none /var/tmp/chroot/proc
# Multid DHCP Server stoppen
/sbin/multid -s
# dnsmasq starten
/var/tmp/chroot/bin/busybox_static chroot /var/tmp/chroot /etc/init.d/dnsmasq start
# Multid wieder starten (DHCP server wird automatisch ignoriert, da dnsmasq schon den Port besetzt hat)
/sbin/multid
# Samba starten
/var/tmp/chroot/bin/busybox_static chroot /var/tmp/chroot /etc/init.d/samba start
Jetzt werd ich auch mal Postfix, Fetchmail und Dovecot von meinem Server auf die Fritzbox verlagern und gucken, wie performant das läuft. Wäre Spitze, wenn das ganz ordentlich geht, schließlich läuft die Box sowieso permanent. Nur die USB 1.1 Schnittstelle dürfte das ganze ziemlich ausbremsen. Evtl. hilft da ja dann mal irgendwann ne 7270 weiter.

Infos aus:
http://blog.rootserverexperiment.de/2007/01/27/fritzbox-rootserver/
http://www.lucas-nussbaum.net/blog/?p=228
und diesem Thread hier!
Vielen Dank an alle die dazu beigetragen haben!
 
Wuhuu, Debian auf der FritzBox! Wenn ich jetzt eine FritzBox mit USB-Host hätte, wäre ich da jetzt sofort dabei! NFS ist mir dafür zu unsicher. Der Apt-Packagemanager ist echt super, mit dem man einfach nur ein Packet installieren/updaten/deinstallieren kann, ohne gleich wieder eine neue Firmware zu bauen. Ich wäre dafür, ein einfaches Script mit in das Image packen zu lassen, damit man schnell ohne im Forum nach dem richtigen Eintrag suchen zu müssen schnell ein Debian auf seine Box bekommt.
 
Vielleicht solltest du mal ins menuconfig gucken? debootstrap ist da schon seit ewigkeiten drin ;)

Wieso eigentlich ist dir nfs zu unsicher? Es gibt mehr als genug Diskless-Systeme, die eben über NFS booten.
 
Wegen NFS: Mein Server ist nicht mehr der neuste und die Hardware muckt ab und zu mal rum, ich will nicht das meine Fritzbox zusammen mit meinem Server abkaggt :D Außerdem ist es mehr oder weniger ein Rumspielsystem. Die FritzBox soll eigenständig arbeiten können und nicht von meinem Server abhängig sein.

Und ich weiß ja, dass Debootstrap schon drin ist, aber ich meine ja, dass ein einfaches Script und/oder kleines WebIF für Freetz mit hinein sollte, mit der man auch ohne im Forum zu suchen schnell ein Debian installiert bekommt. Übers WebIF wäre ja dann auch das Paketmanagement möglich, sodass man nicht immer eine Telnet/SSH-Verbindung zur Box aufbauen muss.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.