[NAS Typ:]Serie X10/X12/x19 (Marvell CPU)
[QPKG:]Installiertes XDove 1.3 (mit XMail 1.25)
Motivation:
Um das Problem der auf ca. 24 MB beschränkten Mail-Größe loszuwerden (s. http://forum.qnapclub.de/viewt…1&t=11245&start=20#p90433 ),
kann man ein Update auf XMail 1.27 machen und über die Environment-Variable XMAIL_TEMP ein anderes, größeres temporäres Verzeichnis nutzen.
Auch gab es einige Verbesserungen (s. XMail Change log).
Hier wird beschrieben, wie man das per Cross-Compiler macht. (Alternativ kann man auch direkt auf dem NAS kompilieren, aber das ist hier nicht Thema.)
Der Cross-Compiler hat den Vorteil, dass man sich das System auf dem NAS nicht so schnell durch Fehler verbauen kann. Im Zweifelsfall ist er mit wenigen Mausklicks neu aufgesetzt. Das eigentliche Kompilieren geht außerdem schneller.
Voraussetzungen sind Grundkenntnisse über folgendes:
- Kopieren von Dateien zwischen dem NAS und dem eigenen PC
- Editieren von Text-Dateien auf dem NAS
- Pfad zum XDove Paket muss bekannt sein, z.B. /share/MD0_DATA/.qpkg/XDove
- Linux Grundwissen, Befehle wie cp, ls sollte man kennen
Benötigte Dateien:
- openssl-0.9.8r.tar.gz oder aktueller, aber keine 1.0.x Version, s. http://www.openssl.org/source/
- Quellcode von XMail, s. http://www.xmailserver.org/xmail-1.27.tar.gz
- Den CodeSourcery Cross-Compiler und die virtuelle Umgebung dazu
Die Installation des Cross-Compilers ist ausführlich beschrieben in der Anleitung
http://forum.qnapclub.de/viewtopic.php?f=80&t=11807
Wir müssen nur die Punkte 1. und 2. durchführen, da wir keinen Kernel kompilieren.
Ich habe konkret folgendes Paket verwendet:
http://www.codesourcery.com/pu…rm-none-linux-gnueabi.bin
Um zügig arbeiten zu können, öffnet man am besten eine PuTTY/SSH Verbindung zur virtuellen Maschine des Cross-Compilers (im folgenden mit SSH-CC bezeichnet), eine weitere PuTTY/SSH Verbindung zum NAS (mit SSH-NAS bezeichnet), sowie je eine Samba (oder FTP) Verbindung zur virtuellen Maschine und zum NAS zwecks Dateiaustausch. Wenn man PuTTY verwendet, kann man die auszuführenden Befehle von hier einfach kopieren und per Maus-Rechtsklick in PuTTY einfügen.
Wir fangen mit dem Cross-Compiler an. Zusätzlich zu der in der obigen Anleitung beschriebenen PATH Umgebungsvariablen müssen wir noch zwei weitere exportieren, also insgesamt:
<SSH-CC>
export PATH=$HOME/CodeSourcery/Sourcery_G++_Lite/bin:$PATHexport ARCH=armexport CROSS_COMPILE=arm-none-linux-gnueabi-
Um alles dauerhaft zu speichern:
<SSH-CC>
echo 'export PATH=$HOME/CodeSourcery/Sourcery_G++_Lite/bin:$PATH' >> $HOME/.bashrcecho 'export ARCH=arm' >> $HOME/.bashrcecho 'export CROSS_COMPILE=arm-none-linux-gnueabi-' >> $HOME/.bashrc
Nun kann es losgehen. Zunächst wird open-ssl entpackt, konfiguriert und kompiliert, da Teile daraus von XMail verwendet werden:
<SSH-CC>
Das Kompilieren dauert eine Weile. Alle Compiler-Ausgaben müssen mit arm-none-linux.... beginnen, sonst stimmt etwas mit den Umgebungsvariablen nicht (dann unbedingt korrigieren, da man sonst für den Host und nicht das NAS kompiliert!).
Nun kommt XMail dran:
<SSH-CC>
XMail ist nicht für das Cross-Compilieren vorbereitet. Wir müssen das kopierte 'Makefile' editieren, die ersten Zeilen (hinter den Kommentarzeilen) müssen wie folgt geändert werden (Pfad von openssl ggf. anpassen):
SYSTYPE = linuxWITH_SSL_INCLUDE = $(HOME)/openssl-0.9.8r/includeWITH_SSL_LIB = $(HOME)/openssl-0.9.8rCC = $(CROSS_COMPILE)g++LD = $(CROSS_COMPILE)g++STRIP = $(CROSS_COMPILE)strip
Etwas weiter unten müssen 5 Zeilen auskommentiert werden:
# ifeq ($(wildcard /usr/include/sys/eventfd.h), ) SYSSRCS := $(SYSSRCS) SysOsEventfd_pipe.cpp#else# SYSSRCS := $(SYSSRCS) SysOsEventfd_eventfd.cpp# CFLAGS := $(CFLAGS) -DHAS_EVENTFD#endif
Auch 'Makefile.common' benötigt eine Änderung:
Die untere Zeile wird auskommentiert, da dieser Befehl auf dem Target-System (= NAS) ausgeführt werden muss.
Und die vorletzte Zeile ändern in:
Nun folgt der erste Compiler-Lauf:
<SSH-CC>
Der Fehler entsteht, weil ein .h File fehlt (wg. auskommentierter Zeile). Das müssen wir auf dem NAS erzeugen. Dazu wird die Datei
xmail-1.27/bin/MkMachDep
per Samba/FTP auf das NAS in ein von außen erreichbares Verzeichnis kopiert, z.B. Public/xmail (Pfad ggf. anpassen).
<SSH-NAS>
Jetzt kopieren wir 'SysMachine.h' in die virtuelle Maschine ins xmail-1.27 Verzeichnis. Es folgt der zweite Compiler-Lauf:
<SSH-CC>
Es sollte alles fehlerfrei durchlaufen. Alle Binärdateien aus
xmail-1.27/bin/
(also die 6 Dateien, die nicht mit .o enden) per Samba/FTP auf das NAS in ein von außen erreichbares Verzeichnis kopieren, z.B. Public/xmail.
Auf dem NAS den Mailserver stoppen und die Dateien ins eigentliche Verzeichnis kopieren (Pfade ggf. anpassen!):
<SSH-NAS>
cd /share/MD0_DATA/.qpkg/XDove./xdove.sh stopcp /share/Public/xmail/* /share/MD0_DATA/.qpkg/XDove/xmail/bin
Optional können wir noch xdove.sh und xmail.conf anpassen, um ein anderes temporäres Verzeichnis (mit deutlich mehr Platz) nutzen zu können:
In xdove.sh (befindet sich in /share/MD0_DATA/.qpkg/XDove) die folgende Zeile suchen und die Zeile dahinter einfügen:
#create symbolic links for required files of xmail[ ! -d "${XMAIL_TEMP}" ] && /bin/mkdir -p "${XMAIL_TEMP}"
und:
und:
In xmail.conf (befindet sich im selben Verzeichnis wie xdove.sh) im Abschnitt 'start_mail()' die folgende Zeile suchen und die Zeile dahinter einfügen:
Abspeichern und los geht's (XDove Pfad ggf. anpassen!):
<SSH-NAS>
Wenn alles glatt lief, starten beide Server und ihre pids werden angezeigt.
phys1