You're in all Blogs Section

Sicherer Server? Teil 1

Einen Server zu betreiben – ganz egal welcher Art – ist ständig eine Herausforderung. Hosting-Provider bieten vServer, Cloud-Instanzen, Pseudo-Dedizierte Server und die klassischen Dedizierten mittlerweile zu Dumping-Preisen an, suggerieren hohe Leistung und einfache Verwaltung ohne Konsolen-Kenntnisse für den Start von erfolgreichen und Gewinnbringenden Web-Projekten. Das viele Mieter dadurch eine Spam-Schleuder bereitstellen, bemerken spätestens ambitionierte und fortgeschrittene Administratoren in ihren Logdateien. In diesem Mehrteiler möchte ich kurz eine Übersicht geben, worauf man achten sollte und wie man eine sicherere Umgebung auf Linux-Servern schafft.

Läuft doch!

Sobald die Zugangsdaten zum neuen, eigenen Server eingetrudelt sind, ein System-Image schon vorinstalliert und die Maschine erreichbar ist, läuft ja eigentlich alles. Was da alles läuft ist aber erst mal gar nicht so offensichtlich: läuft und funktioniert die Firewall? Werden Dienste bereitgestellt, die ich gar nicht bereitstellen will? Sind aktuelle Sicherheitsaktualisierungen eingespielt? Wo fange ich jetzt an???

SSH Sichern

Zunächst sollte man das Passwort für den Benutzer “root” ändern oder gar deaktivieren, schließlich taucht es ja zumindest dort auf, wo es einem selbst mitgeteilt wurde – eine potentielle Lücke. Also erst mal mit ssh auf den Server verbinden! Dazu eignet sich unter Windows das bewährte “PuTTY”, Linux (“Konsole” / “Terminal”) und Mac OS X (“Terminal.app”) liefern passende Programme ohne Zusätzliche installation. Damit beim Verbinden zum Server nicht jedes Mal das Passwort eingegeben werden muss, gibt es SSH-Keys, die das Private / Public-Key verfahren verwenden. Im folgenden Beispiel wird ein lokales Schlüssel-Paar erstellt, hochgeladen und die Passwort-Anmeldung für root deaktiviert. Dies funktioniert unter Linux und Mac OS X – unter Windows wird das Programm PuTTYgen dafür gebraucht, das diese Vorgänge in einer grafischen Oberfläche vornimmt (separate Anleitung folgt).

[palita@clientpc ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/palita/.ssh/id_rsa): 
Created directory '/home/palita/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/palita/.ssh/id_rsa.
Your public key has been saved in /home/palita/.ssh/id_rsa.pub.
The key fingerprint is:
fa:04:7c:9a:91:19:e3:b9:a7:b0:d0:e0:ee:9f:67:05 palita@clientpc
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| o |
| oE* |
| . O.S |
| . o O. |
| o o =.o |
| . . +o= |
| .o.+o. . |
+-----------------+

mit dem Befehl ssh-keygen -t rsa wird auf dem Client-PC ein privater und der passende öffentliche Schlüssel erstellt, es folgt die Abfrage des Zielverzeichnisses (mit Enter bestätigen für voreingestellten Pfad), ein optionales Passwort + Bestätigung und eine Bestätigungsnachricht. Nun wird der öffentliche Schlüssel auf den Server kopiert und die Passwort-Anmeldung deaktiviert:

[palita@clientpc ~]$ scp .ssh/id_rsa.pub root@server:
The authenticity of host 'server (192.168.2.10)' can't be established.
RSA key fingerprint is ab:cd:ef:a0:01:00:02:3a:a2:3f:aa:11:22:33:aa:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server,192.168.2.10' (RSA) to the list of known hosts.
root@palita.net's password: 
id_rsa.pub                                   100%  397     0.4KB/s   00:00    
[palita@clientpc ~]$ ssh root@server
root@server's password: 
Last login: Thu Mar 19 13:03:48 2015 from 192.168.2.09
[root@server ~]# mkdir -p ~/.ssh
[root@server ~]# mv /id_rsa.pub ~/.ssh/authorized_keys
[root@server ~]# nano /etc/ssh/sshd_config

Im Editor wird jetzt nach der Stelle gesucht, die “#PermitRootLogin yes” lautet. Die Zeile wird angepasst und soll wie folgt lauten:

# Authentication:

#LoginGraceTime 2m
PermitRootLogin without-password
#StrictModes yes

Damit darf sich root nur noch ohne Passwort anmelden, also nur mit Keyfiles. Wichtig: wer nun die Clientseitige Datei .ssh/id_rsa verliert, wird nicht mehr so einfach auf seinen Server kommen, also: sicher sichern!

(Noch ein Hinweis für blutige Anfänger: der Editor wird mit STRG+X beendet, es folgt eine Abfrage zum Speichern die mit bestätigt werden muss. Wer noch keine Erfahrung mit nano hat, sollte meiner Meinung nach nicht direkt ins kalte Wasser springen und erst einmal einen Server als virtuelle Maschine im privaten Netz aufsetzen und ein bisschen experimentieren.)

Wie geht’s weiter?

Es wird (logischerweise) weitere Teile geben, in denen auf folgende Programme und Konzepte eingegangen wird:

  • iptables / netfilter: Die Linux-Firewall
  • fail2ban: Bruteforce, Spam und DoS-Attacken vermeiden
  • Überwachung: nützliche Tools für den Serverstatus

Gerne können hier Kommentare hinterlassen werden, wenn weitere Themen behandelt werden sollen.

Tagged with: , ,
Posted in Allgemein

Mountain Lion: Zusätzliche SSD für enorme Performance-Steigerung

Was ein SSD ist, dürfte allgemein bekannt sein. Die Tatsache, dass ein SSD um ein vielfaches schneller ist, als “herkömmliche” Festplatten, ist auch nichts neues. Wie man in einem (älteren) Mac (egal ob iMac, Macbook oder der Rest) mit Mountain Lion die Vorteile eines SSD nutzen kann, soll hier kurz beschrieben werden.

Zunächst der obligatorische Hinweis, dass für Schäden oder Datenverlust keine Haftung übernommen wird – die Benutzung dieser Anleitung erfolgt auf eigene Gefahr.

Hinweis: Eine Kurzfassung findet sich am Ende des Artikels!

Auswahl des SSDs

Welcher nun der beste Hersteller ist, sollte jeder für sich selbst entscheiden und eigene Recherchen betreiben. Jegliche Empfehlung wäre in so kurzer Zeit obsolet, dass darauf hier komplett verzichtet wird. Was bedacht werden soll ist die Kapazität. Hier kann man einiges an Geld sparen, wenn man sich folgendem bewusst wird:

Das Betriebssystem selbst ist nicht ganz so groß, und Speicher ist teuer – vor allem bei SSDs. Kurz und knapp meine persönliche Empfehlung: 64 GB SSD reichen vollkommen aus! Der Benutzerordner, in dem sämtliche Benutzereinstellungen, Dokumente, Musik, usw. liegen, macht den mit Abstand größten Anteil an Daten aus. Um sicher zu gehen, kann man folgendermaßen überprüfen, wie viel Speicherplatz man benötigt:

  1. im Finder die Systemfestplatte auswählen
  2. cmd ⌘ + i drücken, um das Informationsfenster aufzurufen
  3. benutzten Speicher ablesen, z.B. 581,72 GB auf dem Volume
  4. im Stammverzeichnis den Ordner Benutzer auswählen, wieder cmd ⌘ + i, um das Informationsfenster aufzurufen
  5. Größe ablesen, z.B. 532,96 GB auf dem Volume
  6. Differenz berechnen, z.B. 581,72 GB – 532,96 GB48,76 GB
  7. SSD mit mindestens dieser Größe einbauen

In diesem Fall wurde eine 64 GB SSD verwendet, damit sind noch ca. 15 GB für Programme frei.

Einbau

In diesem Artikel wird davon ausgegangen, dass das SSD zusätzlich zur internen Festplatte eingebaut wird. In meinem Fall habe ich bei einem iMac (27” late 2009) das (sowieso defekte) Superdrive-Laufwerk ausgebaut und an dieser Stelle eine SSD platziert, und zwar schlecht. Kein teures Gehäuse, kein zusätzliches Kabel oder sonstiges – einfach nur das Laufwerk, angeschlossen mit einem SATA auf Slim SATA Adapter, mit Filzgleitern an das Gehäuse geklebt und alles wieder zugeschraubt. Das ging bei mir Problemlos, man sollte nur unbedingt darauf achten, dass der Temperatursensor vom Superdrive nicht kaputtgemacht wird und am Ende wieder angeschlossen wird (bei mir klebt er jetzt einfach nur am Gehäuse), sonst dreht der Lüfter ziemlich auf. Eine gute Anleitung für iMacs gibt es auf iFixIt.

Installation

Ist das SSD eingebaut, wird erst einmal ganz normal gebootet. Im Festplatten Dienstprogramm (zu finden unter Programme → Dienstprogramme) sollte man jetzt das Laufwerk sehen.

Formatieren

Der erste Schritt: Formatieren – und das geht so:

  1. SSD (nicht die Partition, schon gar nicht das Systemlaufwerk) anwählen
  2. im Reiter “Partition” ein neues Partitionslayout (1 Partition) auswählen
  3. beliebigen Namen vergeben
  4. Mac OS Extended (Journaled)-Format auswählen
  5. weiter unten auf “Optionen…” klicken
  6. GUID-Partitionstabelle wählen und mit OK bestätigen
  7. Anwenden
  8. kurz warten (wirklich kurz, es ist eine SSD; keine Kaffeepause notwendig)

Festplatten Dienstprogramm

Wiederherstellungspartition erstellen und übertragen

Unter Mountain Lion gibt es auf der Systemfestplatte eine kleine, versteckte Partition, die Programme zur Festplattenwiederherstellung bereithält. Diese wird am besten ebenfalls auf die SSD übertragen. Dazu eignet sich das Programm “Carbon Copy Cloner” (CCC), das später auch für das Kopieren des Systems verwendet wird. Also: hier runterladen und in den Programme-Ordner kopieren. Das kostenpflichtige Programm hat eine 30-Tägige Testphase, die voll funktionsfähig ist. Der / Die EntwicklerIn würde sich dennoch bestimmt über den Kauf freuen.

  1. CCC starten
  2. in der Menüleiste unter Fenster auf Festplattenverwaltung klicken
  3. SSD auswählen
  4. im Reiter “Recovery HD” auf den Button Recovery HD-Partition für dieses Volume erstellen klicken
  5. kurz warten

Systemdaten kopieren

Wie schon geschrieben sollte man im Idealfall nur die Systemdaten und Programme auf dem SSD unterbringen, der Benutzerordner kann ruhig auf der Festplatte bleiben, so hat man genug Platz für Musik, Fotos, Videos und sonstigen Krempel.

  1. im Hauptfenster von CCC als Quelle die Systemfestplatte auswählen (z.B. “Macintosh HD”)
  2. als Ziel das SSD auswählen
  3. sonstige Einstellungen nicht notwendig.
  4. auf Klonen klicken und warten

Eventuell kommt noch eine Warnung, dass das Ziellaufwerk zu wenig Speicher haben könnte, das liegt daran, dass CCC nur den belegten Platz der Quelle mit dem freien Platz des Ziels vergleicht, nicht aber die ausgeschlossenen Ordner abzieht.

Bei mir hat der Vorgang etwas mehr als 30 Minuten gedauert und auf der SSD sind nun 49 GB belegt.

Carbon Copy Cloner

Neustart mit SSD

Jetzt muss der Mac noch wissen, dass er von dem SSD starten soll:

  1. Systemeinstellungen (zu finden unter Programme) öffnen
  2. unter System auf Startvolume klicken
  3. SSD anwählen
  4. Neustart drücken

Das war’s schon (fast). Der Mac startet jetzt neu und man kann staunen, wie schnell so ein Bootvorgang doch gehen kann. In meinem Fall wurden aus über 2 Minuten (bis zum vollständigen starten, inkl. automatischer Anmeldung Autostart-Programme) gerade mal 30 Sekunden.

Benutzerordner festlegen

nach dem Anmelden sieht alles wahrscheinlich komisch aus. Der Benutzerordner fehlt ja auch, in dem sich alle Einstellungen befinden. Das wird im letzten Schritt behoben:

  1. Systemeinstellungen (zu finden unter Programme) öffnen
  2. unter System auf Benutzer & Gruppen klicken
  3. auf das Schloss unten links klicken, um die Einstellungen freizugeben
  4. authentifizieren
  5. für jeden Benutzer: Rechtsklick auf den Benutzernamen → Erweiterte Optionen
  6. im Feld Benutzerordner den neuen (alten) Pfad angeben (oder auf Auswählen klicken zum Suchen), z.B. /Volumes/Macintosh HD/Users/benutzername
  7. mit OK bestätigen
  8. wird der aktuelle Benutzer verändert, wird man zum Neustarten aufgefordert
  9. neustarten
  10. alles fertig!

Abschluss

Speicherbelegung der SSD ohne Benutzerordner

Damit befinden sich sowohl das System, als auch alle Programme auf dem SSD, die “alte” Festplatte enthält nur noch den Benutzerordner (sofern man die Systemdaten gelöscht hat). Falls TimeMachine konfiguriert ist, wird das SSD automatisch mit in den Backup-Plan übernommen. Programme starten nun wesentlich schneller, insgesamt wirkt alles viel flüssiger, die Nebengeräusche nehmen aufgrund der wesentlich seltener in Anspruch genommenen Festplatte deutlich ab und man gewinnt ein wenig Speicherplatz dazu.

Natürlich braucht man bei Mac OS X nicht den Carbon Copy Cloner, um die Festplatte zu klonen – das Unixoide Betriebssystem hat die gängigen Tools für diese Aufgaben längst mit an Bord – allerdings wollte ich die Anleitung simpel halten und auf die Kommandozeile verzichten, in der man einiges Falsch machen kann, wenn man nicht aufpasst. Zudem ist die Macht der Kommandozeile nicht nur Windows-, sondern auch Mac-Benutzern häufig gänzlich unbekannt, was aber in einem bald folgendem Artikel hier behandelt werden soll.

Eine Sache noch…: TRIM

TRIM hin oder her – so hab ich’s gemacht: Trim enabler

Kurzfassung

Wer sich auskennt, hier die notwendigen Schritte:

  1. belegten Festplattenspeicher ohne Benutzerordner berechnen
  2. SSD mit mind. dieser Größe einbauen (genügend Platz nach oben lassen!!!)
  3. SSD mit GUID-Partitionstabelle formatieren, 1 Partition Mac OS X Extended (Journaled) erstellen
  4. Carbon Copy Cloner starten
  5. Wiederherstellungspartition klonen: im CCC unter Festplattenverwaltung bei SSD Recovery HD-Partition für dieses Volume erstellen
  6. mit CCC die Systemfestplatte als Quelle ohne “Benutzer”-Ordner auf SSD klonen
  7. unter Systemeinstellungen SSD als Startvolume auswählen & Neustarten
  8. unter Systemeinstellungen → Benutzer & Gruppen Heimverzeichnis für alle Benutzer auf den Pfad der HDD setzen (zu finden unter /Volumes/NameDerAltenFestplatte/Users/Benutzername)
  9. Neustarten
  10. Evtl. TRIM aktivieren (siehe Trim enabler)
  11. Fertig.

Viel Spaß mit einem viel schnelleren Mac!

Tagged with: , ,
Posted in Tutorials

Bash Hotkeys

Häufig benutzte Terminal-Befehle immer wieder eingeben ist lästig. Abhilfe schafft die History, mit der Pfeil-nach-Oben-Taste kann man die letzten Befehle durchblättern. Doch auch das Blättern kann lästig sein. Abhilfe schafft Ctrl+R, womit man in der History suchen kann. Wenn sich befehle ähneln, sucht man damit evtl. auch etwas länger.

Ganz einfach geht es mit Tastenkürzeln, die man in der .bashrc oder der .bash_profile definieren kann.

Ich möchte z.B. mit F1 über SSH zum Host palita.net auf Port 2011 verbinden, unter Verwendung des Keys ~/.ssh/second.pem und dem Benutzernamen palita. Auf dem Host möchte ich außerdem direkt den Befehl tail -f /var/log/messages ausführen.

Jetzt gilt es zunächst herauszufinden, wie bash auf F1 oder sonstige Tasten(-kombinationen) reagieren kann. Hier hilft read. Der Befehl read wartet auf Input und gibt einfach nur aus, was dieser war. Wenn man read startet und die Taste F1 drückt, kommt folgendes dabei raus:

$ read ^[OP 

^[ ist die Escape-Steuersequenz, diese wird mit \e umschrieben; OP bezeichnet dann also F1.

Um für diese Taste ein Kürzel einzurichten, editiert man einfach die Datei ~/.bashrc (unter Mac OS X  die Datei ~/.bash_profile) und fügt z.B. am Ende folgendes ein:

bind '"\eOP":"ssh palita@palita.net -p 2011 -i ~/.ssh/second.pem tail -f /var/log/messages\n"'

Nach dem Speichern und neuem Einloggen wird der Befehl beim Drücken von F1 ausgeführt. Das direkte Ausführen kann man durch entfernen von \n (Newline) verhindern. Damit lassen sich dann z.B. auch einzelne Fragmente an Befehle anfügen, z.B. um sich schonmal das Tippen von cd /var/www/virtual_hosts/ zu sparen.

Tagged with: , , ,
Posted in Tutorials

Grundlagen – BASH (Linux / Mac Terminal)

Neue Version

!!! Eine überarbeitete Liste befindet sich unter palita.net/t/bash

Grundfunktionen

Hier sind einige Grundfunktionen der Shell, die sich mit Befehlen kombinieren lassen oder Auswirkungen auf andere Befehle haben. In einigen Beispielen werden diese Grundfunktionen verwendet.

Umleitungen

Funktion Beschreibung
ls > liste.txt
Ausgababe von ls nicht im Terminal ausgeben, sondern in die Datei liste.txtschreiben
ls -l >> liste.txt
Ausgabe von ls -l an liste.txt anhängen
grep palita < datei.txt
Den Inhalt von datei.txt als Terminal-Eingabe verwenden
|
Die Pipe ist eine sehr nützliche Funktion. Sie leitet Ausgaben an andere Programme weiter. Um dies näher zu verdeutlichen nachfolgend einige Beispiele
Verwendung der Pipe (|)
befehl1 | befehl2
leitet die Ausgabe von befehl1 direkt an befehl2 weiter
ls -la | grep jpg
Verzeichnisinhalt auflisten, mit grep nur Zeilen, die jpg enthalten ausgeben
ls -la | grep jpg | grep -v foto
wie voriges Beispiel, zusätzlich mit einem zweiten grep alle Vorkommnisse vonfoto nicht herausfiltern und nicht ausgeben (-v)

Historie

Funktion Beschreibung
sudo !!
Den letzten Befehl wiederholen, jedoch den Befehl sudo (als Superuser ausführen) voranstellen. Nützlich auch um z.B. die Ausgabe des letzten Befehls an less weiterzuleiten (nicht vergessen, dass der Befehl erneut ausgeführt wird, nicht nur die Ausgabe wiederholt wird!)
history
die letzten ausgeführten Befehle ausgeben

Automatische Vervollständigung

Die Bash kann standardmäßig Befehle und Dateien automatisch vervollständigen. Möchtest du z.B. den Befehl dmesg ausführen, reicht die Eingabe von dm und das Drücken der Tabulator-Taste (↹), esg wird automatisch angefügt. Sollte es mehr als eine Übereinstimmung geben, wird durch zweimaliges Drücken der Tabulatortaste eine Liste mit möglichen Befehlen ausgegeben. Diese Funktion ist genauso für Dateien gültig, so kann man sich etwa durch die gesamte Ordnerstruktur mit Hilfe von Tab leiten lassen. Um die Datei /var/log/syslog auszugeben, wäre eine einfache Möglichkeit:

catTAB/vTABlogTABsysTAB

Gibt es keine mehrfachen Übereinstimmungen wird automatisch

cat /var/log/syslog

angezeigt und mit Enter ausgeführt.

 

Information

Befehl Beschreibung
man echo
manpage (Handbuch) für den Befehl echo öffnen. Navigation mit Pfeiltasten, beenden mit q
which echo
kompletten Pfad des Befehls echo ausgeben
whereis echo
kompletten Pfad des Befehls echo und seinen Konfigurationsdateien ausgeben
whatis echo
kurze Funktionsbeschreibung über den Befehl echo ausgeben
time echo "Test"
Dauer des Befehls echo “Test” ausgeben
type echo
Informationen zur Programmdatei von echo

Navigation

Befehl Beschreibung
cd /home/
zum Pfad /home/ navigieren (change directory)
pwd
aktuelles Arbeitsverzeichnis ausgeben (print working directory)
cd
zum Heimatverzeichnis (Standardmäßig /home/benutzername/ wechseln
cd -
zum letzen Verzeichnis wechseln
pushd .
aktuellen Pfad zwischenspeichern
popd
zum zwischengespeicherten Pfad wechseln
ls
Verzeichnisinhalt vom aktuellen Verzeichnis ausgeben

ls /verzeichnis/

gibt den Inhalt von /verzeichnis/ aus

ls -l
Verzeichnisinhalt vom aktuellen Verzeichnis als Liste mit Dateiinformationen ausgeben.
Weitere Parameter für ls
-a
auch Versteckte Dateien anzeigen
-h
Dateigrößen in lesbare Werte umrechenen (kByte, MByte, …)
--color=auto
Ausgabe farbig darstellen
ls -lah --color=auto
alle hier aufgeführten Parameter kombiniert

Dateioperationen

Befehl Beschreibung
cp -rv * /ziel
kopiert alle Dateien, Ordner und Unterordner des aktuellen Verzeichnisrekursiv (-r) nach /ziel und gibt währenddessen den Status aus (-v)
mv datei /ziel/
verschiebt datei in den Ordner /ziel/
mv alt.txt neu.txt
ändert den Namen der Datei alt.txt in neu.txt
ln -s original.txt link.txt
erstellt eine Verknüpfung auf den relativen Pfad original.txt mit dem Namenlink.txt
ln -s /pfad/zu/original.txt link.txt
erstellt eine Verknüpfung auf den absoluten Pfad zu original.txt mit dem Namen link.txt
mkdir verzeichnis
erstellt den Ordner verzeichnis im aktuellen Ordner
rm datei
löscht datei
rm -r ordner/
löscht ordner/ mit allen enthaltenen Dateien / Ordnern

Dateibetrachtung

Befehl Beschreibung
cat datei.txt
Inhalt von datei.txt direkt ausgeben
more datei.txt
Datei Seitenweise ausgeben, Navigieren mit Pfeiltasten, Leertaste für nächste Seite.
less datei.txt
wie more, jedoch mehr Funktionen (siehe manpage: man less). q zum beenden
lspci | less
Ausgabe von lspci an less weiterleiten
tail datei.txt
Die letzten Zeilen von datei.txt ausgeben
tail -f datei.txt
Die letzten Zeilen von datei.txt ausgeben und auf Änderungen warten. Wird der Datei etwas hinzugefügt, wird es direkt ausgegeben. Beenden mit STRG + C. Nützlich vor allem für Logdateien
nano datei.txt
öffnet datei.txt in nano, ein einfaches Textbearbeitungsprogramm. Zum beenden STRG+X
vi datei.txt
öffnet datei.txt in vi, ein sehr umfangreiches Textbearbeitungsprogramm. Zum Beenden ESC q! ENTER. Unbedingt manpage vor dem benutzen lesen!
sort datei.txt
gibt datei.txt sortiert aus

Dateisuche

Befehl Beschreibung
locate palita
Suche nach Dateien / Ordnern mit palita im Dateinamen
find -iname palita
Suche nach Dateien & Ordnern im aktuellen Verzeichnis (und darunter) mit palitaim Namen, ignoriere Groß- / Kleinschreibung
find -type f ! -iname '*.jpg'
Suche nach Dateien, die nicht mit .jpg enden
find -type f ! -perm -444
Suche nach Dateien, die nicht von allen Benutzern lesbar sind
grep "palita" * --color
Suche nach dem Vorkommen des Wortes palita im aktuellen Verzeichnis mit farbiger Hervorhebung
grep -i -C 2 "palita" datei.txt
Suche nach dem Vorkommen von palita in datei.txt, ignoriere Groß- / Kleinschreibung und gebe jeweils 2 Zeilen vor und nach dem vorkommen aus
grep -i -v "palita" datei.txt
Gebe alle Zeilen aus, in denen palita nicht vorkommt

Archivierung / ZIP

Befehl Beschreibung
tar cf archiv.tar ordner/
ordner im aktuellen Verzeichnis in die Datei archiv.tar packen
tar xf archiv.tar
archiv.tar entpacken
Weitere Parameter für tar
tar cfz a.tar.gz o/
Archiv a.tar.gz aus Ordner o/ mit gzip komprimieren
tar cfj a.tar.bz o/
Archiv a.tar.bz aus Ordner o/ mit bzip komprimieren
Parameter-Infox = extract (Entpacken), c = create (Erstellen), f = file (Datei zum Packen / Entpacken als erster Parameter), v = verbose (Status während dem (Ent)Packen)
Befehl Beschreibung
zip archiv.zip *
Alle Dateien & Ordner im aktuellen Verzeichnis in archiv.zip speichern
unzip archiv.zip
archiv.zip entpacken

Backup & Synchronisation (rsync)

RSync ist ein mächtiges Tool um Verzeichnisse zu Sichern. Dies eignet sich für Backups, geteilte Ordner über mehrere Rechner, usw. RSync sucht nach Unterschieden von der Quelle zum Ziel und kopiert veränderte und neue Dateien zum Ziel. Mit verschiedenen Parametern können auch nicht mehr vorhandene Dateien der Quelle im Ziel gelöscht werden, um immer zwei identische Verzeichnisse zu haben.

RSync eignet sich hauptsächlich, wenn es eine Quelle und ein Ziel gibt. Wenn zwei Ordner parallel Verändert werden und Synchronisiert werden sollen, sollten Programme wie Unison verwendet werden.

Befehl Beschreibung
rsync -aP --delete --stats /quelle /ziel
Sichert den Ordner /quelle nach /ziel. Gab es vorher bereits eine Sicherung, werden in /quelle nicht mehr vorhandene Dateien in/ziel gelöscht (–delete). Während dem Kopieren wird der Fortschritt angezeigt (-P’). Nach dem Kopieren wird eine Statistik ausgegeben (–stats). Es werden die Standardeinstellungen zum Sichern verwendet (-a).
rsync -aze ssh /quelle benutzer@rechner.de:/ziel
Sichert den Ordner /quelle nach ziel auf den entfernten Rechner mit dem Hostnamen rechner.de in den Ordner /ziel über SSH. Die Dateien werden komprimiert übertragen (-z).

SSH / Tunneling

SSH steht für Secure Shell und meint ein Protokoll und dazugehörige Programme, um sich über das Netzwerk auf einem Sicheren Kanal auf der Konsole eines anderen Rechners zu verbinden. Mit SSH können außerdem Sichere Tunnel für andere Protokolle erstellt werden.

Befehl Beschreibung
ssh hostname
verbindet zur Konsole des Rechners hostname (alternativ kann auch die IP-Adresse angegeben werden)
ssh user@hostname
verbindet sich als Benutzer user
ssh -L 90:localhost:80 hostname
leitet Port 80 von Rechner hostname auf den lokalen Port 90′weiter. In diesem Beispiel wird der Webserver (Port 80) von hostname lokal über Port 90 erreichbar (http://localhost:90). Alle Daten werden dabei verschlüsselt übertragen
ssh -R 5901:localhost:5900 hostname
Leitet den Lokalen Port 5900 (VNC) über einen sicheren SSH-Kanal auf den Rechner hostname weiter. hostname kann jetzt eine verschlüsselte VNC-Verbindung auf den lokalen Rechner über seinen Port 5901 herstellen. Dies ist auch sinnvoll, wenn Port 5900 durch eine Firewall gesperrt wird, der Datenverkehr läuft bei einem Tunnel immer über den SSH-Port 22!
scp lokal.txt benutzer@hostname:/home/kopie.txt
Kopiert die lokale Datei lokal.txt auf den entfernten Rechnerhostname in das Verzeichnis /home/ unter dem Namen kopie.txt.
scp benutzer@hostname:/home/kopie.txt .
Kopiert die entfernte Datei /home/kopie.txt von hostname auf den Lokalen Rechner ins aktuelle Verzeichnis

Datenanalyse, Speicher & Prozesse

Befehl Beschreibung
wc -l datei.txt
Anzahl der Zeilen von datei.txt ausgeben. Andere Zählweisen: -w: Wörter zählen, -m: Buchstaben zählen
lsattr
Dateiattribute auflisten
diff datei1 datei2
Unterschiede zwischen 2 Dateien anzeigen
df -h
Festplattenspeicher Analysieren (-h = human readable / In größtmögliche Einheit umrechnen)
du -h
Dateigrößen (disk usage) des aktuellen Verzeichnis und Dateien anzeigen (-human readable)
du -hs
Größe des aktuellen Ordners inkl. Unterordner
free -m
Speicherauslastung in Megabyte ausgeben
file datei.txt
Dateityp von datei.txt ermitteln
md5sum datei.txt
Prüfsumme (MD5) von datei.txt ausgeben
lsof
geöffnete Dateien anzeigen
top
Prozessviewer, mit q beenden
ps aux
alle Prozesse auflisten
who
eingeloggte Benutzer auflisten

Netzwerk

Befehl Beschreibung
ifconfig
Netzwerkkonfiguration anzeigen
ifconfig eth0
Infos zur ersten Netzwerkkarte (eth0) anzeigen
netstat
Alle Netzwerkverbindungen anzeigen
netstat -tup
Aktive Internetverbindungen ausschließlich Server anzeigen
netstat -tupl
Aktive Serververbindungen ausgeben
iptraf
Programm zur Datenverkehrsanalyse (nicht immer installiert!)
host palita.net
Informationen über Hostname / IP von palita.net
traceroute palita.net
Weg zu palita.net verfolgen
ping -c 5 palita.net
palita.net 5 mal ein Ping senden, um zu sehen, ob der Rechner erreichbar ist und wie lange er für eine Antwort benötigt (manche Server geben trotz Erreichbarkeit aus Sicherheitsgründen keine Antwort)
hostname
eigenen Hostnamen ausgeben
nslookup palita.net
Nameserver-Infos zu palita.net ausgeben
dig @nameserverxy.com palita.net
Nameserver-Infos zu palita.net über den DNS auf namserverxy.com ausgeben
ip addr show
Informationen zu Netzwerkkarten und zugehörigen Adressen ausgeben

Dateidownload (wget)

Befehl Beschreibung
wget http://palita.net/empty.txt
Datei empty.txt von palita.net herunterladen und im aktuellen Verzeichnis abspeichern
wget -c http://palita.net/empty.txt
Vorher abgebrochenen Download fortsetzen (-continue)

Windows Netzwerke (samba)

Befehl Beschreibung
smbtree
SMB Netzwerk-Scanner – listet Windows-Freigaben / Arbeitsgruppen / Domains auf
findsmb
findet Rechner, die Windowsfreigaben bereitstellen
smbclient -L hostname
listet alle verfügbaren Freigaben von hostnameauf
mount -t smbfs -o fmask=666,guest //hostname/share /mnt/share
bindet die Freigabe share im lokalen Rechner als Laufwerk unter /mnt/share ein

Textmanipulation

Befehl Beschreibung
sed 's/string1/string2/g' datei.txt
ersetzt string1 mit string2 in datei.txt
sed '/ *#/d; /^ *$/d' datei.txt
entfernt Kommentare, die mit # beginnen und Leerzeilen aus datei.txt
tr '[:lower:]' '[:upper:]' < datei.txt
Gibt datei.txt in Großbuchstaben aus

Datum / Zeit

Befehl Beschreibung
cal -3
Kalender mit 3 Monaten ausgeben (letzter, aktueller und nächster Monat)
cal 9 1752
Kalender vom September 1752 anzeigen
date
aktuelles Datum + Uhrzeit ausgeben
uptime
Information über die Laufzeit des Systems

Paketverwaltung

Viele Linux-Distributionen verwenden Paketverwaltungsprogramme, um Software auf dem System zu installieren, aktualisieren und löschen. Je nach Distribution gibt es verschiedene Programme, die bekanntesten sinddpkg und rpm. Für dpkg kann apt-get, für rpm kann yum als erweitertes, einfaches Installationstool verwendet werden.

dpkg / apt-get

Enthalten in Debian-Distribitionen (Debian, (X/K/Edu)Ubuntu, …)

Befehl Beschreibung
apt-get install firefox
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System
apt-get update
aktualisiert die Paketliste
apt-get upgrade
aktualisiert alle installierten Programme
apt-get dist-upgrade
aktualisiert alle installierten Programme, Kernel-Updates, Distributions-Updates, …
apt-get remove firefox
deinstalliert firefox
apt-get purge firefox
deinstalliert firefox und all seine Konfigurationsdateien
apt-get autoremove
deinstalliert nicht mehr benötigte software / bibliotheken

rpm / yum

Enthalten in Red-Hat ähnlichen Distributionen (Fedora, CentOS, RedHat, …)

Befehl Beschreibung
yum install firefox
installiert firefox und alle dazu benötigten Zusatzpakte / Bibliotheken auf dem System
yum update
überprüft, ob neue Pakete verfügbar sind und aktualisiert sie auf wunsch
yum info firefox
gibt Informationen über das Paket firefox aus
yum erase firefox
deinstalliert firefox
yum search firefox
sucht nach Paketen, die firefox im Namen oder in der Beschreibung enthalten
yum help
gibt mögliche Befehle aus
yum help install
gibt mögliche Parameter für install aus

Anwendungsbeispiele

Hier einige Beispiele von Befehlen und Kombinationen, die gelegentlich hilfreich sein können.

  1. for i in *.JPG; do mv "$i" "${i/.JPG}".jpg; done # Benennt alle Dateien, die mit .JPG enden in .jpg um
  2. >datei.txt # Leert den Inhalt von datei.txt
  3. rename 's/\s+/_/g' * # Leerzeichen mit _ ersetzen
  4. rm bild{6..100}.jpg # Löscht bild6.jpg, bild7.jpg, ... bis bild100.jpg
  5. mail -s "file" deine@mail.tld < file.txt # Sendet eine Email an dich mit dem Inhalt von file.txt
  6. tail -f /var/log/mail.log | grep -i --color error # verfolgt Fehlermeldeungen in mail.log
Tagged with: ,
Posted in Tutorials

Mediawiki Tweaks

Leserechte nur für registrierte Benutzer

Es gibt eine Möglichkeit, Mediawiki so zu konfigurieren, dass nur registrierte Benutzer leserechte haben. Diese Methode funktioniert zwar, dennoch sollte man sich für interne Zwecke überlegen, ob nicht eine andere Wiki-Software besser geeignet sind, da die Benutzer- und Gruppenorganisation von Mediawiki sehr rudimentär gehalten ist.

Zum Ausschalten der Zugriffsrechte für alle Lese- und Schreibvorgänge aller Seiten und Dateien wird folgendes an die LocalSettings.php angefügt:

# Lesen für anonyme Benutzer verbieten
$wgGroupPermissions['*']['read'] = false;
# Folgende Seiten dennoch erlauben
$wgWhitelistRead =  array ("Special:Userlogin");
# Weitere Seiten mit Kommata anfügen,
# z.B. $wgWhitelistRead = array ("Special:Userlogin", "Hauptseite", "XYZ");

Die Seite Special:Userlogin sollte in der Whitelist bleiben, da ansonsten der Login ebenfalls verboten wird und man somit auch selbst keine Seiten lesen kann.

Wichtig: Da hier nur die Leserechte angepasst werden, können sich trotzdem Benutzer registrieren und somit ebenfalls Leserechte erlangen. Zum Deaktivieren von Benutzerregistrierungen siehe “Registrierung deaktivieren”.

Schreibrechte nur für registrierte Benutzer

Um das Editieren und Erstellen von Artikeln nur für registrierte Benutzer zuzulassen einfach folgende Zeilen ans Ende der LocalSettings.php einfügen:

# Anonymes Bearbeiten deaktivieren
$wgGroupPermissions['*']['edit'] = false;

Registrierung deaktivieren

Die Benutzerregistrierung kann deaktiviert werden. Neue Benutzerkonten können aber weiterhin von einem Admin angelegt werden. Zum Deaktivieren der Registrierung folgenden Code ans Ende der LocalSettings.php einfügen:

# Benutzerregistrierung deaktivieren
$wgGroupPermissions['*']['createaccount'] = false;

Ein Administrator kann auf der Spezialseite “Anmelden” ein Neues Benutzerkonto anlegen. Dazu muss der Admin eingeloggt sein, Änderungen am eigenen Account werden dabei natürlich nicht vorgenommen.

IP-Adressen anonymer Benutzer nicht speichern

Standardmäßig verwendet Mediawiki die IP-Adresse eines nicht eingeloggten Benutzers für die Artikelversionen. Diese sind öffentlich einsehbar, sowohl unter der Spezialseite Letzte Änderungen, als auch unter der Versionen / Autoren-Seite jeglicher Seiten. Möchte man die Speicherung der IP-Adressen deaktivieren, muss man die Datei includes/ProxyTools.php bearbeiten.

In dieser Datei sucht man nach dem Code $ip = $ipchain[0]; und fügt $ipchain = array(‘0.0.0.0′) vor dieser Zeile ein. Der Code sollte dann folgendermaßen aussehen:

$ipchain = array('0.0.0.0');
$ip = $ipchain[0];

Somit wird jede IP-Adresse auf 0.0.0.0 gesetzt.

Tagged with: ,
Posted in Tutorials

SVN-Hooks: Automatischer Checkout nach Commits

Projekte mit Subversion zu verwalten macht für größere Projekte durchaus Sinn. In Kombination mit trac erhält man sogar noch ein sehr schickes Werkzeug zum Erstellen und Verwalten von Tickets, Milestones, Tags und Branches und noch ein Wiki dazu. Doch wenn mehrere Entwickler an einem Projekt arbeiten, das in einer einheitlichen Umgebung getestet werden soll, muss ständig nach jedem Commit auf der Testumgebung ein Checkout gemacht werden. Das ist zwar nicht viel Aufwand, aber es kann automatisiert werden. Besonders Webprojekte auf Basis dynamischer Skriptsprachen können davon profitieren, wie etwa ein PHP-Projekt, dass auf dem SVN-Server-eigenen Apache live getestet werden soll.

SVN bietet dazu sogenannte Hooks, die bei verschiedenen Events Skripts ausführen. Templates für Hooks befinden sich bereits im SVN-Repository unter /hooks/ – in diesem Beispiel wird ein Checkout in ein definiertes Verzeichnis ausgeführt, sobald ein Commit / Update erfolgt ist.

Dazu sind folgende Schritte notwendig:

  1. Template “post-commit.tpl” in “post-commit” umbenennen
    cd SVNREPO/hooks/
    mv post-commit.tpl post-commit
  2. post-commit So anpassen, dass das “SVNREPO/hooks/bin/autocheckout.sh” Skript ausgeführt wird
    [...]
    REPOS="$1"
    REV="$2"#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
    #log-commit.py --repository "$REPOS" --revision "$REV"
    ${REPOS}/hooks/bin/autocheckout.sh "$REPOS" "$REV" trunk/ /WEBROOT/MEINPROJEKT

    Die im Template vorhandenen zwei Befehlsaufrufe werden auskommentiert.

  3. autocheckout.sh erstellen
    mkdir bin/
    wget http://palita.net/wp-content/uploads/2011/08/autocheckout.txt bin/autocheckout.sh

    Anmerkung: Dieses Skript wurde übernommen von http://larve.net/people/hugo/2007/05/svn-auto-look-and-checkout

  4. autocheckout.sh und post-commit anpassen
    chmod a+x post-commit bin/autocheckout.sh
  5. Initiales Ausführen & Testen
    sudo -u apache env - ./post-commit WEBROOT/MEINPROJEKT 234

    (234 durch die aktuelle Revision ersetzen, apache durch den Benutzer ersetzen, der Schreibzugriff auf das Webroot hat.)

  6. Commit & Test!

Unter Plesk 9 funktioniert es einwandfrei, jedoch muss dafür eventuell das Webverzeichnis mit Schreibrechten für den Benutzer “apache” versehen werden.

Weblinks:

Tagged with: , ,
Posted in Tutorials

Software-Alternativen

Legende

Zu jedem Programm steht in Klammern, welche Betriebssysteme unterstützt werden. Dabei steht W für Windows, M für MacOS X und L für Linux. So ist z.B. “Programm (W/L)” sowohl für Windows, als auch für Linux verfügbar.

Internet / Netzwerk

Programme, die die Kommunikation über Internet / Netzwerke ermöglichen

Browser

Alternativen zu Microsoft Internet Explorer

  • Firefox (W/L/M) – Schneller, populärer OpenSource-Browser mit Erweiterungsmöglichkeit via Addons.
  • Chrome (W/L/M) – Schneller Browser auf Basis der Gecko-Engine (wie Firefox), mit Cocoa-Frontend
  • Opera (W/L/M) – Kostenlose Internet-Suite (Browser / Mail/ …), proprietär

Chat

Alternativen zu ICQ, Skype, mIRC und anderen IM-Programmen

  • Pidgin (W/L) – Einfaches zu bedienendes Multiprotokoll-Chatprogramm für ICQ, AIM, MSN, YIM, IRC, Jabber, GoogleTalk uvm.
  • Adium (M) – Ähnlich wie Pidgin
  • QIP(W) – ICQ-Alternative, Freeware
  • XChat (W/L/M) – IRC-Client

Email

Alternativen zu Microsoft Outlook (-Express)

  • Thunderbird (W/L/M) – Komfortabler Email-Client mit GPG-Unterstützung (nur mit Plugin)
  • Evolution(W/L/M) – Alternative zu Microsoft Office Outlook, unterstützt MS-Exchange

File-Sharing

Alternativen zu gängigen Torrent- und anderen Filesharing-Programmen

  • Vuze (W/L/M) – Ehemals Azureus, OpenSource BitTorrent-Client
  • JDownloader(W/L/M) – Auf Java basierender Downloadmanager für 1-Click-Hoster (Rapidshare, Uploaded.to, …)
  • Deluge- OpenSource BitTorrent-Client für Linux, Windows und Mac OS X
  • Transmission- Schlanker OpenSource BitTorrent-Client für Linux und Mac OS X

Editoren

Alternativen zu Microsoft Frontpage und Adobe Dreamweaver

  • KompoZer(W/L/M) – Einfacher WYSIWYG-Webseiten-Editor mit enormem Funktionsumfang

Alternativer zu Notepad

  • Notepad ++  Wesentlich umfangreicher als Windows standard Notepad

Online-Banking

  • Hibiscus(W/L/M) – Auf Java basierender HBCI-Client

Multimedia

Programme, die Multimediainhalte wiedergeben oder bearbeiten können

Audiobearbeitung

Alternativen zu Ableton Live und anderen (Mehrspur-)Editoren

  • Audacity (W/L/M) – OpenSource Mehrspureditor mit Effekten
  • Ardour (W/L/M) – Komplette Audiobearbeitungs-Suite, gute Alternative zu Live u.Ä.

Audioplayer

Alternativen zu WinampWindows Media Player und iTunes

  • AmaroK (W/L/M) – Musikplayer, auch geeignet für große Musikdatenbanken
  • VLC (W/L/M) – Player für sehr viele Formate (Audio / Video), unterstützt die meisten Codecs ohne zusätzliche installation

Brennprogramme

Alternativen zu Nero

Grafikbearbeitung

Alternativen zu Adobe PhotoshopIllustrator und Konsorten

  • Gimp (W/L/M) – Grafikbearbeitung, unterstützt Vektoren, kann Adobe-Formate lesen. Sehr gute Alternative zu Photoshop!
  • Inkscape- Hochwertiges Vektorprogramm

3D-Modelling

Alternativen zu Cinema4D u.Ä.

  • Blender (W/L/M) – Sehr umfangreiche Software für 3D Modelierung, Animation, Rendern, interaktives Erstellen und Wiedergabe

VideoPlayer

Alternativen zu Windows Media Player und QuickTime

  • VLC (W/L/M) – Player für seher viele Formate (Audio / Video), unterstützt die meisten Codecs ohne zusätzliche installation
  • MPlayer (W/L/M) – Sehr guter Player, unterstützt sehr viele Formate sowie DVB

Archivierung / Entpacker

Alternativen zu WinZIPWinRAR und Stuff It

  • The Unarchiver (M) – Entpacker für sehr viele Formate (inkl. Zip, Tar, GZip, Rar, 7-zip, …)
  • 7Zip (W) – Archivprogramm (und -Format) mit Unterstützung für sehr viele Formate

VideoBearbeitung

  • Avidemux (W/L/M) – Freie Videobearbeitungssoftware für Linux, Windows und Mac OS X

Sonstige

  • Solfege(W/L/M) – Gehör- und Gesangstrainer
  • TuxGuitar(W/L/M) – Gitarren Tabulatur-Programm, kann GuitarPro-Dateien öffnen
  • XBMC(W/L/M) – Sehr komfortables, schickes MediaCenter-Programm mit sehr vielen Funktionen. Läuft auch auf Microsoft’s XBox
  • MythTV (L/M) – Sehr umfangreiches TV-Mediacenter mit unterstützung für DVB-S und DVB-T, Aufnahmefunktion und Program-Guide (EPG)
  • Eraser (W) um Dateien “sicher zu löschen” (unter Linux gibt es hierfür “shred” und “wipe”)

Büro

Software zur Produktivität im Büro

Text / Tabelle / Präsentation

Alternativen zu Microsoft Office

  • OpenOffice (W/L/M) – Umfangreiche Office-Suite, inkl. Textverarbeitung (vgl. MS Word), Tabellenkalkulation (vgl. MS Excel), Präsentation (vgl. MS Powerpoint) und weiteren Tools. Kann Microsoft-Office-Dateien lesen und schreiben!

Wörterbücher

  • StarDict (W/L) ist ein offline Wörterbuch-Programm für das viele freie Wörterbücher zur Verfügung stehen.

Desktop Publishing

Alternativen zu Quark XpressInDesign und Pagemaker

  • Scribus (W/L/M) – Professionelle Layout-Erstellung

Programmierung

Alternativen zu komerziellen Editoren und Entwickungsumgebungen

  • Eclipse (W/L/M) – Sehr komfortable Entwicklungsumgebung mit Erweiterbarkeit durch Plugins. Unterstützt SVN. Editoren für Java*, C(#/++), PHP, Python, HTML, XML, UML und weitere. Auch optimierte Ausführungen für PHP, C und weitere erhältlich.
  • Gambas (L) – Alternative zu VisualBasic, sehr VB-Ähnliche Programmiersprache und IDE
Tagged with: , , , ,
Posted in Tutorials

Mac OS X Terminal-Tipps

Da Apple’s Mac OS X auf Unix aufbaut, gibt es die gängigsten Linux-Kommandos auch unter OS X. Daneben gibt es noch einige zusätzliche Befehle und Möglichkeiten, die hier aufgeführt werden.

Um das Terminal unter OS X zu starten öffnet man den Programmordner und findet Terminal.app im Unterordner “Dienstprogramme”.

Zusammenspiel mit Finder / System

open .
open /pfad

1. Öffnet den aktuellen Ordner im Finder, 2. öffnet /pfad im Finder (z.B. /etc, /Applications, /System usw.)

Zwischenablage

pbcopy
pbpaste

1. Sendet STDOUT an die Zwischenablage, 2. Gibt den Inhalt der Zwischenablage aus

Verwendung z.B. mit Pipes:

pwd | pbcopy
cd `pbpaste`

1. Leitet die Ausgabe von pwd (print working directory – aktuelles Verzeichnis ausgeben) an pbcopy weiter
2. Wechselt das Verzeichnis zum Inhalt der Zwischenablage

Dateitracking

sudo opensnoop
sudo opensnoop -f /etc/passwd

1. Zeigt alle angefassten Dateien an und von wem sie verwendet wurden
2. Lauscht auf eine einzelne Datei, z.B. /etc/passwd

Spotlight Dateisuche

mdfind palita
mdfind -name palita
mdfind -name palita -live

1. Sucht nach Dateien, die “palita” beinhalten, 2. sucht nach Dateien, die “palita” im Namen enthalten, 3. wartet auf neue Ergebnisse

Quicklook

qlmanage -p Documents/Stapel*.pdf

1. Zeigt die Schnellvorschau für Documents/Stapel*.pdf an

Sprachausgabe

say Hello World
say -o hi.aiff Hello World
say -f hello_world.txt

1. Leitet “Hello World” an die Sprachausgabe weiter (wird direkt ausgegeben), 2. Leitet Hello World an die Sprachausgabe weiter, die eine Sounddatei davon erstellt, 3. Holt sich den Text von Dateien

Laufwerke / Images

diskutil

1. Tool zur Laufwerksverwaltung. Ohne Parameter werden mögliche Funktionen mit Beschreiung ausgegeben

Tagged with: , ,
Posted in Tutorials

Emails mit procmail vorfiltern

Es hat mich immer genervt, dass alle Emails, die von einem Server ausgehen (z.B. Fail2Ban, logwatch etc.) immer in meinem Postfach landen und als ungelesene Emails irgendwann mein Handy zum Bimmeln bringen, dem ich keine Regeln beibringen kann. Die Lösung ist denkbar einfach, wenn sie mir auch erst heute in den Sinn kam: einfachprocmail die Arbeit machen lassen, nicht die Mailclients.

Procmail ist ein Mailprozessor, der zum serverseitigen Filtern von Emails eingesetzt wird. Um einen Procmail-Filter bei einer QMail-Umgebung (sowohl procmail als auch qmail sind bei Plesk standardmäßig integriert) aufzusetzen, bewegt man sich erst mal ins Verzeichnis des Mailnamen (funktioniert unter einer Plesk-Umgebung in der Regel auch mit Postfix anstelle von QMail).

Für email@domain.com etwa
cd /var/qmail/mailnames/domain.com/email

In diesem Verzeichnis mit dem bevorzugten Editor (vi / nano / …) eine Datei .procmailrc erstellen, und folgenden Inhalt zur Filterung von Server-Mails erstellen:
# .procmailrc
MAILDIR=/var/qmail/mailnames/domain.com/email/Maildir
DEFAULT=${MAILDIR}

# Filter Servermails
:0:
* ^From.*@NERVIGERSERVER.COM
.VERZEICHNIS/new

Dabei NERVIGERSERVER.COM durch die Domain ersetzen, von dem der Server seine Mails sendet, und VERZEICHNISdurch das IMAP-Verzeichnis, in das die Nachricht verschoben werden soll. /new sollte dabei stehen bleiben.

Jetzt die Datei speichern, und die Datei .qmail im selben Verzeichnis editieren.

Die etwa so aussehende Datei
| true
| /usr/bin/deliverquota ./Maildir

wird jetzt so abgeändert, dass neue Emails nicht mehr an Deliverquota sondern an Procmail gesendet werden. Der Veränderte Inhalt der Datei dazu wäre etwa

| true
#| /usr/bin/deliverquota ./Maildir
| preline /usr/bin/procmail -m .procmailrc

Mehr muss nicht unternommen werden. Man sollte natürlich erst mal Testen ob es funktioniert, bevor man sich darauf verlässt, bevor keine Mails mehr ankommen, unter CentOS 5 und Plesk9 sollte es nach dieser Anleitung gar keine Probleme geben. Bei anderen Systemen sind die Pfade eventuell abweichend.

Procmail kann natürlich noch viel mehr, die manpage von procmailex(5) verrät eigentlich alles.

Manpage online: http://www.gsp.com/cgi-bin/man.cgi?section=5&topic=procmailex

Tagged with: , ,
Posted in Tutorials

Mail-Aliase in Apple’s Mail.app

Mail.app ist der mitgelieferte Mailclient von Apple’s OS X. Wenn man – aus welchem Grund auch immer – mehrere Email-Adressen hat, die aber alle für das gleiche Postfach gelten (also Aliase), muss man nicht für jede Adresse ein weiteres Konto anlegen. Eine einfachere Methode wird hier beschrieben.

Zunächst öffnet man die Einstellungen von Mail.app, am einfachsten mit dem in fast allen Mac-Programm gültigen Tastaturbefehl CMD + ,

Unter dem Reiter “Accounts” wählt man jetzt den Account aus, für den die Aliase angelegt werden soll und gibt einfach bei “E-Mail-Adresse” so viele Adressen an wie man möchte, alle getrennt mit einem Komma. Beim Verfassen einer neuen Nachricht kann man jetzt auswählen, von welchem Alias gesendet werden soll.

Tagged with: , ,
Posted in Tutorials