Archive for November, 2009

Sendmail? Postfix? – Was denn nun?

Da liegt es vor mir, wie ein großer weißer Fleck auf einer Landkarte: Das Thema Mailserver unter Linux. In dieses Thema hineingerutscht bin ich dadurch, dass ich auf einer Ubuntu-Kiste eine Software namens Munin installiert habe, die z.B. die Festplattennutzung oder die CPU-Auslastung von Rechnern innerhalb eines Netzwerkes überwachen kann. Munin hat auch die Möglichkeit Mails zu verschicken, wenn nun eine Festplatte droht voll zu laufen. Nur braucht man dazu eben einen Mail Transfer Agent (MTA) wie sendmail bzw. postfix.

Jo, und ich hab noch nie sowas eingerichtet bzw. noch nie einen Mailserver zusammengebastelt. Ich weiß gar nicht so recht wo ich bei diesem Thema anfangen soll. Vielleicht erst mal mit dem Begrifflichkeiten. Und dann wäre noch die Frage, welche MTA nehme ich zum Anfang? Zu beiden habe ich sehr unterschiedliche Meinungen gehört. Postfix wäre extrem mächtig und zu sendmail habe ich diesen passenden Satz gelesen: “sendmail ist der Alptraum jedes Administrators.”
“Oh, Gott!”, war da mein gedanklicher Ausspruch dazu. So nach dem Schema, welches ist denn wohl das geringere der beiden Übeln. Bisher bin ich auch noch nicht viel weiter mit diesem Thema. Ein passendes Anfänger-Tutorial suche ich noch.

Mein PHP-Skript: Läuft auf einem Linux-XAMPP aber nicht auf der Windows Version

Ich hänge momentan an einem ziemlich – aus meiner Sicht – absurden Problem. Ich habe ein PHP-Skript erstellt, das zu einem Datenbankfrontent gehört. An sich funktioniert dieses Skript auch – es gibt keine Syntaxfehler oder sowas.
Es lief auch alles ganz fein bis ich das ganze mal auf einem Rechner mit Windows Vista Business und XAMPP 1.7.2 ausprobierte. Dann funktioniert in einer einzigen Datei (namens command.php) der Aufruf von header(“Location: index.php”) überhaupt nicht mehr, während dieser Aufruf allerdings in meinen anderen PHP-Dateien einwandfrei ausgeführt wird. Vorher lief das Ganze auf einem Linux System. Da ich das ganze nocheinmal nachkontrollieren wollte, habe ich schnell meinen virtuellen Ubuntu-Server hergenommen und genau die selbe Version (nur für Linux eben) installiert und es läuft ALLES!

Bei Windows währenddessen geht alles bis jener Aufruf in der command.php. Ich weiß nicht, was da falsch sein soll. Mittlerweile habe ich den Inhalt dieser Datei auf diesen einzigen Aufruf reduziert, nur um alle anderen Fehlerquellen durch anderen Code in dieser Datei auszuschließen. Ergebnis ist das selbe: es geht nicht!

Langsam bin ich am verzweifeln, weil ich nicht mehr weiter weiß und mir das Ganze mittlerweile aus dem Hals heraushängt.
Den selben Test habe ich noch einmal auch auf einem Windows XP Professional durchgeturnt mit genau dem selben Effekt wie bei Vista. Ähnlichen Effekt lässt sich auch auf Linux erzielen, wenn man statts den XAMPP sich das Apache-Packet z.B. von Ubuntu installiert, was zum Beispiel automatisch bei der Server Variante geschieht, wenn man die Option LAMP-Server wählt. Da läuft dieses Skript auch nicht.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
	@file form-chooser.php :
	Weiterleitungen auf andere Formulare
	Dieses Script leitet vom Formular @file add-device.php
	auf nachfolgende Formulare um, je nach Geraetetyp
*/
	switch ($_POST['devtype'] ) {
		case "phone": {
			header("301 Moved Permanently");
			header("Location: index.php?action=phone-form");
			break;
		}
		case "computer" :  {
			header("301 Moved Permanently");
			header("Location: index.php?action=computer-form");
			break;
		}
		case "printer": {
			header("301 Moved Permanently");
			header("Location: index.php?action=printer-form");
			break;
		}
		default: {
			header("301 Moved Permanently");
			header("Location: index.php?action=error");
			break;
		}
	}

Dieser gezeigte Code geht, wenn man ihn über den Klick auf einen Button eines vorhergehenden Formulars aktiviert.
Der Code in der command.php hat eine ähnliche Struktur bzw. er befindet sich ebenfalls in einem switch-case-Konstrukt. Zu Test Zwecken habe ich den Code in der command.php auf folgendes reduziert:

header("Location: index.php);

Auch die Angabe des vollen Pfades bringt hier nichts.
Und genau dieser Umstand lässt das Ganze so absurd erscheinen. Ich persönlich weiß nicht, woran es noch liegen könnte. Ich habe schon folgende Punkte ausgeschlossen:

  • Berechtigungen unter Vista: Kann nicht sein unter XP läufts ja ebenfalls nicht.
  • Fehlende PHP-Bibliothek: Kann nicht sein, da header() praktisch zum Standard-Umfang gehört. Und zweitens funktioniert der Aufruf in anderen meiner Skripte auch.
  • Falsche Einstellungen am XAMPP vorgenommen: Ich fasse bei XAMPP keine Config-Files an.
  • Unterschiede in den XAMPP-Versionen: Ich habe auf allen Testsystemen ein und die selbe Version 1.7.2 installiert.

Virtualisierung

… ist eine feine Sache, wie ich finde. Da kann man mal was ausprobieren, ohne ein Produktivsystem zun zerschießen. Ich nehme für diesen Zweck das freie Sun VirtualBox her, um entsprechend virtuelle Maschinen anzulegen und diese zu testen. Und diese virtuellen Maschinen sind bei mir im Moment bevorzugt Serversysteme. Schließlich soll der kleine Admin (bzw. ich) damit umgehen lernen.

Inzwischen läuft auch schon ein kleiner Ubuntu 9.10 Server (sprich die Ubuntu-Varinte, die von Haus aus keine grafische Benutzeroberfläche mitbringt). Ein Windows 2003 Server fehlt da ebenfalls nicht in meiner kleinen Sammlung – immer bereit, um daran herum zu spielen. Nur fehlen mir manchmal nur die entsprechenden Übungen, die ich an den Systemen ausführen könnte. Bei Linux werde ich mich da an die Lehrpläne zu den LPIC Leveln halten. Bei Windows weiß ich nicht so genau, was da ein “guter Admin” können soll.