ispCP - Board - Support
[UPDATED] Roundcube Fetchmail Plugin v0.2 - Printable Version

+- ispCP - Board - Support (http://www.isp-control.net/forum)
+-- Forum: ispCP Omega International Area (/forum-22.html)
+--- Forum: German Corner (/forum-26.html)
+---- Forum: Plauderecke (/forum-49.html)
+---- Thread: [UPDATED] Roundcube Fetchmail Plugin v0.2 (/thread-11376.html)

Pages: 1 2


[UPDATED] Roundcube Fetchmail Plugin v0.2 - flames - 08-12-2010 07:38 AM

GITHUB: https://github.com/flames/RCFetchmail

Ein Roundcube-Plugin um externe Mailkonten (GMX und Co.) abrufen zu können, per User bzw. per Mailbox natürlich. Ganz ISP-Like.
Installationsanleitung:

fetchmail installieren:

apt-get install fetchmail

fetchmail.pl Script nach /var/mail/ kopieren:

cp fetchmail.pl /var/mail/fetchmail.pl

in /var/mail/ Ordner "fetchmail" erstellen:

mkdir /var/mail/fetchmail

den Ordner und das Script müssen vmail:mail gehören, das Script muss ausführbar sein:

chown -R vmail:mail /var/mail/fetchmail*
chmod -R 700 /var/mail/fetchmail*

in der Roundcube-Datenbank muss eine weitere Tabelle erstellt werden:

CREATE TABLE `virtual_fetchmail` (
`mailget_id` int(11) NOT NULL auto_increment,
`userhere` varchar(50) collate utf8_unicode_ci NOT NULL,
`active` varchar(1) collate utf8_unicode_ci NOT NULL default '1',
`options` varchar(50) collate utf8_unicode_ci NOT NULL,
`type` varchar(50) collate utf8_unicode_ci NOT NULL default 'POP3',
`remoteserver` varchar(50) collate utf8_unicode_ci NOT NULL,
`remoteuser` varchar(50) collate utf8_unicode_ci NOT NULL,
`remotepass` varchar(50) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`mailget_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=144 ;

in meinem fall ist Roundcube in /var/www/ispcp/gui/tools/roundcube installiert, u.u. Pfad anpassen.
Plugin installieren wir so:

cp -R ispcp_fetchmail /var/www/ispcp/gui/tools/roundcube/plugins/
vi /var/www/ispcp/gui/tools/roundcube/config/main.inc.php

um Zeile 240 findet ihr etwas in dieser Art:

$rcmail_config['plugins'] = array('ispcp_pw_changer', 'managesieve', 'sieverules');

das neue Fetchmail-Plugin aktivieren wir, in dem wir es folgender massen in diese Zeile eintragen:

$rcmail_config['plugins'] = array('ispcp_pw_changer', 'managesieve', 'sieverules', 'ispcp_fetchmail');

und die Anzahl der erlaubten Konten die abgerufen werden sollen (pro lokale Mailbox) anpassen:
vi /var/www/ispcp/gui/tools/roundcube/plugins/ispcp_fetchmail/config/config.inc.php

$rcmail_config['fetchmail_limit'] = 3;

das Perl script benötigt Zugangsdaten zu der MySQL Datenbank

vi /var/mail/fetchmail.pl
$db_database="roundcube";
$db_username="dbuser";
$db_password="dbpass";

natürlich wollen wir, dass Fetchmail regelmäßig die mails abholt (z.B. alle 5 Minuten):

crontab -e
*/5 * * * * sudo -u vmail /var/mail/fetchmail.pl > /dev/null 2&>1

dann noch die Log-Ausgabedatei erstellen und rechte geben:

touch /var/log/fetchmail
chown vmail:mail /var/log/fetchmail
chmod 600 /var/log/fetchmail

zur Funktionsweise: das Roundcube-Plugin speichert die Konten die abgerufen werden sollen in die Datenbank, das Perl-Script wird regelmäßig per Cron aufgerufen, ließt die Datenbank aus und erstellt eine temporäre fetchmailrc, ruft fetchmail damit auf und die User kriegen ihre mails von GMX und Co. in Ihr schönes IMAP-Postfach Smile
Bei jedem Aufruf werden immer die aktuellen Einträge aus der Datenbank geholt und die alte fetchmailrc überschrieben bzw. nach jedem Durchlauf wird die fetchmailrc gelöscht.

- Die UI des Plugins basiert auf dem ISPConfig3-Fetchmail-Plugin von Horst Fickel.
- Seid willkommen das Plugin nach Lust und Laune zu verbessern, dann aber nicht vergessen hochzuladen.
- Verbesserungsvorschlag 1: Die Sql-Daten in der Plugin Konfiguration raus, indem die Sql-Querys über die Roundcube-Plugin-API umgesetzt werden.
- Verbesserungsvorschlag 2: Leider werden die Passwörter in Plaintext in der Datenbank gespeichert. Vielleicht das Plugin die Passwörter verschlüsselt speichern lassen und im Perl-Script wieder decodieren. Die fetchmailrc muss die passwörter ja in Plaintext enthalten, oder?

changelog:
- es werden keine mysql zugangsdaten mehr benötigt, das plugin arbeitet nun 100% über die roundcube api und holt sich da was es braucht (das perl script benötigt jedoch weiterhin mysql daten)
- einige gui+usability verbesserungen
- diverse bugfixes
- russische übersetzung hinzugefügt

Nun viel Spass damit.


RE: Roundcube ISPCP Fetchmail Plugin - flames - 08-27-2010 08:48 AM

hallo,

hat jemand schon eine rückmeldung dazu? funktioniert? funktioniert nicht? verbesserungsvorschläge?


RE: Roundcube ISPCP Fetchmail Plugin - 4tux - 08-27-2010 04:16 PM

Moin,

bei mir funktioniert es super. Habe das vor ca ein bis zwei Wochen eingerichtet und mit verschiedenen anderen Konten ausprobiert.

Das schöne ist, dass diese Emails nicht nur per Webmail erreichbar sind, sondern auch mit jedem Emailprogramm.

Die Installation nach der Anleitung war einfach und schnell gemacht.


RE: Roundcube ISPCP Fetchmail Plugin - wynni - 09-07-2010 05:48 AM

Bei mir funktiuoniert das leider nicht. Er nimmt den www-data user für die Datenbank her, obwohl ich die configdatei angepasst habe....

$db = @new mysqli('localhost', 'dbuser', 'dbpass', 'dbname');

Errorlog:

Access denied for user 'www-data'@'localhost' (using password: NO) in /usr/share/apache2/roundcubemail-0.4/plugins/ispcp_fetchmail/ispcp_fetchmail.php on line 253

Kann mir da jemand weiterhelfen?
Vielen Dab


RE: Roundcube ISPCP Fetchmail Plugin - MattesKr - 09-08-2010 11:37 PM

Quote:um Zeile 240 findet ihr etwas in dieser Art:

$rcmail_config['plugins'] = array('ispcp_pw_changer', 'managesieve', 'sieverules');

das neue Fetchmail-Plugin aktivieren wir, in dem wir es folgender massen in diese Zeile eintragen:

$rcmail_config['plugins'] = array('ispcp_pw_changer', 'managesieve', 'sieverules', 'ispcp_fetchmail');
finde ich nicht!

also roundcube habe ich DOKU<-- nach dieser anleitung installiert


RE: Roundcube ISPCP Fetchmail Plugin - flames - 09-10-2010 08:14 PM

@wynni

da bin ich echt überfragt jetzt. ich vermute du hast den dateien falsche permissions gegeben, der user ist nicht www-data sondern vu2000, die gruppe ist www-data. möglicherweise hat sich das irgendwie auf die mysql connection ausgewirkt. aber dennoch sehr merkwürdig.
versuch das mal (den pfad u.u. anpassen):
chown -R vu2000:www-data /usr/share/apache2/roundcubemail-0.4/plugins/ispcp_fetchmail

edit: hau das roundcube mal aus jeckerei nach /var/www/ oder noch besser nach /var/www/ispcp/gui/tools/
mv /usr/share/apache2/roundcubemail-0.4 /var/www/ispcp/gui/tools/roundcube
chown -R vu2000:www-data /var/www/ispcp/gui/tools/roundcube


@MattesKr

diese optionen findest du nicht in der config des plugins sondern des eigentlichen roundcube, also dort:
/var/www/ispcp/gui/tools/roundcube/config/main.inc.php

in meiner roundcube config sehen zeilen 236 bis 241 so aus:

PHP Code:
// ----------------------------------
// PLUGINS
// ----------------------------------

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array('ispcp_pw_changer''managesieve''sieverules''ispcp_fetchmail'); 

solten diese zeilen nicht vorhanden sein, hast du eine zu alte roundcube version und musst updaten. das plugin läuft mir 0.4 einwandfrei.


RE: Roundcube ISPCP Fetchmail Plugin - wynni - 09-15-2010 09:43 PM

ich habe nun das plugin meinen ansprüchen (debian lenny) angepasst....
einmal die conf.inc.php erweitert auf
Code:
mysql_connect(localhost,'roundcubeuser','password'); @mysql_select_db('roundcubedb') or die( "Unable to select database");

und das perlscript schreibt nun direkt in die fetchmailrc. Klappt alles wunderbar.

wynni

P.S. Möchtest du da Plugin nicht auch im roundcubeforum posten?


RE: Roundcube ISPCP Fetchmail Plugin - flames - 09-16-2010 03:18 AM

doch werd ich machen.
zu deinem problem, was du hattes, hab ich aber schon die lösung. werd das plugin nochmal überarbeiten und hier wieder anhängen.
das problem war, dass ich zum connecten mysqli nutze, habe aber gleichzeitig mysql_real_escape_string in einigen statements benutzt, mysql_real_escape_string erfordert aber, dass die mysql connection steht bevor das statement aufgerufen wird (das hast du ja per mysql_connect erreicht). habe quasi obejektorientiert die connection aufgebaut und im gleichen atemzug prozedural abfragen gestartet. dass, es bei mir keine probleme bereitet hat ist irgendwie merkwürdig.
ich bin grade am ausbau des dyndns zeugs beschäftigt, daher poste ich eine komplette OO version des fetchmail plugins erst in den nächsten tagen (und dann auch im rc forum)

achja, deine modifikationen interessieren mich natürlich auch, könntest du das vielleicht etwas ausführlicher erklären?
und was meinst du, dass "das perlscript nun direkt in die fetchmailrc schreibt", das hat es auch in der ursprünglichen version getant, jedoch nach dem die fetchmailrc abgearbeitet wurde löschte es diese wieder, und erzeugte bei jedem weiteren cycle wieder eine frische. das war dazu gedacht, dass alle änderungen (kundeseitig) bei jedem cycle frisch in der fetchmailrc sind und quasi.
wir können uns ja mal "zusammensetzen" und das plugin mal so richtig aufpolieren. das ist meine erste erfahrung mit rc plugin api, daher gibts da noch sehr viele verbesserungsansätze.

edit, ich habe auch lenny im einsatz. die "or die()" geschichte habe ich extra nicht eingebaut, sondern einen eigenen errorlog ohne die()/exit() gemacht, damit bei eventuellen fehlern nicht direkt das ganze roundcube mit abschmiert. die exits sind glaub sogar noch drin aber auskommentiert. ist ne frühe alpha version xD


RE: Roundcube ISPCP Fetchmail Plugin - wynni - 09-17-2010 04:33 PM

nun ja das perlscript erstellt eine temp fetcmailrc und löscht es anschliessend wieder. das gefiel mir nicht so. ich schreibe jetzt direkt in /etc/fetchmailrc und lösche es nicht mehr. alle xx minuten wird diese datei wieder überschrieben.

beim plugin habe ich nur die mysql anbindung geändert wie vorher gepostet ...

wynni

P.S. Da du ja sehr geschickt mir der api arbeitest... ich bräuchte ein remember the milk plugin Smile vielleicht wenn du mal zeit hast Smile


RE: Roundcube ISPCP Fetchmail Plugin - flames - 09-18-2010 01:00 AM

lol, ich geschickt mit api? danke, aber das ist eine völlige überbewertung. xD

hast du das perl script auch so angepasst, dass es einträge aus der /etc/fetchmailrc auch wieder löschen kann, falls ein kunde in seinem postfach/fetchmail entsprechende einträge entfernt oder bearbeitet? das war ja der grund richtung temporäre fetchmailrc zu gehen.

oder nutzt du das plugin auf nem server wo nur du alleine zugriff hast? übringens, ich habe v0.2 fertig, wird gleich geuppt. an dem perl script habe ich nichts geändert, alle änderungen sind nur das eigentlich rc plugin betreffend.
changelog:
- es werden keine mysql zugangsdaten mehr benötigt, das plugin arbeitet nur 100% über die roundcube api und holt sich da was es braucht
- einige gui+usability verbesserungen
- diverse bugfixes