Mail-Attachments via Perl über POP3 abrufen und in einem Ordner ablegen

Etwas speziell, kann aber vielleicht der eine oder andere brauchen: Von einem POP3-Server sollen alle Attachments extrahiert werden und danach die Mails gelöscht werden. Die Anforderung ist hier speziell für die Veröffentlichung von Content per E-Mail. Es werden per Cron einmal täglich die Anhänge ausgelesen und veröffentlicht.

Ich habe das ganze mit Perl und den beiden Modulen Mail::POP3Client und Mail::MboxParser umgesetzt. Diese müssen vorher per CPAN installiert werden.
Das geht ganz einfach so:

cpan install Mail::POP3Client
cpan install Mail::MboxParser
cpan install Date::Format

Falls ihr cpan das erste mal startet, will es noch konfiguriert werden. Die meisten Einstellungen können einfach per Return mit dem Standardwert bestätigt werden.

Das Script ist extrem simpel, ohne Fehlerhandling und kann leicht angepasst werden:

#!/usr/bin/perl -w

#Muss vorher per CPAN installiert werden
use Mail::POP3Client;
use Mail::MboxParser::Mail;
use Date::Format;

#USESSL wird z.B. bei GMail gebraucht
my $pop = new Mail::POP3Client (USER => ‚user‘,
PASSWORD => ‚pass‘,
HOST => ‚pop.gmail.com‘,
DEBUG => 1,
USESSL => 1);

print $pop->Message();

for my $i (1 .. $pop->Count) {
my $datetime = time2str(‚%Y%m%d%H%M%S‘, time);
my $msg = Mail::MboxParser::Mail->new( [ $pop->Head($i) ],
[ $pop->Body($i) ] );
#Wo sollen die Attachments hin?
$msg->store_all_attachments( path => ‚/tmp/test‘, prefix => $datetime );

#Auskommentieren, falls die Mails vom Server gelöscht werden sollen
#$pop->Delete($i);

print $pop->Message();
}

$pop->Close();

Update am 20.02.2009: Timestamp-Prefix für die Dateinamen hinzugefügt. Achtung: Jetzt wird das Paket Date::Format gebraucht!

Der beste Weg eine MySQL Datenbank auf einen neuen Server umzuziehen

Meiner Meinung nach der beste und schnellste Weg eine MySQL Datenbank von Server Alt auf Server Neu zu bekommen ist es, auf Server Alt folgendes Befehl zu starten:

mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost „mysql -uUSER -pPASS NEW_DB_NAME“

Das führt dazu, dass die Ausgabe von mysqldump direkt komprimiert und verschlüsselt per SSH auf den neuen Server geschickt wird und dort sofort von mysql verarbeitet wird. Ausgabe gibt es während der Ausführung leider keine…

Auf der Suche nach dem perfekten PHP Application Framework

Ich habe mich in letzter Zeit etwas nach Frameworks für die Applikationsentwicklung in PHP umgesehen. Hintergrund ist die anstehende Entwicklung einer etwas grösseren Anwendung. Das Framework sollte den MVC-Pattern umsetzen, eventuell Hilfestellungen bei Routine-Tasks geben, aktuell sein (weiterentwickelt werden) und vor allem sollte die verfügbare Dokumentation umfangreich sein.

Nach kurzer Zeit musste ich feststellen, dass die Auswahl sehr gross und unübersichtlich ist. Bisher habe ich mich nicht entschieden. Vielleicht hat der eine odere andere Leser Erfahrungen mit einem dieser Frameworks und möchte sie mit mir teilen? Ausserdem mag ich mit diesem Überblick die Leute unterstützen, die vor einer Ähnlichen Entscheidung stehen.

Es handelt sich hierbei wirklich nur um einen Überblick und keine Bewertung. Es werden die mir bekannten Frameworks mit der Beschreibung von ihrer Webseite verlinkt.

(mehr …)

Neue Version 1.94 von UPX

Neue Version 1.94 von UPX:
„Changes in 1.94 beta (11 Mar 2006):
* UNSTABLE BETA VERSION – DO NOT USE EXCEPT FOR TESTING
* new format: added support for arm/pe (ARM executables running on WinCE)
* new format: added support for linux elf/amd64
* new format: added support for linux elf/ppc32
* new format: added support for mach/ppc32 (Apple Mac OS X)
* win32/pe: hopefully working „load config“ support
* win32/pe: R6002 runtime errors worked around
* win32/pe: the stub now clears the dirty stack“

Neue Version 1.94 von UPX

Neue Version 1.94 von UPX

Network File Copy using SSH

Ein paar Möglichkeiten Dateien über ssh auf einen anderen Rechner zu übetragen:
„tar cvf – . | gzip -c -1 | ssh user@host cat „>“ remotefile.gz

ssh target_address cat “ remotefile

ssh target_address cat “ remotefile

cat localfile | ssh target_address cat „>“ remotefile

cat localfile | ssh target_address cat – „>“ remotefile

dd if=localfile | ssh target_address dd of=remotefile

ssh target_address cat remotefile.tgz )“

( cd SOURCEDIR && tar cvf – . | gzip -1 -) | ssh target_address „(cd DESTDIR && cat – > remotefile.tgz )“

ssh target_address „( nc -l -p 9210 > remotefile & )“ && cat source-file | gzip -1 – | nc target_address 9210

cat localfile | gzip -1 – | ssh target_address cat „>“ remotefile.gz“

Network File Copy using SSH

Network File Copy using SSH

ONLamp.com: Whats New in ModSecurity

„ModSecurity 1.9 was released in early November 2005, more than a year after the previous stable release, version 1.8. The delay between the two releases was much longer than I had anticipated. Looking back, I really should have released 1.9 back in April, but it so happened that I skipped that release and continued adding new features. This resulted in a release that contains double the features and more than a 40 percent increase of the source code size.

This article describes the most important new features in ModSecurity 1.9. This is somewhat difficult to do, because there are so many of them, but I have decided to group the enhancements into three major areas:

Rule engine enhancements
Real-time audit log aggregation
Stateful request monitoring“

ONLamp.com: Whats New in ModSecurity

ONLamp.com: Whats New in ModSecurity