Category: linux

Webserver-Optimierung

authorOmar | 20. März 2008

In den letzten Tagen gab es einige Aussetzer auf diesem Server und sie hängen fast alle mit der Umstellung und Neukonfiguration des Servers zusammen, die ich am Sonntag vollzogen habe. Bislang war das treibende Betriebssystem hier debian sarge (3.1). Da der support für diese recht stabile aber inzwischen in die Jahre gekommene Version von debian bis Ende März eingestellt wird und weil meine Installation einige eigenmächtige Hacks enthielt, habe ich mich entschieden, eine komplette Neuinstallation zu wagen1. Entschieden habe ich mich dann für die letzte Ubuntu Serverversion (7.10 gutsy). Die Konfiguration war allerdings nicht sehr gradlinig..

Anforderungen

Zunächst einmal die Anforderungen an den Server:

Er beherbergt etwa fünf wordpress-installationen, jede mit eigenen (im Allgemeinen recht umfangreichen) plugins und sowohl einer datenbankgestützten, als auch einer log-dateien-gestützten Zugriffsstatistik. Weiterhin soll eine postnuke-Seite2 mit mäßigen Zugriffszahlen, eine interne Bibliotheksverwaltung, eine bis zwei Feed-Aggregator-Seiten und ein internes Forum beherbergen (smf). Daneben sollen mehrere Testumgebungen für diverse weitere Seiten Platz finden und - in Zukunft - eine rechenintensive wiki-Software. Die Datenbanken für diese Seiten sollen alle auf dem Server liegen.

Neben der Webserver-Tätigkeit sollte der Mailverkehr an alle Domains durch den Server selbst geregelt werden und es sollte ein guter Spam-Filter eingebaut sein.

"Hardware"

Der Server ist ein bei Gehrkens.IT in Hannover gehosteter x|pro 256 mit Zugriff auf einen dualen Prozessor und einem Arbeitsspeicher von 256MB.

Software

Neben der bereits angesprochenen Minimalinstallation von Ubuntu3 habe ich die mir bekannte Maillösung Postfix/Courier wieder installiert. Postfix kümmert sich um den Transport der Emails, während Courier das Abrufen der in der mailbox gespeicherten Email sowohl über imap, als auch über pop3 erlaubt.

Was den Webserver angeht, so hatte ich schon früher Probleme mit dem standardmäßig installieten apache(2). Dieser kommt bei den Anforderungen mit den zur Verfügung gestellten 256 mb RAM nicht aus, ist an sich schon recht langsam bei der Verarbeitung von php-Seiten und wird durch das zwingend notwendige Auslagern um so langsamer. Stattdessen habe ich den als "lighty" bekannten lighttpd installiert, der weit mehr als apache auf performance getrimmt ist. Als SQL-Server dient der Webstandard Mysql und als php-interpret die Version php5 in der cgi-Version4.

Konfiguration

Dankenswerter weise sind alle benötigten Pakete Bestandteil der Ubuntu-Distribution5. Ich habe die nachfolgenden Konfigurationsschritte nach Server sortiert, aber in der Praxis mussten sie ineinandergreifen..

Email-Server

Bei der Konfiguration des Mailservers bin ich weitestgehend der Anleitung in dieser howtoforge-Anleitung gefolgt. Dort werden die grundsätzlichen Schritte zur Installation von Postfix inklusive SMTP-AUTH, TLS-Authentifizierung und der dazu gehörigen Courier-Installation erklärt. Geändert habe ich nur zwei Dinge:

  1. Um Email für mehrere Domainnamen zu erhalten muss die Variable "mydestination" in /etc/postfix/main.cf geändert werden.
    CODE:
    1. mydestination = my.servername.de, localhost, der.de, die.de

    Postfix kann dann allerdings nicht zwischen den Domainnamen unterscheiden und behandelt alle eintreffenden Emails als wären sie an ein und dieselbe Domain gerichtet. Um mehrere Domainnamen mit teilweise ähnlichen Emailnamen6 einzurichten, muss eine zusätzliche Konfiguration virtueller Server erfolgen.

    CODE:
    1. mydestination = my.servername.de, localhost
    2. virtual_alias_domains = der.de, die.de

    Nun weiß Postfix, dass es Emails für die Domains der.de und die.de annehmen soll, man kann ihm dann noch mitteilen, wie er die Emails zu sortieren hat. Dazu wird eine Datei erstellt, die die Auflösung zwischen Emailadresse und lokalen Benutzern vollzieht:

    /etc/postfix/virtual_domains

    CODE:
    1. der@der.de        deradmin
    2. der@die.de        dieadmin

    Von dieser Datei sollte noch die hash-Tabelle erstellt werden:

    CODE:
    1. postmap /etc/postfix/virtual_domains

    Dieser Befehl sollte die Datei virtual_domains.db erstellen. Danach wird die Datei in der main.cf eingetragen (nicht die .db-Datei!):

    CODE:
    1. virtual_alias_maps = hash:/etc/postfix/virtual_domains

  2. Das nächste ist die Abwehr von Spam-Emails: Postfix bietet mehrere Methoden und Eingriffsmöglichkeiten, um bewerten zu können, ob eine Email 'vernünftig'7 ist. Dazu sollte man wissen, wie die Übermittlung einer Email vonstatten geht8:
    • Der Client stellt eine Verbindung zum Mailserver her. Meist wird die Verbindung über den smtp-Port 25 hergestellt, kann aber von server zu server variieren9. Läuft der Server ordnungsgemäß, dann antwortet er mit dem code 220.
    • Der Client muss nun mit dem Befehl HELO (oder EHLO10 ) sich identifizieren (also ehlo localhost z.B.) Der Server antwortet mit dem code 250.
    • Der "MAIL FROM"-Befehl gibt an, von welchem Absender die Email kommt (MAIL FROM: der@der.de). Wieder antwortet der Server mit 250.
    • Der "RCPT TO"-Befehl gibt an, welche Zieladresse die Email hat (RCPT TO: der@die.de). Serverantwort ist wieder 250.
    • Dann kommt die eigentliche Übermittlung der Email (inklusive header). Diese wird mit dem Befehl DATA eingeleitet und mit einem Escape-Charakter abgeschlossen, der vom Server beim Eingeben von "DATA" vorgegeben wird.
    • Zum Beenden der Verbindung wird der Befehl QUIT ausgeführt.

    Eine smtp-Sitzung kann also wie folgt aussehen:

    CODE:
    1. telnet localhost 25
    2. Trying 127.0.0.1...
    3. Connected to localhost.
    4. Escape character is '^]'.
    5. 220 servername ESMTP Postfix (Ubuntu)
    6. ehlo localhost
    7. 250-servername
    8. 250-PIPELINING
    9. 250-SIZE 10240000
    10. 250-VRFY
    11. 250-ETRN
    12. 250-STARTTLS
    13. 250-AUTH PLAIN LOGIN
    14. 250-AUTH=PLAIN LOGIN
    15. 250-ENHANCEDSTATUSCODES
    16. 250-8BITMIME
    17. 250 DSN
    18. MAIL FROM:der@der.de
    19. 250 2.1.0 Ok
    20. RCPT TO:der@die.de
    21. 250 2.1.5 Ok
    22. DATA
    23. 354 End data with <CR><LF>.<CR><LF>
    24. test
    25. .
    26. 250 2.0.0 Ok: queued as C868A114C84
    27. quit
    28. 221 2.0.0 Bye
    29. Connection closed by foreign host.

    Mit Postfix hat man die Möglichkeit nach verschiedenen Merkmalen Emails zu klassifizieren. Zur Filterung von Emails gibt es fünf Anknüpfungspunkte:

    • smtpd_client_restrictions wird beim Verbindungsaufbau durchlaufen
    • smtpd_helo_restrictions wird nach dem helo/ehlo-Befehl durchlaufen
    • smtpd_sender_restrictions wird nach dem 'MAIL FROM'-Befehl abgearbeitet
    • smtpd_recipient_restrictions wird nach dem 'RCPT TO'-Befehl abgearbeitet
    • smtpd_data_restrictions wird nach dem 'DATA'-Befehl abgearbeitet

    An jeder dieser Stellen kann eine Email abgelehnt werden. Es hat sich eingebürgert, die Filterung auf den Zeitpunkt nach dem 'RCPT TO'-Befehl zu verschieben11, da einige Mail-Clients ein vorheriges Ablehnen strikt ignorieren und ihre Daten weiterschicken. Da aber bis zum Senden des DATA-Befehls keine übermäßigen Datenmengen zu verarbeiten sind, sollte diese kurze Verzögerung kein Problem darstellen.

    Die zur Verfügung stehenden 'restrictions' finden sich auf den Seiten von Postfix. Ich will in Kürze die von mir gewählte Konfiguration erklären:

    CODE:
    1. smtp_delay_reject = yes
    2. # keine client_restrictions, die Verbindung soll immer aufgebaut werden dürfen
    3. #smtpd_client_restrictions =
    4. # Der helo/ehlo-Befehl soll immer ausgeführt werden. Fehlerhafte Verbindungen sollen nicht toleriert werden (das erspart bereits einiges an spam)
    5. smtpd_helo_required = yes
    6. smtpd_helo_restrictions
    7.     # Alle Verbindungen vom eigenen Server sollen zugelassen und von den weiteren Prüfungen ausgenommen werden
    8.     permit_mynetworks,
    9.     # spezielle hash-Tabelle über helo-Einträge, die nicht zugelassen werden
    10.     check_helo_access hash:/etc/postfix/helo_access,
    11.     # Nicht auflösbare und fehlerhafte hostnames ablehnen
    12.     reject_non_fqdn_hostname,
    13.     reject_invalid_hostname,
    14.     # alles andere erst einmal erlauben
    15.     permit
    16. smtpd_sender_restrictions =
    17.     # Wenn Client sich richtig authentifiziert, soll er senden dürfen
    18.     permit_sasl_authenticated,
    19.     # Alle Verbindungen vom eigenen Server sollen zugelassen und von den weiteren Prüfungen ausgenommen werden
    20.     permit_mynetworks,
    21.     # Nicht auflösbare Senderadresse nicht zulassen
    22.     reject_non_fqdn_sender,
    23.     # Anhand einer manuell erstellten Liste von nicht-erlaubten Absender prüfen (funktioniert nicht, so wie ich möchte...)
    24.     check_sender_access hash:/etc/postfix/blockedemails
    25.     # alles andere erst einmal erlauben
    26.     permit
    27. smtpd_recipient_restrictions =
    28.     # wenn ein client seine daten versucht einzuschleusen, bevor die Empfangsbestätigung vom Server kommt, wird er abgelehnt (fehlerhaftes Verhalten)
    29.     reject_unauth_pipelining,
    30.     # nicht auflösbare Empfängeradresse nicht zulassen
    31.     reject_non_fqdn_recipient,
    32.     # alle Verbindungen aus dem eigenen Netz erlauben
    33.     permit_mynetworks,
    34.     # authentifizierte Verbindungen erlauben und unauthentifizierte Ziele nicht zulassen
    35.     permit_sasl_authenticated,
    36.     reject_unauth_destination,
    37.     # alles andere erlauben
    38.     permit

    Das hält einiges an fehlerhaft konfigurierten Spam-Sendern ab, allerdings reicht das noch lange nicht.

    Zur weiteren Minderung trägt die Greylisting-Methode bei. Hierbei wird jedem client der erste Versuch eine Email abzuschicken temporär abgelehnt12. Spam-Versender haben die Angewohnheit dieselbe Email nicht noch einmal abzuschicken. Ordentliche Mailserver würden die Email zurückhalten und in einiger Zeit13 noch einmal abzuschicken versuchen. Beim zweiten Versuch wird dann die Email durchgelassen und der Absender wird für die weitere Zustellung freigestellt.

    Das greylisting ist derzeit noch stark umstritten, da die Hürde für Spam-Versender relativ niedrig ist14 und der Nachteil durch die erstmalige Verzögerung einer 'ordentlichen' Email teilweise gravierend sein kann. Einige Administratoren drehen der Methode den Rücken, aufgrund der bei mir immer noch sehr hohen Zahlen an Emails, die durch das greylisting entfernt werden und weil ich grundsätzlich ein Problem mit blacklisting habe15, da ich einem fremden Server Vertrauen schenken muss und dieses durchaus gewollt oder ungewollt missbraucht werden kann, setze ich erst einmal weiterhin greylisting ein.

    Für Postfix gibt es das Modul Postgrey, mit dem sich greylisting umsetzen lässt. Unter Ubuntu lässt sich das mit

    CODE:
    1. apt-get install postgrey

    einfach installieren. Zur Konfiguration stehen auf der einen Seite whitelist-Dateien unter /etc/postgrey/ zur Verfügung, auf der anderen Seite die Aufrufparameter in der Datei /etc/default/postgrey. In beiden Fällen kann der Default-Zustand beibehalten werden. Damit postfix das Modul anspricht, muss der entsprechende Eintrag in einer der restrictions eingetragen werden:

    CODE:
    1. smtpd_recipient_restrictions =
    2.     # wenn ein client seine daten versucht einzuschleusen, bevor die Empfangsbestätigung vom Server kommt, wird er abgelehnt (fehlerhaftes Verhalten)
    3.     reject_unauth_pipelining,
    4.     # nicht auflösbare Empfängeradresse nicht zulassen
    5.     reject_non_fqdn_recipient,
    6.     # alle Verbindungen aus dem eigenen Netz erlauben
    7.     permit_mynetworks,
    8.     # authentifizierte Verbindungen erlauben und unauthentifizierte Ziele nicht zulassen
    9.     permit_sasl_authenticated,
    10.     reject_unauth_destination,
    11.     # greylisting
    12.     check_policy_service inet:127.0.0.1:60000,
    13.     # alles andere erlauben
    14.     permit

    Weiterhin habe ich Spamassassin installiert, um den restlichen Spam zu beseitigen. Spamassassin ist als Ubuntu-Paket erhältlich und muss nach der Installation16 in den Arbeitsablauf von Postfix eingebunden werden. Dazu wird die Datei /etc/postfix/master.cf editiert. An das smtpd-Modul müssen folgende Argumente übergeben werden:

    CODE:
    1. smtp    inet    n   -  - -    -   smtpd
    2.         -o content_filter=spamassassin

    Dann muss eine zusätzliche Zeile eingefügt werden:

    CODE:
    1. spamassassin    unix    -   n  n -    -   pipe
    2.         user=spamfilter argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

    Der Benutzer 'spamfilter' muss angelegt werden, dann startet man postfix neu und schon funktioniert spamassassin!

Webserver

Ein großer Vorteil von lighttpd ist die Art, wie es Skriptsprachen wie php einbindet. Während Apache standardmäßig bei jedem Aufruf eines php-skripts eine neue php-Instanz startet und nach erfolgter Auswertung die Instanz wieder beendet, hält lighttpd über die fastcgi-Schnittstelle mehrere Instanzen von php-cgi auf Abrufbereitschaft und verteilt auf diese offenen Instanzen die anliegenden Auswertearbeiten. Die kostspieligen Starts und Stops entfallen somit komplett17.

Zwischendurch hatte ich sowohl fcgi als auch das 'normale' cgi aktiviert. Was dann geschah, hat mich mehr als zwei Stunden meines Lebens gekostet: Lighttpd startete wie gewohnt einen php-cgi-Prozess, der auf eine Anfrage gewartet hat. Wenn dann eine Anfrage an Lighttpd kam, wurde eine weitere php-cgi-Instanz gestartet und nach erfolgter Verarbeitung wieder geschlossen. Durch die umsonst geöffneten Instanzen kam es dann regelmäßig zur totalen Speicherauslastung und der Server war überhaupt nicht mehr erreichbar.. Offensichtlich geniesst cgi eine höhere Priorität als fast-cgi bei der Verteilung der Aufgaben.

Zur weiteren Beschleunigung von php-Skripten habe ich dann zum Schluß noch xcache installiert. Xcache speichert den kompilierten Zwischenstand einzelner php-skripte. Dadurch wird das erneute Kompilieren beim nochmaligen Aufruf erspart. Dies hat dem Seitenaufbau um wenige Millisekunden weitergeholfen18. Weiterhin bietet xcache einen Variablenspeicher an für Variablen, die sich nicht ganz so schnell ändern. Dieser Speicher muss allerdings einzeln von den php-skripten angesprochen werden, wofür mehr Programmierbedarf da ist. Glücklicherweise hat mein Cousin eine Erweiterung für wordpress geschrieben, die einige Datenbankabfragen in xcache zwischenspeichert. Dadurch reduzieren sich die Datenbankabfragen bei einem Aufruf der Seite teilweise um die Hälfte!

Ende

Ich hoffe, diese recht lang ausgefallene Zusammenfassung kann einigen verzweifelnden Administratoren einiges an Arbeit abnehmen oder in die richtige Richtung verweisen. Mir dient sie als Gedankenstütze und ich hoffe, ich kann hierauf aufbauend auch in der Zukunft Tips aus der eigenen Erfahrung bei der Administratotion dieses Servers aufschreiben. Viel Spaß!


  1. ja, Linux-profis werden entgegnen, man installiere Linux nie neu; aber bei der verqueren Installationslage des Systems hier auf dem Server, hätte ich mir mit einem dist-upgrade jeder Art zu viel Ärger eingehandelt. Schuldig bleibe ich ja trotzdem.. []
  2. demnächst als drupal-Seite umgesetzt, aber da bin ich mir noch nicht ganz sicher... []
  3. xencon bietet ein "ubuntu feisty"-image, das ich auf gutsy gibbon dist-upgraded habe. Dies habe ich vor der Installation weiterer Software, aber nach einem grundlegenden apt-get update und apt-get upgrade gemacht. []
  4. apt-get install php5-cgi []
  5. bei sarge musste ich noch so einige Pakete selbst zusammensuchen oder vom Quelltext erstellen lassen []
  6. also z.B. der@der.de und der@die.de, wenn der.de und die.de von einem einzigen server verwaltet werden []
  7. von einem 'vernünftigen' Rechner stammend, von einem 'vernünftigen' Sender gesendet, an einen 'vernünftigen' Empfänger gerichtet und mit einem 'vernünftigen' Inhalt gefüllt []
  8. dies habe ich mir auch nur 'hier und da' erarbeitet, deshalb können hier durchaus Fehler enthalten sein.. []
  9. Bei Postfix wird der 'listen'-Port in /etc/postfix/master.cf eingerichtet. Um einen weiteren Port einzurichten, kann man die erste nicht-auskommentierte Zeile duplizieren und den ersten Wert (normalerweise smtp = 25) auf die gewünschte Portadresse setzen []
  10. Beim Befehl EHLO antwortet der Server mit einer erweiterten Befehlsliste, um dem client zu signalisieren, welche SMTP-Befehle es zusätzlich zu den Standardbefehlen verstehen kann []
  11. Für Postfix ist es die Konfiguration 'smtp_delay_reject = yes' []
  12. Die Verschiedenen SMTP-Fehlercodes gibt es z.B. hier. Zum greylisting wird meist der code 450 oder 451 abgeschickt []
  13. nicht standardisiert []
  14. einen ordentlich versendenden Server zu halten sollte nich so schwierig sein []
  15. als Blacklists bezeichnet man Listen, die von einigen Servern zur Verfügung gestellt werden, in denen Emailversender eingetragen werden, die derzeit Spam verschicken. []
  16. apt-get install spamassassin []
  17. fastcgi ist eigentlich auch für Apache implementiert, wird aber nicht standardmäßig eingebunden. Lighttpd hat aber weitere Vorteile, vor allem was den Speicherverbrauch angeht.. []
  18. 0.3 Sekunden braucht der Seitenaufbau von toomuchcookies.net normalerweise. Mit xCache ist es nur noch ein Zehntel einer Sekunde! []

Server is running lighttpd 1.4.18

authorOmar | 26. Januar 2008

Yesterday my hoster had a slight problem with his tcp-stack and therefor no data would be transfered to the outside world. Every time a client started a connection, Apache would start a thread, which apparently did execute the request but then the resulting data couldn't be transfered to the client completely. Even using ssh the data was dripping in very slowly and sometimes the answer to a simple 'ps aux' stopped in the middle and didn't continue..

First i thought the problem is in my apache configuration and tried different things to optimize that. When at last it wouldn't work at all and when i saw that even ssh wasn't working so smoothly, i thought I'd call them and they confirmed the problem..

In the meanwhile - while the technicians were working on solving that problem - i got myself interested in lighttpd and thought i'd give it a try. And I'm impressed!

Lighty is really lightweight, the main task uses about 1% of my memory - that's about 3MB. It doesn't start more than one task which is a great comfort looking at, compared to apache2. The inclusion of php5 is very easy and performance options are easy to find. The php tasks - bound by fastcgi - keep running after completing the task. This makes starting and stopping the task everytime there is a new request obsolete.

The documentation is reasonable and many examples of configuration files can be found all over the net.

Linux-migration: various video thingies

authorOmar | 23. Mai 2007

After using windows for that long time, i got used to many small tools that help in every-day-tasks. One such task is downloading video files which are transported via stream-protocols such as mms and RTMP. Under windows i used to download them using HIDownload which is a commercial product. So, today i was looking for a way to download an mms-transported video and first found this advice, which uses mplayer to dump the stream to a file..

mplayer -dumpstream -dumpfile stream.wmv mms://...

The method is ok i guess, but while downloading mplayer doesn't show how much of the file it already downloaded or how much remains. But then i found WgetPRO, which is a comand-line application equivalent to the notorious GNU Wget but with the ability to dump streamed media to a file. Wget on the other hand can only download via http or ftp.

So, now i download using WgetPRO using this simple syntax:

wpro mms://...

Fast conversion

Then, i often need to convert video files. Simply put, using ffmpeg can solve the task:

ffmpeg -i input.wmv -f flv output.flv

Ubuntu - Once again with feeling

authorOmar | 15. Mai 2007

For the past two years I've been desperately trying to switch over to some Linux distribution and once and for all turning my back on Windows. One concrete outcome of this battle with myself was that I switched to Windows xp after totally erasing Windows 2000 to get myself to work on debian linux (which I had installed in a seperate partition). Already I have been changing my software preferences away from commercial software packages to open source ones, preferably ones who are platform-independent. Now with the release of Ubuntu Feisty Fawn - and specially with the release of Ubuntu Studio - I thought, I'd try it again - and right now I'm typing these lines working under Feisty Fawn.

Let me start with how I use my computer every day, since this is what can give an impression of what motivations and problems i run into on my way to open source heaven..

The Good

Office

Like most people, i do some word processing every now and then, but for me word processing was never a real issue. I must admit to never being able to use the front-runner of open source alternatives to microsoft office openoffice extensively but at least I have it installed and ready for use at all times.. ;-|

Aside from that, I use Adobe Acrobat to create pdf-files. I'd even started using Scribus to make flyers and such.. So in the office sector, there is no problem for me in switching to linux..

Graphics

For most of the presentations, documentations and some web-graphics I use the vector-based application Inkscape. In my experience it's much more effective than huge packages like Corel Draw (which I've hated for as long as I've knew it). The ability to produce easily changeable (and scriptable for web usage) svg-files isn't the only advantage. To me the ease of navigation and use (panning and zooming functionalities are very intuitive in Inkscape) is one of the more interesting features that are lacking in Corel Draw.

For image manipulation from time to time, I use Gimp, which serves all my needs after I've been used to Photoshop for some time. No problems here either!

Internet

Ok, this is just for record: Of course, using Firefox, Thunderbird and some ssh-client won't be a problem under Linux. Also the use of Azureus to download from the bittorrent-network and all those instant messaging systems (including skype) isn't a problem.. I'm looking forward to using podcast-clients more in the future..

Programming

I've been involved in writing applications for automation processes in both LabView and c#/vb.Net. Apparently, LabView is available for Linux, I'd have to see, if I can get a copy to work with from home. And now I've realized, that there is an IDE for .Net-development under linux, which I didn't know about until now: Monodevelop, which has been a spin-off of sharp-develop, which I've been using under Windows. I'd have to test it, but it seems to be sufficient. It even supports vb.net.

As for the development of applications for .Net Compact Framework, that could be a little bit tricky.

The Bad

PDA

I don't even know, if I'm able to connect my windows mobile pda to the linux system.. There is that project SynCE, but it doesn't seem to work properly at this time.

Of course, if the aim is to simply exchange data between linux and a windows mobile pda, then I can always use WM5torage, which transforms my pda into a card reader, which is accessible through linux..

Professional

For my work at the university i need to use ptc's Pro/Engineer - or any CAD-package really. I'm still on the hunt for a good practical open source CAD application, but right now, it doesn't look very good. I guess ptc has a linux version of Pro/Engineer, but acquiring a license for that will be a fit..

The Ugly

My biggest problem with Linux right now is the performance and the use of multimedia applications. Though by now, there are so many multimedia applications and solutions for linux, I'm searching for one, that could be an alternative to my choice under windows:

I've become used to using Inmatrix's ZoomPlayer, which is a commercial application. What I like most about Zoomplayer is the ability to change nearly anything in the way it handles media files (as i, which codecs and what display mode it uses). I've been told, that MPlayer or VLC are good alternatives, but until now, I can't say, I've been able to confirm that. Right now, I'm using a variety of media players that come with ubuntu ranging from Totem and gxine to MPlayer and VLC. There are simply some files, I can't play back using one or all of the installed applications!

Furthermore, I haven't seen the usability of ZoomPlayer reproduced in any other media player (be it for the windows platform or any other). Every single command in ZoomPlayer can be controlled using a shortcut. Changing the zoom factor is a matter of pressing "+" or "-", changing the aspect ratio can be done either with the use of the mouse or with a keyboard shortcut. In most other media players, it's not even possible to change the aspect ratio of a given video. In ZoomPlayer, one is able to pan through the time-line using two ranges simply by pressing a button. I tried that using Totem and VLC but their pan-ranges are fixed and can't be overridden!

Also, try and find a good media player, that has such an incredibly powerful OSD. In ZoomPlayer, one can search for media, select and add it to the playlist, interact with all dvd-functions and adjust the color levels of the video simply using the keyboard! Why isn't there a linux version of this wonderful piece of software?

Right now, this is my biggest problem!

The Best

The main reason that motivated me to retry using Ubuntu are the video processing and cutting applications that i want to use. I'm trying to find out, if Kino, Synfig and specially Cinelerra are worth the trouble. I hope they are, since I need those applications and some more to try and create some videos..

I didn't mention, that I use Blender, but that goes without question..