[PATCH]: XMail funktioniert

mehle

Mitglied
Mitglied seit
26 Jan 2009
Beiträge
273
Punkte für Reaktionen
0
Punkte
0
Hallo,

anbei ein Patch gegen trunk 4005, der euch xmail gibt.

Damit kann man einen vollständigen mailserver aufsetzen (SMTP und POP3). Das Konfigfrontend erlaubt nur die Kommandozeilenoption von xmail zu setzen.

Die Konfiguration von xmail selber wird via Konfigdateien gemacht, die automatisch ins $XMAIL_MAILLOCATION kopiert.

Damit kann man die entweder direkt editieren oder via Webfrontend bearbeiten. Ich sitze zur Zeit bei dem Versuch, phpxmail zum fliegen zu bekommen. Es läuft mit lighttpd und php (aus der freetz Distribution), leider habe ich aber noch ein Problem.

Folgende Funktionen von xmail sind getestet:

- Emailempfang via SMTP
- POP3

Wie ihr seht, gibt es noch einiges zu testen. Ich arbeite daran.

Anbei der Patch und ein Screenshot des Konfigfrontends.

Ciao
Stephan
 

Anhänge

  • xmail.png
    xmail.png
    100.5 KB · Aufrufe: 228
  • xmail-20091216.patch.bz2
    10.4 KB · Aufrufe: 30
Goil, eindlich ein eMail-Server für die Fritzbox.
Hab noch ein paar Fragen:
-In make/xmail/files/README steht was von lighttpd und dovecot. Ist das so okay?
-Gehört die make/xmail/files/root/usr/bin/dovecot_usersave in den Patch?
-Braucht man unbedingt libssl? Falls ja kannst du die nichz statisch einbinden?
 
re README: nee, ich habe einfach die Infrastruktur von meinen dovecot/lighttpd Paketen geklaut,*ändere ich

re dovecot_usersave: nein, muss entfernt werden, leftover vom o.g. Klauen ;-)

re libssl: ja, ist zwingend - ich mache eine Option für das statische Linken

Danke für den Review

Ciao
Stephan
 
da du jetzt schneller warst, hänge ich mal meinen Versuch an, der noch nicht so weit war. Ich hab bislang nur das Binary auf die Box gebracht und den Rest "händisch" nachgepflegt.

Nur falls du noch was davon gebrauchen kannst ;-). Ist der make/xmail Ordner, in dem auch noch einige "Dateileichen" sind, als Ansatz für eine Config wie im OpenWRT über Aufrufparameter. Aber das siehst du schon...


Jörg

Ach so: Ich habe die Config auch über phpxmail gemacht, aber das einfach auf meiner Linux-Büchse laufen lassen, um kein PHP auf die Box bringen zu müssen ;-)
 

Anhänge

  • make_xmail.tgz
    10 KB · Aufrufe: 21
Zuletzt bearbeitet:
Hat eigentlich jemand schon die busybox-Optionen für sendmail und pop3-Abholer angeschaut?
Ich weiß nicht, ob es auch bei der 12-ter Version mitdrin ist, bei der 15.3 hatte ich auf jeden Fall unter busybox-menuconfig beides gesehen. Oliver hatte im trac busybox 15.3 ja gepostet. Es gibt dazu ein Ticket. Könnte jemand von den Sachkündigen hier bitte beides auf Funktionalität testen? Ich hatte z.B. blkid und fsck getestet und für untauglich befunden. Wahrscheinlich wird was Ähnliches auch mit sendmail und pop3-Abholer sein.

MfG
 
Gibt es bei der Busybox auch einen pop3-Server?
 
Code:
make busybox-menuconfig
schafft da Klarheit. Aber ich denke nicht.
 
Anbei ein neuer Patch:

- die kleinen Fehler mit dovecot und lighttpd sind behoben

- SSL ist nun eine compile-time Option

- Option für statisches Linken eingebaut

Ich brauche aber Hilfe:

- bitte testet Xmail ohne SSL - meine Patches sind relativ trivial, aber dennoch, testen sollten wir es - kompilieren funktioniert fehlerlos

- beim statischen Linken habe ich ein Problem: die Symbole der libcrypto/libssl werden nicht mehr gefunden und damit bricht der Linker ab - irgend etwas mache ich falsch, aber was? Ich habe bei wget und vsftpd nachgeschaut und die fügen nur -static in die LDFLAGS ein. Dies mache ich auch, aber dann zickt die SSL lib. Wisst ihr weiter?

Danke
Stephan
 

Anhänge

  • xmail-20091216-2.patch.bz2
    15.2 KB · Aufrufe: 8
... ändere doch mal die Reihenfolge der LDFLAGS, indem -static vorher kommt. Das scheint mir der einzige Unterscheid zu meinem .mk zu sein: Bei mir steht da:

Code:
$(PKG)_LDFLAGS+=$(if $(FREETZ_PACKAGE_XMAIL_STATIC), -static,)
$(PKG)_LDFLAGS+= -nodefaultlibs -lssl -lcrypto -luClibc++ -ldl -lm -lpthread

bei dir

Code:
ifeq ($(strip $(FREETZ_PACKAGE_XMAIL_WITH_SSL)),y)
$(PKG)_DEPENDS_ON += openssl
$(PKG)_LDFLAGS += -lssl -lcrypt
$(PKG)_CFLAGS += -DWITH_SSL
endif
ifeq ($(strip $(FREETZ_PACKAGE_XMAIL_STATIC)),y)
$(PKG)_LDFLAGS += -static
endif

Jörg
 
Hat eigentlich jemand schon die busybox-Optionen für sendmail und pop3-Abholer angeschaut?

Ist das als Alternative oder als Ergänzung hierzu gedacht?
pop3-Abholer ist mir bisher nicht aufgefallen, ist aber dem Namen nach ein Client und nicht ein Server.
Das sendmail ist nur zum Senden von Emails und somit auch Client und nicht Server.
 
Ich wollte nur ansprechen, dass busybox diese Optionen hat. Beim pop3 ist es tatsächslich ein Abholer-Verteiler, wenn ich es richtig verstanden habe.
Sendmail wäre rein theoretisch auch nicht schlecht als Alternative zum AVM-Mailer.
Klar, einen richtigen SMTP-Server mit Authentifizierung usw. wird sendmail nicht ersetzen. Aber zum versenden der Logs usw. reicht es alle male.
Bzgl. der Idee einen "großen" Mail-Server auf der Box aufzusetzen habe ich immer noch grundsätzlich Bedenken. Die Meisten von uns haben höchstens eine dyndns-Adresse an der Box "angebunden". Und mit dieser dynamischen Lösung ein "großes Kino" zu spielen stelle ich sehr stark in Frage.
Ich will euch aber jetzt nicht demotivieren. So ist es nicht, macht ruhig weiter. Allerdings will ich diejenigen vorzeitig warnen, die sich davon vielleicht zu viel versprechen wollen.

MfG
 
hermann72pb: nur zur info, das gesamte xmail kostet vielleicht ca. 400KB im flash image.

Während der Laufzeit braucht es ca. 5MB RAM (meine initiale Beobachtung).

Re dyndns: du hast recht mit deiner Aussage, aber viele dyndns Anbieter erlauben das setzen von MX-Records. Und dies ist der Grund warum ich an Xmail arbeite.

Ciao
Stephan
 
so, jetzt funktioniert -static auch (man sollte -lcrypto verwenden anstatt -lcrypt) ;-)

Ciao
Stephan
 

Anhänge

  • xmail-20091217.patch.bz2
    15.3 KB · Aufrufe: 7
So, hab noch bisschen was gefunden:
-in der README steht "dovecot sources are available here"
-in der rc. muss es statt
Code:
[ "$XMAIL_SYSTEMLOG" = "yes" && "$XMAIL_CTRL" = "no" ]
so sein
Code:
[ "$XMAIL_SYSTEMLOG" = "yes" [B]-a[/B] "$XMAIL_CTRL" = "no" ]

-das chown in der rc. braucht ziehmlich lange (mehr als 15 Sekunden)
-Was mir auch nicht so gefällt ist, dass man Ports <1024 nicht nutzen kann. Ich versuche mal den Benutzer in der root-Gruppe zu nehmen...

- und noch ein Fehler beim Bauen. Ich hatte zuerst ohne SSL, dann mit statischem gebaut:
Code:
mkdir -p packages/xmail-1.26/root/usr/lib/
cp -r source/xmail-1.26/MailRoot packages/xmail-1.26/root/usr/lib/
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/pop3linklocks“ mit Verzeichnis „source/xmail-1.26/MailRoot/pop3linklocks“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtprelay.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/ctrlaccounts.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/extaliases.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtpgw.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/server.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtp.ipprop.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/msgsync“ mit Verzeichnis „source/xmail-1.26/MailRoot/msgsync“ nicht möglich.
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/pop3locks“ mit Verzeichnis „source/xmail-1.26/MailRoot/pop3locks“ nicht möglich.
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/logs“ mit Verzeichnis „source/xmail-1.26/MailRoot/logs“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtpfwd.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/userauth“ mit Verzeichnis „source/xmail-1.26/MailRoot/userauth“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/aliases.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/pop3links.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/mailusers.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/message.id“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtpauth.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/spam-address.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/filters.out.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/filters.post-data.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/spammers.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/custdomains“ mit Verzeichnis „source/xmail-1.26/MailRoot/custdomains“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/filters.post-rcpt.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/domains“ mit Verzeichnis „source/xmail-1.26/MailRoot/domains“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/pop3.ipmap.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/filters.in.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/ctrl.ipmap.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/dnscache“ mit Verzeichnis „source/xmail-1.26/MailRoot/dnscache“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/userdef.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/aliasdomain.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/filters“ mit Verzeichnis „source/xmail-1.26/MailRoot/filters“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/domains.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/tabindex“ mit Verzeichnis „source/xmail-1.26/MailRoot/tabindex“ nicht möglich.
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/spool“ mit Verzeichnis „source/xmail-1.26/MailRoot/spool“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/finger.ipmap.tab“
cp: Überschreiben des Nicht‐Verzeichnisses „packages/xmail-1.26/root/usr/lib/MailRoot/pop3links“ mit Verzeichnis „source/xmail-1.26/MailRoot/pop3links“ nicht möglich.
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/filters.pre-data.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtp.ipmap.tab“
cp: schreibe nicht durch die freihängende symbolische Verknüpfung „packages/xmail-1.26/root/usr/lib/MailRoot/smtpextauth.tab“
make: *** [packages/xmail-1.26/root/usr/sbin/XMail] Fehler 1
 
So, hab noch bisschen was gefunden:
-in der README steht "dovecot sources are available here"

ja, danke, werde ich fixen

-in der rc. muss es statt

Code:
[ "$XMAIL_SYSTEMLOG" = "yes" && "$XMAIL_CTRL" = "no" ]
so sein
Code:
[ "$XMAIL_SYSTEMLOG" = "yes" [B]-a[/B] "$XMAIL_CTRL" = "no" ]

argl, das kommt davon wenn man zwischen C und Shell hin und her geht :-(

-das chown in der rc. braucht ziehmlich lange (mehr als 15 Sekunden)

uh, das ist lange - ich schaue es mir mal genauer an

-Was mir auch nicht so gefällt ist, dass man Ports <1024 nicht nutzen kann. Ich versuche mal den Benutzer in der root-Gruppe zu nehmen...

Ich mache eine Konfigoption für das Starten mit root oder non-root Rechten

- und noch ein Fehler beim Bauen. Ich hatte zuerst ohne SSL, dann mit statischem gebaut:

rm -rf packages/xmail-1.26 hilft ;-)

Ciao
Stephan
 
Mit einem -dirclean konnte ich die cp-Fehler auch umgehen :-]
zu Port <1024: Eigentlich wäre es mir am liebsten wenn xmail nicht mit root-Rechten läuft. Vielleicht kann es ja die Rechte "vergessen". Ich hatte gestern noch mit iptables versucht intern 25 auf 10025 zu biegen, habe aber keine richtige Regel gefunden.
Wäre es nciht geschickter statt der ganzen links direkt /usr/lib/MailRoot auf das gewünsche Verzeichnis zu linken?
 
re root Rechte: ich mache eine Option, da kann ein jeder machen, was er will

re iptables: schau dir das REDIRECT target an für die nat table ;-) Füge die Regel in die PREROUTING (externe Quelle) oder OUTPUT (lokale Quelle) chain ein.


UPDATE:

re /usr/lib/MailRoot: das Problem ist, dass dieses Verzeichnis r/o ist - demzufolge können keine Konfigfiles dort liegen. Um dies zu umgehen habe die Link-Orgie erstellt. Wenn du einen besseren Vorschlag hast, nur her damit :)

Ciao
Stephan
 
Wenn /usr/lib/MailRoot im Image ein Link nach zB /mod/etc/MailRoot ist, kann man im Betrieb /mod/etc/MailRoot hinlinken wo man will. Darin liegen dann "normale" Dateien.
zB /usr/mww-rrd/statpix zeigt nach /mod/etc/statpix. Auf der Box:
Code:
 l /mod/etc/statpix
lrwxrwxrwx    1 root     root           17 Dec 18 11:47 /mod/etc/statpix -> /usb/var/rrdstats/temp
iptables nutze ich nicht für nat. Trotzdem funktioniert das? Ich muss nochmal nachschauen...
UPDATE: Funktioniert, hab gestern so lang danach gesucht und mich vom "nat" verwirren lassen. Dann gibt es doch keinen Grund mehr als "root" zu laufen
 
Zuletzt bearbeitet:
re link zu /mod/etc: dieser Ansatz beschert uns aber genauso eine Link orgie, oder nicht? Das Problem ist, dass XMail seine binaries in MailRoot sucht! D.h. es muss ein Link von MailRoot/bin nach irgendwo auf die Flash disk gehen.

Mann kann diesen Link aber nicht erst im Zielverzeichnis anlegen, da ja einige Zieldateisysteme keine Links können (ich nenne mal FAT). Also, man kann nicht folgendes machen:

/usr/lib/MailRoot -> (Link nach) /mod/etc/xmail -> (Link nach) irgendwo in /var/media/ftp/uStor.

Also entweder has du eine Linkorgie in /usr/lib/MailRoot und /mod/etc/xmail oder nur in /mod/etc/xmail. Dein Vorschlag kann maximal dazu verwendet werden, einen Satz von Links zu reduzieren.

Ciao
Stephan
 
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.