Archiv ‘Linux’

Dienstag, 16. Juni 2009

postfix unter Mac OS X 10.4 aktivieren (inklusive SMTP-Relay)

Obwohl es ein kostenpflichtiges GUI zur Konfiguration des postfix-Mailservers gibt, machen wir als Geeks die Sache lieber von Hand auf der Kommandozeile.

Da Apple postfix bereits mit der Standardinstallation von Mac OS X mitliefert, den Daemon aber nicht aktiviert, sind die Arbeiten relativ trivial. Wer nicht das erste Mal mit dem CLI in Berührung kommt und sich mit sudo und vim auskennt, sollte den SMTP-Server innert 5-10 Minuten am Laufen haben.

Wichtig ist, dass hier nicht der lokale SMTP-Server aktiviert, sondern auch gleich ein relayhost eingerichtet wird. In meinem Fall ist das der SMTP-Server meines ISPs Cablecom. Damit ist es möglich, Mails auch tatsächlich in die weite Welt hinauszusenden. Vorausgesetzt, man verfügt über einen SMTP-Account bei seinem ISP.

/etc/hostconfig

...
MAILSERVER=-YES-
...

/etc/postfix/main.cf

...
myhostname = mad4you.homeip.net
mydomain = mad4you.homeip.net
myorigin = $myhostname
...
inet_interfaces = localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks_style = host
mynetworks = 127.0.0.0/8
...
relayhost = smtp.hispeed.ch
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
...

/etc/postfix/sasl_passwd

smtp.hispeed.ch user@hispeed.ch:geheim

Sicherheitsvorkehrungen:

$ chmod 600 /etc/postfix/sasl_passwd
# chown root:root /etc/postfix/sasl_passwd

Anschliessend muss die Passwort-Datei gehasht werden, da die Angaben sonst nicht von postfix interpretiert werden:

# postmap /etc/postfix/sasl_passwd

Neustart des Daemons

# sudo launchctl start org.postfix.master

Test

$ echo `date` | mail -s "Dies ist ein Test-Betreff von der Kommandoziele" spam@eMeidi.com

Ein Blick in /var/log/mail.log zeigt umgehend, ob was rausgegangen ist oder nicht:

$ tail -f /var/log/mail.log
...
Jun 16 15:03:00 BETA postfix/master[1314]: daemon started -- version 2.1.5
Jun 16 15:03:02 BETA postfix/pickup[1315]: 058FE1A17BFE: uid=501 from=
Jun 16 15:03:02 BETA postfix/cleanup[1316]: 058FE1A17BFE: message-id=<20090616130300.058FE1A17BFE@mad4you.homeip.net>
Jun 16 15:03:02 BETA postfix/qmgr[1319]: 058FE1A17BFE: from=, size=342, nrcpt=1 (queue active)
Jun 16 15:03:04 BETA postfix/smtp[1320]: 058FE1A17BFE: to=, relay=smtp.hispeed.ch[213.46.255.24], delay=4, status=sent (250 2.0.0 4d311c07P0MzJ8L01d33xm message accepted for delivery)
Jun 16 15:03:04 BETA postfix/qmgr[1319]: 058FE1A17BFE: removed
Jun 16 15:04:00 BETA postfix/master[1314]: master exit time has arrived
...

Quellen

Tags: , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 26. Mai 2009

Unser vetterliwirtschaftliche Bundesverwaltung schafft es auf reddit!

Red Hat Sues Switzerland Over Microsoft Monopoly – Linux vendor Red Hat, and 17 other vendors, have protested a Swiss government contract given to Microsoft without any public bidding

Quelle: Red Hat Sues Switzerland Over Microsoft Monopoly – Linux vendor Red Hat, and 17 other vendors, have protested a Swiss government contract given to Microsoft without any public bidding : technology

Ein grosses Bravo und Dankeschön an Red Hat, um unser Seldwyla in aller Welt bekannt zu machen. Ein weiteres Beispiel dafür, dass unsere Bundesverwaltung von Gehilfen unzähliger Microsoft-, Oracle- und SAP-Beratern durchsetzt ist.

Tags: , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. Mai 2009

cacti-Verzeichnis zügeln

In den letzten Tagen habe ich die Verzeichnisstruktur auf meinem lokalen Web-Server angepasst. Unter anderem war von dieser Säuberungsaktion auch meine cacti-Installation betroffen.

Nachdem ich mich einige Stunden über nicht aktualisierte Graphen geärgert hatte, fand ich zu später Stunde dann endlich die Lösung des Problems:

UPDATE poller_item SET rrd_path = REPLACE(rrd_path,'/var/www/cacti/','/var/www/system/cacti/')
UPDATE poller_item SET arg1 = REPLACE(arg1,'/var/www/cacti/','/var/www/system/cacti/')

Offensichtlich ist die Software nicht derart intelligent programmiert, dass Verzeichniswechsel reibungslos über die Bühne gehen. Wieso Script-Pfade absolut und nicht wie beispielsweise die RRAs relativ in der Datenbank abgelegt werden, ist mir ein Rätsel.

Schriften

Als nützlicher Nebeneffekt konnte ich in diesem Anlauf in der Administrationsoberfläche auch endlich anständige Schriften definieren – vorher wurden Graphen in einer wüsten Serifenschrift ausgegeben. In Debian ist die wohl beste Schrift für RRD-Graphen die DejaVu Sans, welche unter folgendem Pfad liegt:

/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf

Tags:
Labels: IT, Linux, Web

Keine Kommentare | neuen Kommentar verfassen

Montag, 6. April 2009

syslog von Ballast befreien

Die /var/log/syslog füllt sich unter Debian Linux sehr schnell mit viel nichtssagendem Ballast, weshalb ich mich heute dazu entschied, mal ein wenig aufzuräumen. Die Meldungen von cron (läuft bei mir jede Minute mit irgendwelchen Befehlen), dhcpd (im Netzwerk gibt es ein Gerät, dass jede Sekunde einen DHCP-Request sendet) sowie snmpd (cacti frägt den Systemzustand in jeder Minute ab) sollten neu aus der /var/log/syslog in eigene Log-Dateien ausgelagert werden.

Folgende Anpassungen an /etc/syslog-ng/syslog-ng.conf taten den Trick.

Als erstes legt man neue Destinationen fest:

destination df_cron { file("/var/log/cron.log"); };
destination df_dhcpd { file("/var/log/dhcpd.log"); };
destination df_snmpd { file("/var/log/snmpd.log"); };

Anschliessend legt man vier neue Filter fest:

filter f_cron { facility(cron); };
filter f_dhcpd { program(dhcpd); };
filter f_snmpd { program(snmpd); };
filter f_noise { not filter(f_snmpd) and not filter(f_dhcpd) and not filter(f_cron); };

Schlussendlich baut man diese als Log-Anweisungen zusammen:

log {
        source(s_all);
        filter(f_syslog);
        filter(f_noise);
        destination(df_syslog);
};

log {
        source(s_all);
        filter(f_cron);
        destination(df_cron);
};

log {
        source(s_all);
        filter(f_dhcpd);
        destination(df_dhcpd);
};

log {
        source(s_all);
        filter(f_snmpd);
        destination(df_snmpd);
};

Nachdem man die Konfigurationsdatei gespeichert hat, startet man syslog-ng neu und erfreut sich über die Ruhe, die nun einkehrt:

# /etc/init.d/syslog-ng restart
$ tail -f /var/log/syslog

Nachtrag

Natürlich wollte ich mir noch ein Bild machen, wie die Situation vor diesen neuen Umleitungen aussah. Erschreckend:

# cat syslog | cut -d " " -f 6 | sort | cut -d "[" -f 1 | sort | uniq -c | sort -r -n
   2534 dhcpd:
   2215 /USR/SBIN/CRON
   1688 snmpd
    392 kernel:
     98 mt-daapd
     55 syslog-ng
     40 postfix/qmgr
     36 avahi-daemon
     31 smartd
     26 ovpn-server
     23 named
     21 postfix/smtp
     19 postfix/cleanup
     18 postfix/pickup
      9 mysqld
      8 apcupsd
      6 ntpdate
      6 /etc/mysql/debian-start
      4 /usr/sbin/cron
      4 postfix/tlsmgr
      3 arpwatch:
      2 postfix/master
      2 mysqld_safe
      1 shutdown
      1 postfix/local
      1 mdadm
      1 init:

Mein Gefühl hat sich bestätigt: Ich habe die richtigen „Übeltäter“ in eigene Dateien ausgelagert.

Tags:
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 5. April 2009

Digg für Kommandozeilen-Befehle

Eine Schatztruhe für all diejenigen Leute da draussen, die sich hin und wieder auf einer Linux-Kommandozeile bewegen:

Command-line-fu

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 4. April 2009

Bye bye, Openmoko

He said in his speech that the company had to delay the development of the new Smartphone GTA03 in favor of an other product. Later in a face to face interview he said that almost half of the people working for the company were leaving or had to leave.

Quelle: read this » Blog Archive » Interview Sean Moss-Pultz

Ich bin ein grosser Verfechter von Linux und sonstiger Open-Source-Software. Doch leider verwundert es mich kein bisschen, dass die Realisierung eines Open-Source-Mobiltelefons anscheinend vor grossen Schwierigkeiten steht. Als wäre das nicht abzusehen gewesen … Verschiedene Gründe tragen meiner Meinung nach dazu bei:

  • Hardware-Entwicklung verschlingt viel Geld. Linux konnte sich nur den heutigen Marktanteil ergattern, weil es auf die billig herzustellende und vielerorts vorhandene x86er-Plattform zurückgriff – gefördert, das muss man einfach anerkennen, durch den Erzrivalen Microsoft und sein Windows-Ökosystem. Wenn schon Firmen mit Millionenbudgets wie Samsung, LG, Nokia, Sony Ericsson, Motorola massive Probleme haben und deren R&D-Abteilungen gegenüber dem Platzhirschen mit Apfel-Logo äusserst blass aussehen, wie soll es dann ein Linux-Büdchen mit ein paar wenigen Almosen schaffen, „the next big thing“ zu veröffentlichen?
  • Im Schatten des iPhones. Wie soll man Entwickler wie auch Kunden für ein Gerät interessieren, dass sich zuerst aus dem gigantischen Schlagschatten des iPhones herausboxen muss?
  • Geek only = geek only. Von Geeks, für Geeks. Die einzigen Personen, die dieses Gerät mir gegenüber in den letzten Monaten erwähnt haben, sind bis auf die letzte Stammzelle OSS-Anhänger. In den Augen von auf den Boden gebliebenen Personen haftet solchen Leuten (leider) oftmals das Image eines Spinners an.
  • It’s the Interface, stupid! Schön und gut, wenn ich per SSH auf mein Mobiltelefon zugreifen kann. Doch was bringt’s? Für den Endbenutzer ist die möglichst einfache Bedienung des Gerätes das A&O. Leider bin ich immer noch der Meinung, dass Linux im Vergleich zu Apple und Microsoft massive Schwächen im graphischen Benutzerinterface hat. Das iPhone hat hier einen meilenweiten Vorsprung als alles andere auf dem Markt erhältliche. Multitouch hätte meiner Meinung nach nie von der Open-Source-Hardware-Community entwickelt werden können …

Tags: , , ,
Labels: Apple, Linux

2 Kommentare | neuen Kommentar verfassen

Sonntag, 15. März 2009

Batch convert color images for OCR

Vor langer, langer Zeit war ich in der Schweizerischen Nationalbibliothek und habe dort mit meiner Digitalkamera Seiten aus alten Büchern photographiert. Obwohl ich dies ohne Blitz tat, herrschte im Lesesaal alsbald helle Aufregung – denn ich hatte soeben gegen die Benutzungsordnung verstossen. Glücklicherweise musste ich die Bilddaten aber nicht von der Speicherkarte löschen, wurde aber freundlich und bestimmt gemahnt, das nie wieder zu tun …

Mittlerweile habe ich endlich Zeit gefunden, die Bilddaten zu sortieren und zu beschriften. Dummerweise war der Foto-Termin bereits derart lange her, dass ich schlicht vergessen hatte, aus welchem Buch ich digitale Kopien gemacht hatte. Mittlerweile ist es mir wieder in den Sinn gekommen:

main.bib

hauser1925

Geschichte der Hagelversicherung in der Schweiz
P. Hauser
 
 
 
(1925)

Doch gut, was bringen mir die Photographien, wenn ich diese nicht in einem schicken PDF-Dokument zusammenfasse und die Texterkennung darüber laufen lasse? Genau: Nichts.

Deshalb hiess es, die je ca. 3MB wiegenden farbenfrohen JPEGs in monochrome Bitmaps umzuwandeln. Nach einigem Googlen war ich mit Hilfe des ausführlichen Artikels ImageMagick v6 Examples — Color Quantization and Dithering im Stande, folgendes Shell-Script zu schreiben, welches mit ImageMagick die gewünschte Batch-Conversion durchführt:

#!/bin/sh

for i in *.jpg;
do
        echo "Converting $i"
        convert "$i" +dither -colors 2 -colorspace gray -normalize "$i-mono.gif"
        echo "Conversion finished"
done

exit 0

Anschliessend öffnete ich den Adobe Acrobat 7, wählte File > Create PDF… > From Multiple Files…, wählte die GIF-Dateien aus und liess mir ein PDF daraus erstellen.

Tags: , ,
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Montag, 23. Februar 2009

Mit Cacti SNMP-fähige Netzwerkdrucker abfragen

Auf der Arbeit verwende ich cacti nicht nur, um Kennwerte von Linux-, Mac OS X- und Windows-Servern abzufragen und zu speichern (Prozessorauslastung, Festplattenplatz etc.), sondern frage damit auch SNMP-fähige Drucker ab.

Meistens handelt es sich dabei um netzwerkfähige HP (Color) Laserjets, doch auch Drucker anderer Hersteller liefern per SNMP die drei grundlegenden Parameter Page Count und Page Output. Wenn man Glück hat, kann per SNMP sogar der Tonerstand graphisch ausgewertet werden.

Die dafür nötigen Templates habe ich aus verschiedenen Quellen zusammengestibitzt und veröffentliche diese in diesem Blog-Artikel als ZIP-Datei:

cacti-snmp-printer-templates.zip

Die Templates importiert man über die cacti-Administrationsoberfläche unter dem Menupunkt Import Templates. Anschliessend erfasst man die Hosts und weist diesen die Templates dann manuell zu, oder baut sich ein Host Template bestehend aus den drei Templates zusammen.

Tags: , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 20. Februar 2009

Pseudo-Arrays in MS-DOS Batch-Dateien

Natürlich gibt es so etwas auch in der Microsoft-Welt, ist aber bedeutend hässlicher als bei bash & Co:

FOR /F "tokens=1,2,3,4 delims=|" %%G IN ("eins|zwei|drei|vier") DO @echo Werte: %%G %%H %%I %%K

Wer die Werte nicht aus einem String, sondern aus einer Datei auslesen möchte, passt den Befehl leicht an:

FOR /F "tokens=1 delims=;" %%G IN (datei.txt) DO @echo Wert: %%G

Via: FOR /F

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 5. Januar 2009

snmpd 5.4 unter Debian geschwätzig machen

Obwohl ich hier bereits in verschiedensten Artikeln lusche Sicherheitsvorkehrungen angeprangert habe, halte ich es bei SNMP genau so: Hauptsache offen wie ein Scheuenentor. Das Protokoll ist derart kompliziert, dass ich beim Debugging nicht Zeit verlieren möchte.

Auf Servern, die ich mit cacti überwachen möchte, installiere ich normalerweise folgende snmpd.conf:

sysLocation Raum 1
sysContact Mario Aeby 
#
rocommunity public 192.168.0.1
#rocommunity public 192.168.0.0/24
#
includeAllDisks
#
proc
load

Auf einem Debian-System mit snmpd 5.4.1~dfsg-12 wollte obige Konfiguration aber nicht und spuckte drei Fehlermeldungen aus (zu finden in /var/log/daemon.log):

Jan  5 16:26:42 snmpd[13111]: /etc/snmp/snmpd.conf: line 7: Error: Blank line following includeAllDisks token.
Jan  5 16:26:42 snmpd[13111]: /etc/snmp/snmpd.conf: line 9: Error: Blank line following proc token.
Jan  5 16:26:42 snmpd[13111]: /etc/snmp/snmpd.conf: line 10: Error: Blank line following load token.

Die für snmpd 5.4 überarbeitete Version der Konfiguration sah deshalb folgendermassen aus:

sysLocation Raum 1
sysContact Mario Aeby 
#
rocommunity public 192.168.0.1
#rocommunity public 192.168.0.0/24
#
includeAllDisks 10%
#
load 1

Doch damit war nicht genug – snmpwalk wollte partout nur bei einem Testlauf von localhost Werte liefern.

Ein Blick in die Prozessliste machte schliesslich das Übel rasch erkennbar:

13491 ?        S      0:01 /usr/sbin/snmpd -Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1

127.0.0.1 wies snmpd an, nur auf dem lo-Interface zu lauschen.

Ich öffnete snmpds Ohren, indem ich die Datei /etc/default/snmpd anpasste und dort die Zeichenkette 127.0.0.1 entfernte.

(Falls jemand eine schönere Umgehungsmöglichkeit kennt, soll er diese als Kommentar posten. Danke!)

Tags:
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen