1 up | 2 up | 3 up |
^^^ Additional posts ^^^
zorg.ch
#28956 by @ 01.03.2004 23:49 - nach oben -
jo hei tammisiech nonemole.... i han denkt d v3 seg nur no schöne source und nume en huere baschtel.....
zorg.ch
#28959 by @ 02.03.2004 08:10 - nach oben -
duke, machs selber!
zorg.ch
#28964 by @ 02.03.2004 09:13 - nach oben -
d'V3 bestoht us
- PHP source
- Image files
- de Mysql DB
- emene eigene Imapserver (müemmer no iibaue)

und zügle wird witerhin au no goh. de cylander und ich hend eifach vor noch de V3 weniger Ziit z'investiere wie bisher.
zorg.ch
#28968 by @ 02.03.2004 09:40 - nach oben -
Nein, da seh ich kein Problem. Das IMAPd Zeugs ist so implementiert, das es komplett unabhaengig vom Sylon Mailsystem ist.

Ich will das mal aufzeigen:

Als erstes nehmen wir ein paar Zutaten:

/bin/sh, ist in jeder guten Kueche vorhanden
bincimapd, gibts in jeder Migros und auf http://www.bincimap.org
tcpsvd oder tcpserver, im Fachhandel oder auf http://smarden.org/ipsvd/(GPL) oder http://cr.yp.to/ucspi-tcp.html(eigene Lizenz)
runit oder daemontools, ebenfalls Fachhandel oder auf http://smarden.org/runit/(GPL) oder http://cr.yp.to/daemontools.html(eigene Lizenz)

Dann mischen wir das ganze gut durch, und kommen frueher oder spaeter zu folgendem Sammelsurium an Shellscripts:

/etc/service/zimapd/run:

$ cat run
#!/bin/sh
exec nice \
softlimit -m 67108864 \
setuidgid zooomclan \
/home/CME/z/zooomclan/messages/run >/dev/null 2>&1


Dieses File ist eigentlich nur ein Wrapper um das nachfolgende File, es wird von runit/daemontools verwendet um den Dienst zu restarten, sollte er unerwartet sterben.

~/messages/run:

#!/bin/sh
cd ~zooomclan
exec tcpserver 127.0.0.1 4242 \
/usr/sbin/bincimap-up -c /etc/bincimap.conf -C -L -- \
messages/auth \
/usr/sbin/bincimapd ./


Hier kommt der Part in dem tcpserver/ipsvd gestartet wird, welcher danach bincimapd ausfuehrt. Die ganze Logik steckt aber erst in folgendem File:

#!/bin/zsh 

exec >&2
IFS=\0 read user passwd misc <&3

if [ x"$passwd" = x"passwd" ] ; then
umask 077
mkdir -p ./messages/db/$user/{cur,new,tmp}
cd ./messages/db/$user
export MAILDIR=./messages/db/$user
export HOME=$HOME/messages/db/$user
exec "$@"
else
exit 1
fi


Und das wars schon. Wie ihr also seht haben wir hier einen imapd, der je nach angabe des Benutzers auf einen anderen Mailspool zugreift, aber immer das gleiche Password haben will. So haben wir eine Implementation, die als reines DB Backend fungiert. Aber damit nicht genug: Das ganze System ist modular genug, um leicht ausbaubar zu sein, z.B. eine eigene Benutzerdb zu bekommen. Fuer das ganze braucht man nichtmal root.

Zum Thema eigener Server: Sylon bietet welche zum Mieten an, gehostet ebenfalls bei Pipeline. Falls ihr da technische Unterstuetztung braucht, koennt ihr euch vertrauensvoll (harr harr) an mich wenden ;)

(Ich hoffe, man kann die Scripts noch lesen. Sonst halt auf michelle einloggen, und die Files selber anschauen)
zorg.ch
#28969 by @ 02.03.2004 09:42 - nach oben -
hm, interessant, demfall hab ich die ganze sache am sonntag bischen falsch verstanden.
zorg.ch
#28971 by @ 02.03.2004 09:44 - nach oben -
Du koenntest z.B. das auth shellscript durch ein #!/usr/bin/php script ersetzen, das gegen eine mysql db checkt. Waer alles kein Problem. Falls ihr Hilfe braucht, einfach melden ;)
zorg.ch
#28975 by @ 02.03.2004 10:24 - nach oben -
bedienen kann ich das ganze wie den ersten imap-server, einfach auf nen anderen Port?
zorg.ch
#28981 by @ 02.03.2004 10:52 - nach oben -
Wie meinen?
zorg.ch
#28983 by @ 02.03.2004 10:54 - nach oben -
Wie werde ich den 2. imapserver bedienen können?
zorg.ch
#28985 by @ 02.03.2004 10:55 - nach oben -
Hab ich doch oben beschrieben?
Was ist dir unklar?
zorg.ch
#28987 by @ 02.03.2004 11:03 - nach oben -
Ja.. ich hab ne Ahnung wie ich das selbst machen müsste...

Aber um _diesen_ Server ansprechen über PHP muss ich einfach Port 4242 statt den normalen Port benutzen?
zorg.ch
#28989 by @ 02.03.2004 11:20 - nach oben -
Ja. Username gibt Mailspool an, und Password ist immer dasselbe, hab ich dir ja damals mitgeteilt.
Speicherort ist dann ~/messages/db/$username/