Migration von Mailboxen

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Letztes Weekend habe ich mich mal daran gemacht die Firmware meiner Mail-DS upzugraden. Danach wollte ich die Mailboxen meiner User von der 408 auf die 107+ kopieren. Dies wurde aufgrund der unterschiedlichen Prozessoren der beiden DS mit etlichen Fehlermeldungen quittiert. Es führte dazu, dass ich die neuen Mails sehen konnte die alten jedoch nicht.
Darum musste ich mich auf die Suche nach einem Synctool für den IMAP Server machen und bin auf imapsync gestossen. Damit kann man die Mailbox des Users auf Server A problemlos auf Server B bringen.
Auf der DS selber konnte ich das Teil wegen fehlender Perl Module nicht laufen machen, aber mein Linux auf dem Lapi hatte diese Software im Petto.
Dann kann man das Syncen so einleiten
Code:
imapsync --syncinternaldates --host1 serverA  --user1 bar --passfile1 secret \
         --host2 serverB --user2 foo   --passfile2 topsecret

Alle Emails werden inkl Verzeichnisse transferiert und fehlende Verzeichnisse auf Server B werden erstellt.
Danach muss man im Zielclient einfach die Verzeichnisse des Server nochmals abonnieren, damit man die Email/Verzeichnisse sehen kann
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Trouble Shooting beim Mailserver...

Logs
Wenn immer etwas mit dem Mailserver nicht so läuft wie erwartet, ist der erste Punkt die Prüfung der Logs Files. Diese liegen per Default unter /var/log/messages.
Da dieses Log sehr umfangreich werden kann ist es von Vorteil wenn man die Meldungen filtert z.B. nach dem vermuteten "Übeltäter"
z.B.
Code:
cat /var/log/messages | grep smtpd
cat /var/log/messages | grep smtp
cat /var/log/messages | grep dovecot
cat /var/log/messages | grep imap
von Wichtigkeit sind v.a. Meldungen zu Berechtigungsproblemen

Berechtigungen, User und Gruppen
Für die Mailverarbeitung gibt es grundsätzlich den postfix-User und die maildrop-Gruppe. Der User und die Gruppe müssen auf verschiedene Dateien und Verzeichnisse Schreibrechte haben.
Code:
chown -R postfix:maildrop /var/spool/postfix/maildrop
Prüft, dass sowohl die User- als auch die Gruppenrechte auf rwx stehen
Code:
cd /usr/syno/mailstation/sbin
chown postfix:maildrop postdrop postqueue
Falls ihr virtuelle Benutzer verwendet (im Gegensatz zu lokalen) dann müssen diese beiden Dateien suid und guid gesetzt sein
Code:
cd /usr/syno/mailstation/sbin
chmod u+s,g+s postdrop postqueue
Desweiteren muss im Falle von virtuellen Benutzern der lokale Benutzer, unter dem die virtuelle Mailzustellung läuft, Mitglied der Gruppe maildrop sein, damit er entsprechende Rechte auf dfie Dateien und Verzeichnisse bekommt
Solltet ihr virtuelle Benutzer verwenden und mit deliver arbeiten, dann muss die deliver Datei ebenfalls postfix:maildrop sein mit gesetztem guid
Code:
chown postfix:maildrop /path/to/deliver
chmod g+s /path/to/deliver
Diese Rechte können sich nach einem Reboot verändern. Es ist nicht nach jedem Reboot so, aber ich habe es schon erlebt, dass meine Änderungen wieder rückgängig gemacht wurden nach einem Neustart. Prüft also bei Problemen immer auch gleich die Rechte der Dateien und Verzeichnisse.

Gruss und viel Spass beim Mailen

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
imapsync auf der DS

Jetzt habe ich es endlich geschafft imapsync direkt auf der DS laufen zu lassen :)

Hier also eine kurze Anleitung:

1) Ladet Euch den perl IMAP Client von http://search.cpan.org/CPAN/authors/id/P/PL/PLOBBES/Mail-IMAPClient-3.21.tar.gz herunter
2) Entpackt das Archiv und kopiert den Inhalt des Verzeichnisses ./lib/Mail/ nach /opt/lib/perl5/5.8.8/Mail/
3) Installiert sowohl ipkg perl-timedate als auch ipkg perl-manip auf der DS
4) Ladet Euch imapsync von http://www.linux-france.org/prj/imapsync/dist/ herunter (ich habe Version 1.284 genommen) und entpacken nicht vergessen.

Wenn alles geklappt hat, dann solltet ihr mal ins imapsync Verzeichnis wechseln und
Code:
perl -c imapsync
probieren. Danach könnt ihr mal einen Testlauf machen
Code:
perl imapsync --syncinternaldates \
--host1 IP_HOST1 --authmech1 LOGIN --user1 MEIN_USER --password1 geheim \
--host2 127.0.0.1 --authmech2 LOGIN --user2 MEIN_USER --password2 blabla
Wenn das geklappt hat die Datei imapsync in ein Verzeichnis innerhalb von PATH kopieren, damit der Befehl ohne Pfadangabe gefunden werden kann.

**edit**
Probiert das vorläufig noch nicht. Nach ausgiebigen Tests gestern abend, hat sich die Firmware reproduzierbar verabschiedet!!!
**/edit**
 
Zuletzt bearbeitet:

king_dingeling

Benutzer
Mitglied seit
12. Jul 2009
Beiträge
1.178
Punkte für Reaktionen
0
Punkte
62
Der einfachste Weg dürfte aber über Thunderbird gehen. Hab ich bei mir jedenfalls auch so gemacht.

Vorgehensweise :

Sämtliche IMAP-Ordner lokal auf den PC kopieren und anschliessend vom PC auf den neuen Mailserver kopieren :)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Problem hierbei ist, dass sich Thunderbid so schlecht als cronjob ausführen lässt (zumindest bei mir auf einem Windows) ;)
Ich möchte einerseits die Mailboxen auf Dateibasis (mit rsync und rsnapshot) sichern und andererseits die gesamte Mailbox via IMAP auf den Backupserver sichern
 

king_dingeling

Benutzer
Mitglied seit
12. Jul 2009
Beiträge
1.178
Punkte für Reaktionen
0
Punkte
62
Problem hierbei ist, dass sich Thunderbid so schlecht als cronjob ausführen lässt (zumindest bei mir auf einem Windows) ;)
Ich möchte einerseits die Mailboxen auf Dateibasis (mit rsync und rsnapshot) sichern und andererseits die gesamte Mailbox via IMAP auf den Backupserver sichern

Ok, ich dachte du redest ausschliesslich von Migration :)
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
**edit**
Probiert das vorläufig noch nicht. Nach ausgiebigen Tests gestern abend, hat sich die Firmware reproduzierbar verabschiedet!!!
**/edit**

Gibts neues dazu? Will das auch mal ausprobieren (am besten ohne dass die FW abrauscht).

Bei mir gibts übgrigens schon den Ordner /opt/lib/perl5/5.8.8/ nicht, muss ich den anlegen?



Wenn ich das ganze mit Ubuntu mache, gibts ebenfalls Fehler:

root@ubuntu:/home/ich# imapsync --host1 192.168.1.11 --user1 benutzername1 --passfile1 /etc/secret1 --host2 mail.xxx.xx --user2 benutzername2 --passfile2 /etc/secret2
$RCSfile: imapsync,v $ $Revision: 1.286 $ $Date: 2009/07/24 15:53:04 $
Here is a [linux] system (Linux ubuntu 2.6.31-16-generic #53-Ubuntu SMP Tue Dec 8 04:02:15 UTC 2009 x86_64)
with perl 5.10.0
Mail::IMAPClient 3.19
IO::Socket 1.30_01
IO::Socket::SSL
Digest::MD5 2.36_01
Digest::HMAC_MD5
Term::ReadKey
Date::Manip
and the module Mail::IMAPClient version used here is 3.19
Command line used:
/usr/bin/imapsync --host1 192.168.1.11 --user1 benutzername1 --passfile1 /etc/secret1 --host2 mail.xxx.xxt --user2 benutzername2 --passfile2 /etc/secret2
Turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
TimeZone:[CET]
Will try to use CRAM-MD5 authentication on host1
Will try to use CRAM-MD5 authentication on host2
From imap server [192.168.1.11] port [143] user [benutzername1]
To imap server [mail.xxx.xx] port [143] user [benutzername2]
Banner: * OK Dovecot ready.
Host 192.168.1.11 says it has NO CAPABILITY for AUTHENTICATE CRAM-MD5
Error login: [192.168.1.11] with user [benutzername1] auth [CRAM-MD5]: 2 NO Unsupported authentication mechanism.
Error login: [192.168.1.11] with user [benutzername1] auth [CRAM-MD5]: 2 NO Unsupported authentication mechanism.
root@ubuntu:/home/ich#
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Gibts neues dazu? Will das auch mal ausprobieren (am besten ohne dass die FW abrauscht).

Bei mir gibts übgrigens schon den Ordner /opt/lib/perl5/5.8.8/ nicht, muss ich den anlegen?
Das Problem war nicht imapsync sondern die DS worauf imapsync gelaufen ist. Die ist mir unter Volllast übern Jordan gegangen (während einem rsync Job).
Auf meiner anderen DS107+ funzt imapsync so wie es sollte. Allerdings brauche ich es nicht mehr sooft, da die Laufzeit bei meiner Mailbox einfach zu gross ist.
Den Ordner sollte Perl anlegen. Kann sein, dass du ne andere Perl Version hast und damit auch der Ordner anders heisst.
Wenn du es nicht auf der DS machen willst, dann kannst du imapsync über die Paketverwaltung der meisten Linuxe installieren. Der Sync ist dann zwar nicht so effizient: DS - Computer - andere DS statt DS - andere DS
Es funzt aber genau gleich.
Du musst einen --authmech pro Verbindung definieren z.B. PLAIN oder LOGIN
Und besser du benutzt auch syncinternaldates. Sonst werden die DATE Header der Emails angepasst!
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
ah, habs für ubuntu, option --noauthmd5 bauchts
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Fantastisch, es funzt sowohl mit Ubuntu als auch mit meiner DS408 :)) Danke schön.

Hatte ja perl noch nicht installiert, deshalb hat der ORdner gefehlt.
In deiner Anleitung müsste das Paket wohl perl-date-manip heissen (perl-manip habe ich keins gefunden)


Den lezten Satz verstehe ich nicht:

Wenn das geklappt hat die Datei imapsync in ein Verzeichnis innerhalb von PATH kopieren, damit der Befehl ohne Pfadangabe gefunden werden kann.

Wohin gehört das?

Und wenn ich das jetzt per crontab starten will, muss ich dann irgendwo (zB in volume1/scripts/) eine Datei imapsync.sh erstellen, die ganze imapsync Zeile dort reinkopieren und in crontab einfach nur dieses Datei angeben? Gibt wohl ein Pfad Durcheinander....
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Mit dem Satz meinte ich den Fall wenn du imapsync manuell auf der Konsole aufrufen willst, dann am besten in ein Verzeichnis wie /opt/bin kopieren, dann musst du auf der Konsole nicht immer den ganzen Pfad angeben, sondern nur den Befehl
Für einen cronjob würde ich aber empfehlen eine komplette Pfadangabe zum Befehl zu verwenden
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Also ich hab jetzt imapsync nach /opt/bin/ verschoben

In /volume1/scripts/imapsync.sh steht

Code:
perl /opt/bin/imapsync .................

Wenn ich nun auf der Konsole /volume1/scripts/imapsync.sh eingebe legt der los wie die Feuerwehr. Funzt also bestens.

In /etc/crontab hab ich jetzt per 3rdparty crontab

Code:
50      23      *       *       2       root    /volume1/script/imapsync.sh

eingegeben.

Im cron log steht dann auch

USER root pid 14938 cmd /volume1/scripts/imapsync.sh #Emails sichern

Das heisst das Ding läuft an, aber es macht nix. In /var/log/messages steht nix drin.
Fehlt wohl noch irgendwo irgendwas
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Der läuft schon durch, aber die Ausgabe eines cronjobs wird wohl per default nach /dev/null umgeleitet.
Häng doch hinten an nach imapsync und allen Parametern ein
Code:
perl /opt/bin/imapsync .....[B] >> /var/log/mailsync[/B]
an. Dann sollten die Ausgaben des imapsync Befehls in die angegebene Datei geschrieben werden.
Kannst sie in "Echtzeit" ja mit
Code:
tail -f /var/log/mailsync
anschauen und sehen was genau imapsync da so treibt.
Sonst kannst du auch mit ps oder htop nachschauen ob der imap Server resp imapsync Last erzeugt.
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Sorry jahlives, aber es klappt nicht :-(

Die Logdatei wird erstellt (was ebenfalls bedeutet, dass der cronjob anläuft), bleibt aber völlig leer. Und es kommen auch keine Mails am Zielort an.

Ich habe gestern noch etwa 4 Threads mit demselben oder ähnlichen Thema studiert, aber auch dort scheint keine Lösung gefunden zu sein (hab mit wget, mit sh und so weiter versucht).

Wie gesagt, geb ich die Datei auf der Konsole an, funktioniert es.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Kann es sein, dass du den Pfad zum perl Interpreter angeben solltest? Würde ich in deinem Script mal versuchen.
Was du zusätzlich noch versuchen könntest wäre es die Fehler der Konsole auch ins Logfile zu schieben
Code:
... [B]2[/B]>>/var/log/mailsync
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Ok, da kommen Fehler:

Can't locate Mail/IMAPClient.pm in @INC (@INC contains: /usr/lib/perl5/5.8.6/PPC
_854X /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/PPC_854X /usr/lib/perl
5/site_perl/5.8.6 /usr/lib/perl5/site_perl .) at /opt/bin/imapsync line 430.
BEGIN failed--compilation aborted at /opt/bin/imapsync line 430.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Wenn du es auf der Konsole aufrufst, welche Perl Version verwendest du dann? ipkg oder default? die Fehlermeldung deutet darauf hin, dass der default perl Interpreter verwendet wurde. Hast du es mit der kompletten Pfadangabe zum Perl Interpreter versucht?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also wenn du auf der Konsole einfach perl ... eingibst und es funzt, dann kriegst du den Pfad zum Perl Interpreter mittels
Code:
which perl
raus. Ich wette ein Bier, dass du auf der Konsole das ipkg Perl verwendest (was funzt) und im cron wohl das default Perl (was nicht funzt)
 

HarryPotter

Benutzer
Mitglied seit
24. Aug 2007
Beiträge
2.156
Punkte für Reaktionen
0
Punkte
0
Das glaub ich dir gerne.

Hab jetzt wie oben geschrieben /opt/bin/perl /opt/bin/imapsync --........ eingegeben.

Gleiches Resultat.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat