Lokaler IMAP Mirror: Unterschied zwischen den Versionen
Andi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Andi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
== Einrichtung == | == Einrichtung == | ||
Als Server kommt Ubuntu 19.10 als virtueller Container auf einem Proxmox Host. dovecot-imapd spielt lokaler IMAP-Server, offlieneimap synct mit dem Remote-Server. | Als Server kommt Ubuntu 19.10 als virtueller Container auf einem Proxmox Host. dovecot-imapd spielt lokaler IMAP-Server, offlieneimap synct mit dem Remote-Server. | ||
ACHTUNG! offlineimap ist relativ RAM-hungrig, 512mb reichen bei mir nicht und führen zu kills. Ich empfehle mindestens 1gig! | |||
Die Anleitung folgt großteils https://www.j-dimension.com/setting-up-a-local-imap-cache-with-offlineimap/ | Die Anleitung folgt großteils https://www.j-dimension.com/setting-up-a-local-imap-cache-with-offlineimap/ | ||
Zeile 15: | Zeile 17: | ||
Jetzt müssen wir einen lokalen user anlegen unter dem dovecot und offlineimap laufen können, meiner heißt "user": | Jetzt müssen wir einen lokalen user anlegen unter dem dovecot und offlineimap laufen können, meiner heißt "user": | ||
adduser user | adduser user | ||
sudo usermod -a -G mail user | sudo usermod -a -G mail user | ||
sudo usermod -a -G mail dovecot | sudo usermod -a -G mail dovecot | ||
id user ##########die ID brauchen wir später für die user-Datei | id user ##########die ID brauchen wir später für die user-Datei | ||
/etc/dovecot/conf.d/10-auth.conf | /etc/dovecot/conf.d/10-auth.conf | ||
Comment this line: | Comment this line: | ||
# !include auth-system.conf.ext | # !include auth-system.conf.ext | ||
Uncomment this line: | Uncomment this line: | ||
!include auth-passwdfile.conf.ext | !include auth-passwdfile.conf.ext | ||
Adjust these lines: | Adjust these lines: | ||
auth_mechanisms = plain login digest-md5 cram-md5 | auth_mechanisms = plain login digest-md5 cram-md5 | ||
disable_plaintext_auth = no | disable_plaintext_auth = no | ||
Once finished, Dovecot will authenticate users against a file /etc/dovecot/users | Once finished, Dovecot will authenticate users against a file /etc/dovecot/users | ||
sudo touch /etc/dovecot/users | sudo touch /etc/dovecot/users | ||
sudo chown root:dovecot users | sudo chown root:dovecot users | ||
Syntax vom user file: <mailbox>:{PLAIN}<password>:<userid>:<groupid>::/var/mail/<mailbox> ######## hier brauchen wir die user und group id von oben! | |||
mail@mypublicserver.org:{PLAIN}mysecretpassword:1000:1000::/var/mail/mail@mypublicserver.org | Syntax vom user file: <mailbox>:{PLAIN}<password>:<userid>:<groupid>::/var/mail/<mailbox> ######## hier brauchen wir die user und group id von oben! | ||
mail@mypublicserver.org:{PLAIN}mysecretpassword:1000:1000::/var/mail/mail@mypublicserver.org | |||
/etc/dovecot/conf.d/10-mail.conf, folgenden Parameter ändern: | /etc/dovecot/conf.d/10-mail.conf, folgenden Parameter ändern: | ||
mail_location = maildir:/var/mail/%u/Maildir | mail_location = maildir:/var/mail/%u/Maildir | ||
und die location setzen: | und die location setzen: | ||
mkdir /var/mail/mail@mypublicserver.org | mkdir /var/mail/mail@mypublicserver.org | ||
chown -R root:mail /var/mail/mail@mypublicserver.org | chown -R root:mail /var/mail/mail@mypublicserver.org | ||
sudo chmod -R g+w /var/mail/mail@mypublicserver.org | sudo chmod -R g+w /var/mail/mail@mypublicserver.org | ||
chmod -R a+rwxt /var/mail/ | chmod -R a+rwxt /var/mail/ | ||
service dovecot restart | service dovecot restart | ||
Ab jetzt sollten wir uns am lokalen server schon anmelden können! | Ab jetzt sollten wir uns am lokalen server schon anmelden können! | ||
Zeile 59: | Zeile 62: | ||
=== OfflineIMAP === | === OfflineIMAP === | ||
Hier gibts ebenfalls eine Anleitung in obrigem Link, bzw. mehr infos unter https://wiki.archlinux.org/index.php/OfflineIMAP | Hier gibts ebenfalls eine Anleitung in obrigem Link, bzw. mehr infos unter https://wiki.archlinux.org/index.php/OfflineIMAP | ||
Vorteil bei dieser Config, wir verbinden uns auch auf den lokalen Server per IMAP, müssen uns damit nicht ums Dateisystem sorgen machen. | |||
Die config wird im homedir unseres erstellten users eingetragen: | Die config wird im homedir unseres erstellten users eingetragen: | ||
Zeile 68: | Zeile 73: | ||
metadata = ~/.offlineimap.IMAP | metadata = ~/.offlineimap.IMAP | ||
accounts = Account1 | accounts = Account1 | ||
maxsyncaccounts = 1 | maxsyncaccounts = 1 <- keine Paralell-Syncs, führt zu Race-Konditionen! | ||
ignore-readonly = no | ignore-readonly = no | ||
# ui = Quiet | # ui = Quiet | ||
Zeile 75: | Zeile 80: | ||
localrepository=LocalIMAP1 | localrepository=LocalIMAP1 | ||
remoterepository=RemoteIMAP1 | remoterepository=RemoteIMAP1 | ||
# autorefresh = 5 | # autorefresh = 5 <- Daemon Mode, disable! | ||
Zeile 84: | Zeile 89: | ||
remotepass=mysecretpassword | remotepass=mysecretpassword | ||
ssl=no | ssl=no | ||
folderfilter = lambda foldername: foldername not in ['Trash', 'Junk', 'Deleted Items'] | |||
maxconnections = | maxconnections = 1 | ||
[Repository RemoteIMAP1] | [Repository RemoteIMAP1] | ||
Zeile 94: | Zeile 99: | ||
remotepass= mysecretpassword | remotepass= mysecretpassword | ||
ssl=yes | ssl=yes | ||
maxconnections = | maxconnections = 1 | ||
folderfilter = lambda foldername: foldername not in ['Trash', 'Junk', 'Deleted Items'] | |||
Wenn das SSL Zertifikat ungültig ist hilft es den Fingerprint einzufügen: | |||
openssl s_client -connect $SERVER:$PORT -showcerts | openssl x509 -fingerprint | |||
diesen in die config rein: | |||
cert_fingerprint = ke:yk:ey:ke:y..... | |||
Möglicherweise wäre es nicht schlecht beim ersten Versuch dem remote-server ein "readonly=yes" zu geben... | |||
soweit so gut, wir können nun einen Probelauf machen: | |||
sudo -u user offlineimap --dry-run | |||
ACHTUNG! Der wirft Fehler sofern die Ordnerstruktur nicht gleich ist, dank dem dry-run werden die nicht angelegt! Der richtige Sync hat problemlos funktioniert | |||
=== Cron Job === | === Cron Job === | ||
Stupide kopiert aus dem Howto: | Stupide kopiert aus dem Howto: | ||
OfflineIMAP has a daemon mode that can run in the background. However, I found it to be too unstable / unreliable. I therefore use a script that runs as a cron job: | OfflineIMAP has a daemon mode that can run in the background. However, I found it to be too unstable / unreliable. I therefore use a script that runs as a cron job: | ||
#!/usr/bin/env bash | |||
if pgrep offlineimap; then pkill offlineimap; sleep 10s; fi | |||
offlineimap -o -u quiet | |||
Make the script executable and add it to the users crontab: | |||
chmod a+x /home/mylocaluser/scripts/offlineimap.sh | |||
crontab -e | |||
This is the crontab line: | |||
*/5 * * * * /home/mylocaluser/scripts/offlineimap.sh | |||
This will perform a synchronization every 5 minutes. Done! | |||
===Maildir Verwendung=== | |||
Hier der Link zur Doku wie die Mails abgelegt werden: | |||
https://wiki2.dovecot.org/MailboxFormat/Maildir |
Aktuelle Version vom 21. November 2019, 22:33 Uhr
Linksammlung zum erstellen eines lokalen IMAP-Mirrors. Ziel ist die Synchronisation des Hauptmailservers im Netz mit einem lokalen Spiegel. Dadurch können einerseits Clients auch ohne Internetverbindung im lokalen Netzwerk auf die Daten zugreifen was die Arbeit wesentlich performanter macht, andererseits können einfache Filesystem-Snapshots durch die Ablage im lokalen Dateisystem durchgeführt werden. Weitere Anwendungsmöglichkeit wäre die automatisierte Bearbeitung/Sortierung von Mails ohne das IMAP-Protokoll nutzen zu müssen.
Einrichtung
Als Server kommt Ubuntu 19.10 als virtueller Container auf einem Proxmox Host. dovecot-imapd spielt lokaler IMAP-Server, offlieneimap synct mit dem Remote-Server.
ACHTUNG! offlineimap ist relativ RAM-hungrig, 512mb reichen bei mir nicht und führen zu kills. Ich empfehle mindestens 1gig!
Die Anleitung folgt großteils https://www.j-dimension.com/setting-up-a-local-imap-cache-with-offlineimap/
Pakete zu installieren:
apt-get install dovecot-imapd offlineimap
Dovecot
In Dovecot wird die lokale Benutzer-Authentifikation deaktiviert, dafür virtuelle User aus einem Textfile aktiviert und das Mailbox-Format geändert. Es folgen kopierte Bash-Befehle:
Jetzt müssen wir einen lokalen user anlegen unter dem dovecot und offlineimap laufen können, meiner heißt "user":
adduser user sudo usermod -a -G mail user sudo usermod -a -G mail dovecot id user ##########die ID brauchen wir später für die user-Datei
/etc/dovecot/conf.d/10-auth.conf
Comment this line: # !include auth-system.conf.ext Uncomment this line: !include auth-passwdfile.conf.ext Adjust these lines: auth_mechanisms = plain login digest-md5 cram-md5 disable_plaintext_auth = no
Once finished, Dovecot will authenticate users against a file /etc/dovecot/users sudo touch /etc/dovecot/users sudo chown root:dovecot users Syntax vom user file: <mailbox>:{PLAIN}<password>:<userid>:<groupid>::/var/mail/<mailbox> ######## hier brauchen wir die user und group id von oben! mail@mypublicserver.org:{PLAIN}mysecretpassword:1000:1000::/var/mail/mail@mypublicserver.org
/etc/dovecot/conf.d/10-mail.conf, folgenden Parameter ändern: mail_location = maildir:/var/mail/%u/Maildir
und die location setzen: mkdir /var/mail/mail@mypublicserver.org chown -R root:mail /var/mail/mail@mypublicserver.org sudo chmod -R g+w /var/mail/mail@mypublicserver.org chmod -R a+rwxt /var/mail/
service dovecot restart
Ab jetzt sollten wir uns am lokalen server schon anmelden können!
SSL aktivieren https://wiki.dovecot.org/SSL/DovecotConfiguration#Dovecot_SSL_configuration nano /conf.d/10-ssl.conf ssl=required ssl_cert = </etc/dovecot/private/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.key
OfflineIMAP
Hier gibts ebenfalls eine Anleitung in obrigem Link, bzw. mehr infos unter https://wiki.archlinux.org/index.php/OfflineIMAP
Vorteil bei dieser Config, wir verbinden uns auch auf den lokalen Server per IMAP, müssen uns damit nicht ums Dateisystem sorgen machen.
Die config wird im homedir unseres erstellten users eingetragen:
touch /home/user/.offlineimaprc
folgendes Template für das file: [general] metadata = ~/.offlineimap.IMAP accounts = Account1 maxsyncaccounts = 1 <- keine Paralell-Syncs, führt zu Race-Konditionen! ignore-readonly = no
- ui = Quiet
[Account Account1] localrepository=LocalIMAP1 remoterepository=RemoteIMAP1
- autorefresh = 5 <- Daemon Mode, disable!
[Repository LocalIMAP1]
type = IMAP
remotehost=localhost
remoteuser=mail@mypublicserver.org
remotepass=mysecretpassword
ssl=no
folderfilter = lambda foldername: foldername not in ['Trash', 'Junk', 'Deleted Items']
maxconnections = 1
[Repository RemoteIMAP1] sslcacertfile = /etc/ssl/certs/ca-certificates.crt type=IMAP remotehost= imap.mypublicserver.org remoteuser= mail@mypublicserver.org remotepass= mysecretpassword ssl=yes maxconnections = 1 folderfilter = lambda foldername: foldername not in ['Trash', 'Junk', 'Deleted Items']
Wenn das SSL Zertifikat ungültig ist hilft es den Fingerprint einzufügen:
openssl s_client -connect $SERVER:$PORT -showcerts | openssl x509 -fingerprint
diesen in die config rein:
cert_fingerprint = ke:yk:ey:ke:y.....
Möglicherweise wäre es nicht schlecht beim ersten Versuch dem remote-server ein "readonly=yes" zu geben...
soweit so gut, wir können nun einen Probelauf machen: sudo -u user offlineimap --dry-run ACHTUNG! Der wirft Fehler sofern die Ordnerstruktur nicht gleich ist, dank dem dry-run werden die nicht angelegt! Der richtige Sync hat problemlos funktioniert
Cron Job
Stupide kopiert aus dem Howto:
OfflineIMAP has a daemon mode that can run in the background. However, I found it to be too unstable / unreliable. I therefore use a script that runs as a cron job:
#!/usr/bin/env bash if pgrep offlineimap; then pkill offlineimap; sleep 10s; fi offlineimap -o -u quiet
Make the script executable and add it to the users crontab: chmod a+x /home/mylocaluser/scripts/offlineimap.sh crontab -e
This is the crontab line: */5 * * * * /home/mylocaluser/scripts/offlineimap.sh This will perform a synchronization every 5 minutes. Done!
Maildir Verwendung
Hier der Link zur Doku wie die Mails abgelegt werden: https://wiki2.dovecot.org/MailboxFormat/Maildir