Zimbra

Senden als Distribution List erlauben

zmprov grr dl some-list@example.org usr some-permitted-sender@example.org sendAsDistList

Senden als anderer User / Postfach erlauben

./zmprov grr account support@example.com usr username@example.com sendAs

Festplattenalarm-Schwellwerte einstellen

su zimbra
/opt/zimbra/bin/zmlocalconfig -e zmdisklog_warn_threshold=90
/opt/zimbra/bin/zmlocalconfig -e zmdisklog_crit_threshold=93
/opt/zimbra/bin/zmstatctl stop
/opt/zimbra/bin/zmstatctl start

Quelle: https://wiki.zimbra.com/index.php?title=Setting_Thresholds_for_Disk_Monitoring

Aktion ausführen für alle User

Userliste erstellen: root@das:~# ./zmprov -l gaa example.org > ~/userlist-example.org.txt

Und lustig loopen: root@das:~# for i in $(cat ~/userlist-example.org.txt); do echo "unlocking $i..."; ./zmprov ma $i zimbraAccountStatus active; done

Bash magic: Anzahl Requests mit elapsed= 1000 bis 99999 pro Benutzer

grep -E 'elapsed=.....?\>' /opt/zimbra/log/mailbox.log | grep -Eo 'name=[^@]+@example.org' | sort | uniq -c | sort -hr | head

User-Mailfolder finden

Location: /opt/zimbra/store/0/<uid>/msg

root@das:/opt/zimbra# ./bin/zmprov getMailboxInfo username@example.org
mailboxId: 220
quotaUsed: 19141696221

Mailqueues prüfen und löschen

https://wiki.zimbra.com/wiki/Managing-The-Postfix-Queues

/opt/zimbra/postfix/sbin/postqueue -p | egrep -v '^ *\(|-Queue ID-' \ | awk 'BEGIN { RS = "" } { if ($7 == "email@domain.com") print $1} ' | tr -d '*!' bzw entsprechend abgekürzt funzt, um zu prüfen, was passiert. dann das genze löschen mit postsuper: /opt/zimbra/postfix/sbin/postqueue -p | egrep -v '^ *\(|-Queue ID-' \ | awk 'BEGIN { RS = "" } { if ($7 == "email@domain.com") print $1} ' \ | tr -d '*!' | /opt/zimbra/postfix/sbin/postsuper -d -

Attachments hochladen / forwarden schlägt fehl

https://forums.zimbra.org/viewtopic.php?f=15&t=66234 -> chmod -R 750 /opt/zimbra/data/tmp/upload/ funktioniert - Server ist offensichtlich compromised!

Webfrontend: Kontakte kopieren (zB von gesharetem Ordner in eigenen )

per default verschiebt es, anstatt zu kopieren. lösung: shift gedrückt halten!

letsencrypt bullshit

Nachdem es zuletzt ja ein paar Probleme mit dem Renew-Prozess im Webinterface gab (vor allem in Zusammenhang mit der geplanten Umstellung auf mail.example.com - seitdem wirft das Admininterface nur noch CSRs mit dieser Domain raus), habe ich es mal per CLI probiert. So hat's geklappt:

/opt/zimbra/bin/zmcertmgr createcsr comm -new -subject "/CN=das.example.org"

CSR liegt dann unter /opt/zimbra/ssl/zimbra/commercial/commercial.csr

CSR dann nutzen, um mit gethttpsforfree ein Zertifikat zu erzeugen. Jetty im Zimbra kann immer noch nicht anständig /.well-known servieren, daher wird die entsprechende Umleitung im Gartenzaun aktiviert und das File stattdessen auf use hinterlegt, dann sollte die Verifizierung klappen. Aus gethttpsforfree muss nur das "signed cert" gespeichert werden.

Für die Verifizierung in Zimbra werden gebraucht:

  • Key: /opt/zimbra/ssl/zimbra/commercial/commercial.key

  • Signed cert: von letsencrypt

  • chained CA certs: in eine datei kommen erst das letsencrypt intermediate zertifikat und dann das letsencrypt root cert. WICHTIG: das intermediate-cert, das aus gethttpsforfree rausfällt, funktioniert NICHT. es muss das "Signed by ISRG Root X1" intermediate verwendet werden, da zimbra nur dieses gegen die root CA validieren kann - warum auch immer, diese feststellung hat einige stunden arbeit gekostet. das "idenTrust Cross Signed" funktioniert in jedem Fall nicht.

Dann: /opt/zimbra/bin/zmcertmgr verifycrt comm <key> <signed.pem> <chained-ca.pem>

Wenn Zimbra nicht spinnt, sollte das funktionieren. Ist das tatscählich der Fall:

cat <signed.pem> <chained-ca.pem> >> <to-deploy.pem>

/opt/zimbra/bin/zmcertmgr deploycrt comm <to-deploy.pem> <chained-ca.pem>

überprüfen: /opt/zimbra/bin/zmcertmgr viewdeployedcrt all

Schlussendlich alles neustarten: service zimbra restart

...und die Umleitung auf use im Gartenzaun wieder rausnehmen!

Kommerzielles SSL-Cert

Z.B. Sectigo: funktioniert prinzipiell genau so, halt ohne die Validierung und so Quatsch. Bei Sectigo kriegt man (Stand 2020-02) ein signiertes Cert und drei für die Chain. Reihenfolge so: m@void:~/zimbra-comodo-202002$ cat original/AddTrustExternalCARoot.crt original/USERTrustRSAAddTrustCA.crt original/SectigoRSADomainValidationSecureServerCA.crt

For reference - alte, kaputte Methode

Statt zmcertmgr depolycrt etc.

/opt/zimbra/libexec/zmdomaincertmgr savecrt das.example.org <to-deploy.pem> <key> /opt/zimbra/libexec/zmdomaincertmgr deploycrts

Termine einstellen als anderer User

Klassische "Sekretär"-Funktion: "Chefin" gibt "Sekretär" Schreibzugriff auf den Kalender, "Sekretär" wählt links unten den Kalender der "Chefin" aus vorm absenden.

"Fehler im Netzwerkdienst" / "Network Service Error"

Mögliche Ursache (wenn nicht User ausgesperrt): evtl. IP geblacklistet, weil Passwort zu oft falsch eingegeben. mailbox.log zeigt "Access to IP 10.10.10.3suspended, for repeated failed login.".

Lösung hier: https://wiki.zimbra.com/wiki/Network_Service_Error_has_occurred

Direkt mit IMAP-Service sprechen ohne Proxy

Kann man scheinbar machen ohne Nebenwirkungen, wenn man weiß, auf welchem Server der Mailstore liegt: einfach IMAP auf Port 7143 machen.

Email count pro Mailbox, pro Folder

Along the lines of zmmailbox -z -m "$j" gaf | awk '{print $4}' | egrep -o "[0-9]+", dann halt noch was basteln zum addieren oder einfach in Excel pasten, lel

ERROR: service.AUTH_EXPIRED (auth credentials have expired)

Checken ob zu bearbeitender Account in Maintenance Mode ist

Alle Inhalte in Kalender löschen

Weil man den default-Kalender ja nicht löschen darf: zmmailbox -z -m username@example.com emptyFolder /Calendar

Kalendershares automatisch annehmen / mounten

https://forums.zimbra.org/viewtopic.php?t=17899

Verschlüsselte Zip-Archive erlauben in Zimbra

Start -> Configure -> Global settings -> AS/AV -> Block encrypted archives; dann zmclamdctl restart

Mails aus store (zB aus Backup) zurück in Postfach schieben

Aktuell einzig bekannter Weg:

# flatten:
find msg/ -mindepth 2 -type f -exec mv -t msg/ -i '{}' +

# rename:
cd msg 
find -name "*.msg" -exec echo rename 's/\.msg/\.eml/' {} \; # vorsicht - sehr langsam

move sent: 
mkdir sent
grep -r "^From: " | grep -i 'teczar' | awk -F ':' '{print $1}' | uniq | xargs mv -t sent/

Dann Account in Thunderbird einbinden und mit ImportExportToolsNG die Files reinladen.