Kategorie: Betriebssysteme

Über sendmail ausgehende E-Mails an lokale Adresse umleiten

Manchmal (auf Entwicklungsumgebungen wohl immer)  ist es ganz praktisch, wenn keine E-Mails unabsichtlich ins Internet entschwinden. Vor allem, wenn man mit den Daten echter Kunden „jongliert“.
Damit man nicht immer daran denken muss, kann man sendmail so konfigurieren, dass eine lokale E-Mail Adresse als Smarthost verwendet wird und somit alle E-Mails in der lokalen Mailbox landen.

Und das geht so (gegebenenfalls muss sudo zum Einsatz kommen):

  1. # vim /etc/mail/sendmail.mc
  2. define(`SMART_HOST',`local:wklinger') am Anfang der Datei einfügen
  3. Konfiguration erzeugen: # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  4. sendmail neu starten: # /etc/init.d/sendmail restart

OSSEC / Warnung bei bestimmter Anzahl ausgehender Mails

Wie kann ich mit OSSEC die Anzahl ausgehender Mails überwachen und bei Erreichen einer bestimmten Anzahl pro Zeiteinheit einen Alert versenden?

In unserem Fall hatten wir qmail als MTA installiert. Die folgende Anleitung lässt sich aber auch auf andere Programme umlegen.

Zuerst brauchen wir einen qmail Decoder. Die lokalen Decoder habe ich im etc/local_decoder.xml der OSSEC Installation (/var/ossec) abgelegt.

Der qmail Decoder sieht in dem Fall so aus:

<decoder name="qmail-delivery">
  <program_name>qmail</program_name>
  <regex>\S+ starting delivery \S+: msg \S+ to remote (\S+)</regex>
  <order>user</order>
</decoder>

Wir fragen also mit einem regulären Ausdruck nach einem String, der dem Log Eintrag „starting delivery“ entspricht. So eine Zeile könnte z.B. so aussehen:

iTerm2 und tmux

Als vermeintlich bessere Alternative (dazu habe ich noch keine eigene Meinung) zu screen bietet sich tmux als Terminal Multiplexer an. Nachdem tmux seit dem letzten Beta Release von iTerm2 stark in darin integriert ist, werde ich mir das einmal näher ansehen.

Links:

Mails unter Windows mit PHP versenden

Manchmal hat man das Problem, dass man lokal unter Windows ein Mail mit PHP verschicken muss aber der Mailserver Authentfizierung erfordert. Die php.ini erlaubt aber nur den Host (Parameter „smtp“) und den Port (Parameter „smtp_port“) einzustellen, also was tun? Anstelle sich einen kompletten Mailserver zu installieren, installiert man sich einen einen Fake-Sendmail, der als Mail Transfer Agent (MTA) fungiert und die Mails an den Mailserver weiterleitet. Das kleine Programm findet sich hier:

http://glob.com.au/sendmail/

Einfach in einen Ordner stellen und konfigurieren (Parameter „sendmail_path“). Es ist nur darauf zu achten, dass der Pfad keine Leerzeichen enthält. Im File „sendmail.ini“ trägt man dann alle nötigen Einstellungen ein und schon können Mails problemlos verschickt werden. Üblicherweise sollten folgende Parameter gesetzt werden: „smpt_server“, „default_domain“, „hostname“ sowie „auth_username“ und „auth_password“.

Postfix: alle mails kriegen

Manchmal machts (vorallem auf Entwicklungsservern) Sinn alle ausgehenden Mails unabhängig von der Empfängeradresse an einen Empfänger zuzustellen.

Postfix macht einem sowas recht einfach.

Nehmen wir an wir wollen alles an catchall@mydomain.invalid zustellen.

Als erstes tragen folgendes in die /etc/postfix/main.cf ein


always_bcc=catchall@mydomain.invalid
transport_maps = hash:/etc/postfix/transport

Damit werden schon mal alle Mails als bcc an catchall@mydomain.invalid gesendet.

Als 2. Schritt konfigurieren wir die Transport-Table (/etc/postfix/transport) so daß nur an diese Adresse zugestellt wird.


catchall@mydomain.invalid :
* discard:silently

Die erste Zeile bewirkt daß Mails an catchall@mydomain.invalid „normal“ zugestellt werden.
Die 2 Zeile verwirft Mails an alle anderen Empfänger.

Wenns mal wieder länger dauert

Szenario:

  • Ein Shell-script wird in relativ kurzen Intervallen via cron ausgeführt (z.B. „pseudo Echtzeit“-Sync o.ä).
  • „Normalerweise“ läuft das Script immer kürzer als der Cron-Intervall (2min Laufzeit, 4min Intervall).
  • „Manchmal“ dauerts länger und dann laufen auf einmal mehrere Instanzen (und kommen sich vielleicht in die Quere)

Es soll/muss also ein Lockfile her.

Hier hilft folgendes kleine C-Programm lockrun.c.
Es sollte sich auf allen Unix/Linux/wasweissichfüreinX – Systemen mit gcc übersetzen lassen (gcc -o lockrun lockrun.c) und arbeitet dann als Wrapper ums Script und erledigt das Lock-File-Handling.

In die crontab kommt dann sowas in der Art:

Ruby Einzeiler, um Dateien umzubenennen

ruby -e 'Dir.glob("*JPG") { |n| `mv #{n} #{n.sub(/JPG/, "jpg")}`}'

Ruby / ffmpeg & Co. / Video and Audio Inspector

RVideo ist eine Ruby Bibliothek, mit der man Daten von Video und Audio Dateien mit Hilfe von Open Source Tools (wie ffmpeg) abfragen kann, ohne sich selbst mit dem Parsen des Outputs dieser Tools zu beschäftigen.
Beispiel:

file = RVideo::Inspector.new(:file => "/home/wolfgang/somefile.mp4")
file.video_codec  # => mpeg4
file.audio_codec  # => aac
file.resolution   # => 320x240

grepWin – GUI Suche für Windows

Regex und Textsuche inkl. Ersetzen unter Windows

Einfacher geht’s ja (fast) gar nicht mehr:
Rechts-Klick auf einen beliebigen Ordner grepWin aus dem Kontextmenü auswählen und schon geht die Suche dahin.

grepWin bietet Text oder Regey Suche, einen Regex-Validator, die Möglichkeit einmal durchgeführte Suchen in Bookmarks zu speichern und noch vieles mehr.

Mein Resumee: Die Windows-Suche hat längst ausgedient, ein Hoch auf grepWin

Download und Screenshots unter http://tools.tortoisesvn.net/grepWin

Danke an Masi für den Tip.

ack – Better than grep

ack ist ein Tool ähnlich grep, nur um einiges schneller und besser, wenn es darum geht eine große Menge an Sourcecode zu durchsuchen.

ack ist in Perl geschrieben und funktioniert demnach auf allen Betriebssystemen, auf denen auch Perl läuft.

Meiner Meinung nach die interessantesten Vorteile (mehr dazu auf der ack Website):

  • Geschwindigkeit (durchsucht nur die Files, die mich interessieren)
  • durchsucht von Haus aus rekursiv und ignoriert Verzeichnisse wie .svn, binäre Dateien, Backup Dateien, usw.
  • man kann ganz simpel angeben, welche Dateien durchsucht werden sollen, z.B.
    ack --php [begriff]
  • Color-Highlighting der Ergebnisse und
Anfrage