19.04.2023

Zarafa

Open Xchange
SOGo
Kopano
Zarafa
Kerio Connect
sonstiges

Links zu den Projekten

Zimbra, Zimbra Wiki
Axigen
DOCUframe
OpenGroupware
SmarterMail
Community Projekt Tine.org
Kolab Community, Kolab Enterprise ausprobieren

Groupware Migration

audriga Groupware Migration

Navigation:

Links:
Download Community Version
Dokumentation Übersicht
Datenbank Backup
User_Manual
Administrator_Manual
Zarafa Wiki
Zarafa Einrichtung Ubuntu
Forum ctserver.org
Zarafa mit SASL
Procmail FAQs
Procmail Beispiele

Pakete

zarafa-webaccess - alter WebMailer
zarafa-webapp - neuer WebMailer

Seitenanfang

Installation unter Debian

unter Debian muß als erstes MySQL, Postfix und Apache installiert werden

apt-get install mysql-server postfix postfix-mysql apache2-mpm-prefork

Locale für Zarafa anpassen

# /etc/default/locale
LC_ALL="de_DE.UTF-8"
LANG="de_DE.UTF-8"
update-locale

Zarafa entpacken und die install.sh aus dem entstandenen Ordner ausführen. Alle weiteren benötigten Pakete werden nachinstalliert, auch Apache mit PHP (mit MAPI Erweiterung) das für den Webaccess benötigt wird.

/etc/php5/apache2/conf.d/zarafa.ini
...
extension=mapi.so
... 

Die Abfrage der Lizenz kann man bei der Community Version leer lassen.

- (Optional) Apache Proxy Modul aktivieren

a2enmod proxy
service apache2 restart
# /apache2/mods-enabled/proxy.conf
<IfModule mod_proxy.c>
 ProxyPass /zarafa http://127.0.0.1:236/
 ProxyPassReverse /zarafa http://127.0.0.1:236/
</IfModule>

- Anpassung bevor der erste Benutzer angelegt wird.

# /etc/default/zarafa
ZARAFA_LOCALE="de_DE.UTF-8"
ZARAFA_USERSCRIPT_LOCALE="de_DE.UTF-8"
# /etc/zarafa/userscripts/users_common.sh
export ZARAFA_LOCALE="de_DE.UTF-8"
export ZARAFA_USERSCRIPT_LOCALE="de_DE.UTF-8"
export LC_ALL="de_DE.UTF-8"
#/etc/zarafa/userscripts/createuser.d/00createstore
...
# zarafa-admin --utf8 --create-store "${ZARAFA_USER}" --lang "${ZARAFA_LANG}"
zarafa-admin --create-store "${ZARAFA_USER}" --lang "${ZARAFA_LANG}"
/etc/init.d/zarafa-server restart
# /etc/apache2/envvars
export LANG="de_DE.UTF-8"
/etc/init.d/apache2 restart
Seitenanfang

Update innerhalb der Version

- Dienste anhalten

# Mail Dienste anhalten
/etc/init.d/fetchmail stop && /etc/init.d/postfix stop

# Primär Dienste anhalten
/etc/init.d/zarafa-spooler stop && /etc/init.d/zarafa-server stop && /etc/init.d/mysql stop

# Optionale Dienste anhalten
/etc/init.d/zarafa-dagent stop && /etc/init.d/zarafa-gateway stop && /etc/init.d/zarafa-ical stop
/etc/init.d/zarafa-search stop && /etc/init.d/zarafa-monitor stop

# !!! nur Vollversion !!!
/etc/init.d/zarafa-licensed stop

- Backup der Konfiguration und der MySQL Datenbank

cp -r /etc/zarafa /etc/zarafa.bck
cp -r /var/lib/mysql /var/lib/mysql.bck

- Pakete updaten/installieren

dpkg -Bi libvmime0_0.9.2* libical0_0.44*
dpkg -i zarafa-client* zarafa-libs* python-mapi* php5-mapi*
dpkg -i libkyotocabinet16* zarafa-search*
dpkg -i zarafa_7* zarafa-client* zarafa-common* zarafa-dagent* zarafa-gateway* zarafa-ical* \
zarafa-libarchiver* zarafa-monitor* zarafa-server* \
zarafa-spooler* zarafa-utils* zarafa-webaccess* zarafa-search*
dpkg -i zarafa-contacts* zarafa-webapp*

# !!! nur Vollversion !!!
dpkg -i zarafa-licensed*

- Dienste starten

# Primär Dienste starten
/etc/init.d/mysql start && /etc/init.d/zarafa-server start && /etc/init.d/zarafa-spooler start

# !!! nur Vollversion !!!
/etc/init.d/zarafa-licensed start

# Optionale Dienste starten
/etc/init.d/zarafa-dagent start && /etc/init.d/zarafa-gateway start && /etc/init.d/zarafa-ical start
/etc/init.d/zarafa-search start && /etc/init.d/zarafa-monitor start

# Mail Dienste starten
/etc/init.d/fetchmail start && /etc/init.d/postfix start

# Apache Service neustarten
service apache2 restart

Überwachen ob alles richtig läuft

export ZARAFA=/var/log/zarafa
tail -f $LOG/auth.log $LOG/syslog $ZARAFA/degent.log $ZARAFA/gateway.log $ZARAFA/ical.log $ZARAFA/licensed.log \
$ZARAFA/monitor.log $ZARAFA/search.log $ZARAFA/server.log $ZARAFA/spooler.log
Seitenanfang

Befehle

Befehl Erklärung
zarafa-admin -s Public Store erstellen
zarafa-admin -c LoginName -p Passwort -e eMailAdresse -f "Vor Nachname" neue User anlegen, die Option -f legt auch den Namen fest, der als Absender einer eMail gezeigt wird
zarafa-admin -u LoginName -f "Vor Nachname" ändern der Benutzerangaben
zarafa-admin -u LoginName -p <neues Passwort> Passwort ändern, nach dem ändern des Passwortes, muß IMAP und POP3 wieder freigegeben werden zarafa-admin -u User --enable-feature imap
zarafa-admin -u LoginName -U <neuer Benutzername> Login Name ändern
zarafa-admin --create-store LoginName MailStore erstellen, wird normalerweise automatisch erstellt
zarafa-admin -l zeigt die erstellten User an
zarafa-admin -d Loginname Benutzer löschen
zarafa-admin --list-orphans verwaisten Datenpeicher anzeigen, der nach dem löschen eines Users erhalten bleibt.
zarafa-admin --remove-store GUID verwaisten Datenpeicher löschen
zarafa-admin -V Version des Servers anzeigen
/etc/init.d/zarafa-server start Zarafa Server starten
zarafa-admin --force-resync User Resync Cache-Mode-Profil
zarafa-admin --user-count Benutzer Übersicht
zarafa-admin --clear-cache internen Cache löschen
zarafa-admin --sync  
zarafa-admin --list-sendas User anzeigen welcher Benutzer im Auftrag des angegebenen Benutzers senden kann
zarafa-admin -u User --enable-feature imap IMAP für einen Nutzer aktivieren
zarafa-admin -u User --enable-feature pop3 POP3 für einen Nutzer aktivieren
zarafa-admin -u User --disable-feature pop3 POP3 für einen Nutzer aktivieren
zarafa-stats --system Systemstatistik
zarafa-stats --users Userstatistik
zarafa-stats Übersicht über verfügbare Optionen
http://<Server Name>/webaccess Webaccess Zugriff
echo test | zarafa-dagent -F 'Gelöschte Objekte' ZarafaUser Mails direct im Ordner ablegen
Seitenanfang

Grundkonfiguration

Log Dateien von Zarafa Ordner /var/log/zarafa

LOG Datei
gateway.log POP3/IMAP
ical.log Ical/CalDAV
indexer.log Zarafa Indexer
licensed.log License Server
server.log Zarafa Server
spooler.log SMTP Server
monitor.log eMail Verkehr
Konfiguration
/etc/zarafa/ Zarafia Konfigurationsverzeichnis
/etc/zarafa/license/base Lizenzdatei hier kann dan auch später die Lizenz eingetragen werden, wenn man von der Community Version auf eine andere wechselt.
Prozess Konfigurationsdatei Beschreibung
zarafa-server /etc/zarafa/server.cfg Hauptserver, wird über SOAP angesprochen, speichert Daten in der MySQL-Datenbank
zarafa-spooler /etc/zarafa/spooler.cfg leitet ausgehende Mails an den MTA weiter
zarafa-monitor /etc/zarafa/monitor.cfg überwacht Quota-Einstellungen (optional)
zarafa-gateway /etc/zarafa/gateway.cfg POP3- und IMAP-Schnittstelle (optional)
zarafa-ical /etc/zarafa/ical.cfg Ical- und CardDAV-Schnittstelle (optional)
zarafa-indexer /etc/zarafa/indexer.cfg gespeicherte Mails für Volltextsuchen indexiert (optional)
zarafa-licensed /etc/zarafa/licensed.cfg Lizenz-Manager (optional, nur für Outlook-Zugang nötig)
zarafa-dagent /etc/zarafa/dagent.cfg leitet eingehende Mail vom externen MTA zu Zarafa (standardmäßig nicht aktiv)

 

cd /var/log/zarafa
tail -f /var/log/syslog /var/log/fetchmail /var/log/mail.log gateway.log  ical.log  indexer.log \
licensed.log  server.log  spooler.log monitor.log

- Features global aktivieren/deaktivieren

# /etc/zarafa/server.cfg
...
disabled_features = imap pop3
...

eMail Empfang einrichten

Delivery Agent starten (Local Mail Transfer Protocol)

# /etc/default/zarafa
DAGENT_ENABLED=yes
/etc/init.d/zarafa-dagent start

eMails werden direkt von Postfix als MTA übernommen.

Seitenanfang

Zarafa als unprivileged User ausführen

- Berechtigungen der Verzeichnisse anpassen

chown -R zarafa:zarafa /var/log/zarafa
chown -R zarafa:zarafa /var/lib/zarafa

- Parameter in allen .cfg Dateien ändern

run_as_user = zarafa
run_as_group = zarafa

- Service neu starten

service zarafa-server restart
service zarafa-search restart
service zarafa-presence restart
service zarafa-gateway restart
service zarafa-dagent restart
service zarafa-ical restart
service zarafa-monitor restart
service zarafa-spooler restart

- Kontrolle, ob alle Änderungen durchgeführt wurden

egrep "run_as_user|run_as_group" /etc/zarafa/*
ps aux | grep -i "zarafa"
Seitenanfang

Internet-Site: Versand und Empfang direkt via SMTP

- MySQL Paket für Postfix installieren

apt-get install postfix-mysql

Postfix einrichten

# /etc/postfix/main.cf
#
# Variablen definieren
mydomain = domain.tld
myhostname = mail.domain.tld
#
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
#
# Benutzer werden bei neuen Mail benachrichtigt yes/no
biff = no
#
append_dot_mydomain = no
readme_directory = no
#
#######################################################
# TLS parameters
#######################################################
smtpd_tls_cert_file=/etc/zarafa/ssl/cert.pem
smtpd_tls_key_file=/etc/zarafa/ssl/privkey.pem
# smtpd_tls_loglevel = 3
# smtpd_use_tls=yes
# smtpd_enforce_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#######################################################
# TLS parameters Ende
#######################################################
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
relayhost = 
#######################################################
# Zarafa Anpassungen
#######################################################
# virtual_maps = mysql:/etc/postfix/mysql-aliases.cf
# mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1
# transport_maps = hash:/etc/postfix/transport
#######################################################
# Erweiterung
#######################################################
virtual_mailbox_maps = mysql:/etc/postfix/mysql-aliases.cf
virtual_mailbox_domains = domain1.tld, domain2.tld ...

virtual_alias_maps = hash:/etc/postfix/valias
virtual_alias_domains = $virtual_alias_maps

virtual_transport = lmtp:127.0.0.1:2003
# All options: propagate_unmatched_extensions = canonical, virtual, alias, forward, include
propagate_unmatched_extensions = canonical, virtual, alias
#######################################################
# SASL Authentification aktivieren
#######################################################
# SASL für nicht RFC2554 Clients
broken_sasl_auth_clients = yes
# SASL bei eingehenden Verbindungen
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
# smtpd_tls_auth_only = no
smtpd_sasl_path = smtpd
# SASL bei ausgehenden Verbindungen
# smtp_sasl_auth_enable = yes
# smtp_tls_security_level = may
# smtp_sender_dependent_authentication = yes
# Nutzer/Passwort für die Authentifizierung festlegen
# smtp_sasl_password_maps = hash:/etc/postfix/smtp_relayhost_auth
# smtp_sasl_security_options = noanonymous
#######################################################
# Versandbedingungen festlegen Client access maps Regeln erstellen
#######################################################
# IP und Hostname prüfen
#smtpd_client_restrictions =
#		permit_sasl_authenticated
# HELO prüfen Hostname im DNS
# smtpd_helo_restrictions =
#		reject_unknown_helo_hostname
# MAIL FROM: prüfen
smtpd_sender_restrictions =
		reject_unverified_sender
# RCPT TO: prüfen
smtpd_recipient_restrictions =
# SASL prüfen
		permit_sasl_authenticated,
# eigenes Netzwerk erlauben
		permit_mynetworks,
# unbekannte Empfänger abweisen
		 reject_unauth_destination,
# MAIL FROM: muss ein FQDN Name sein
		reject_non_fqdn_sender,
# RCPT TO: muss ein FQDN Name sein
		reject_non_fqdn_recipient,
# Postfix muss für Empfänger Domain verantwortlich sein
		reject_unknown_recipient_domain,
# unbekannte Absenderdomain werden abgelehnt
		 reject_unknown_sender_domain,
# Postfix ist finales Ziel
		permit_auth_destination
# Anzahl SMTP Kommandos prüfen
smtpd_data_restrictions =
		reject_unauth_pipelining
#######################################################
# Ende der Regeln
#######################################################

Postfix Zarafa DB plugin integration

# /etc/postfix/mysql-aliases.cf
# The user name and password to log into the mysql server.
user = MySQL-User
password = mysql-Passswort
hosts = 127.0.0.1
dbname = zarafa
# For Postfix 2.2 and later The SQL query template.
# See mysql_table(5) for details.
query = select value from objectproperty where objectid=(select 
objectid from objectproperty where value='%s' limit 1) and propname='loginname';
# /etc/postfix/vmailbox
#
#       Virtuelle Domain definieren
#       Beispiele
#
# domain.tld            anything        # Virtuelle Domain definieren
# domain2.tld           anything        # Virtuelle Domain definieren
#
# alias@domain.tld      alias2
# @domain.tld           alias2                  #Catch-All Regel
# alias3@domain.tld     alias@provider.tld      #Weiterleitung, auch an
# externe Mail möglich
# alias@domain.tld      alias@domain2.tld, alias2@domain.tld
#
#
domain.tld      	   anything
domain2.tld               anything
# /etc/postfix/valias
#
#	Virtuelle Aliase definieren
#
# genau die Adresse
# alias@domain.tld	alias@provider.tld
#
# Catch-All Regel alles an @domain.tld zu dieser Adresse weiterleiten
# @domain.tld		alias2@provider.tld
#
# externe Mail möglich
# alias@domain.tld      alias@domain2.tld, alias2@domain.tld
#######################################################
# allgemeine Umleitungen
#######################################################
root@domain.tld		user@domain.tld
postmaster@domain.tld	user@domain.tld
#######################################################
# Verteiler/Sammeladdresse
#######################################################
alle@domain.tld		user@domain.tld,
			user2@domain.tld
postmap /etc/postfix/vmailbox
postmap /etc/postfix/valias

eMail Adressen umschreiben, ein und ausgehende

# /etc/postfix/main.cf
...
canonical_maps = hash:/etc/postfix/canonical
...
# /etc/postfix/canonical
#
# Adressen umschreiben Beispiele
#
# Adresse generell umschreiben (ein und ausgehende Mails inkl. Änderung des
# Mailheaders)
#
# web32@doamin.tld      user@domain.tld
#
# lokale Nutzeraccounts umschreiben
#
# root                  user@domain.tld
#
# alle Adressen der Domain umschreiben
#
# @srv.domain.tld       @domain.tld

 

Seitenanfang

SASL Auth mit Zarafa einrichten

- Install sasl2-bin

apt-get install sasl2-bin libsasl2-modules libsasl2-modules-sql

- Dateien anpassen

#/etc/default/saslauthd
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="rimap"
MECH_OPTIONS="127.0.0.1"
THREADS=0
OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"
# /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
# log_level: 3
rm -r /var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd

- Postfix Benutzer der Gruppe SASL hinzufügen, Rechte setzen

adduser postfix sasl
chgrp postfix /etc/postfix/sasl/smtpd.conf
chmod 640 /etc/postfix/sasl/smtpd.conf

- es ist Wichtig, das der IMAP Server von Zarafa auch auf Port 143 lauscht, sonst funktioniert SASL Auth nicht !!!

#/etc/zarafa/gateway.cfg
...
# enable/disable IMAP, and IMAP listen port
imap_enable     =       yes
imap_port       =       143
...
# /etc/postfix/main.cf
...
# SASL Authentification aktivieren
#
# SASL für nicht RFC2554 Clients
broken_sasl_auth_clients = yes
# SASL bei eingehenden Verbindungen
smtpd_sasl_auth_enable = yes
# smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_security_options = noanonymous
# smtpd_sasl_local_domain =
smtpd_sasl_path = smtpd

- Postfix und SASL neustarten

service postfix restart
service saslauthd restart

- Verbindung testen

testsaslauthd -u <Benutzer> -p <Passwort> -s smtp
testsaslauthd -u <Benutzer> -p <Passwort> -f /var/spool/postfix/var/run/saslauthd/mux

Authentifizierung korrekt

0: OK "Success."

Authentifizierung fehlerhaft

0: NO "authentication failed"

kein Zugriff auf SASL, Einstellungen prüfen

connect() : No such file or directory

Fehlermeldung: SASL authentication failure: cannot connect to saslauthd server: Permission denied
Lösung: Postfix Benutzer der Gruppe SASL hinzufügen, Rechte setzen

 

Seitenanfang

Internet mit Smarthost: Versand via Smarthost, Empfang mit Fetchmail

das Beispiel hat folgende Konfiguration
LocalesNetz: 192.168.2.0/24
IP Zarafa Server: 192.168.2.62

- Fetchmail einrichten

apt-get install fetchmail
# /etc/default/fetchmail
START_DAEMON=yes
# /etc/fetchmailrc
set daemon 600
set syslog
set logfile "/var/log/fetchmail"
poll    pop.gmx.net protocol pop3
        user "user@gmx.de"
        password "geheim"
        options ssl
        smtpaddress localhost
        keep forcecr
        mda "/usr/bin/zarafa-dagent ZarafaUser"
# /etc/zarafa/server.cfg
local_admin_users = root fetchmail
/etc/init.d/zarafa-server restart
touch /var/log/fetchmail
chown fetchmail.root /var/log/fetchmail
/etc/init.d/fetchmail start

- Postfix einrichten

# /etc/postfix/main.cf
mynetworks = 192.168.2.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
inet_interfaces = 192.168.2.62 localhost
# default_transport = error
# relay_transport = error
############################# Erweiterung ######################
# eMail dem SMTP Host zuordnen
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhost
# wenn es nur einen RelayServer gibt
# relayhost = smtp.1und1.de
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
# Nutzer/Passwort für die Authentifizierung festlegen
smtp_sasl_password_maps = hash:/etc/postfix/smtp_relayhost_auth
smtp_sasl_security_options = noanonymous
# /etc/postfix/sender_relayhost
# Zuordnung eMail Domain und Versandserver
# Syntax: eMail-Adresse SMTP-des-Providers
# einzelne eMail Adressen
# user1@gmx.de	mail.gmx.net
# user2@gmx.net	mail.gmx.net
# user3@web.de	smtp.web.de
#
# je Provider
@gmx.de		mail.gmx.net
@gmx.net	mail.gmx.net
@gmx.it		mail.gmx.net
@web.de		smtp.web.de
# /etc/postfix/smtp_relayhost_auth
# Passwort per Mailadresse
# Syntax: eMail-Adresse	Benutzer:Passwort
user1@gmx.de	nutzer1:passwort
user2@gmx.net	nutzer2:passwort
user3@web.de	nutzer3:passwort
# Passwort pro MailHost
# Syntax: SMTP-des-Providers Benutzer:Passwort
# smtp.1und1.de	user@domain.tld:Passwort
postmap /etc/postfix/sender_relayhost
postmap /etc/postfix/smtp_relayhost_auth
postfix reload

Outlook

zarafaclient.msi installieren, Konto hinzufügen | Andere | Zarafa Server

Server: <IP des Zarafa Servers>
Port: 236
Benutzername: Zarafa Loginname
Passwort:
Verbindungstyp:

Outlook Zugriff über Port 237 mit HTTPS Verschlüsselung

IMAP/POP3 Client Zugriff

für den Zugriff per Client muß vorher noch das IMAP oder/und POP3 Feature aktiviert werden.

zarafa-admin -u LoginName --enable-feature imap
zarafa-admin -u LoginName --enable-feature pop3

die Zeile in der /etc/zarafa/server.cfg hat nicht den gewünschten Erfolg gebracht

# /etc/zarafa/server.cfg
# disable_features = imap pop3
Seitenanfang

SSL

Zarafa Webaccess mit SSL

a2enmod ssl
a2ensite default-ssl
/etc/init.d/apache2 restart

Zugriff über SSL auf Webaccess

https://<Zarafa-Server>/webaccess/

- Verzeichnis anlegen

mkdir /etc/zarafa/ssl
chmod 700 /etc/zarafa/ssl 

- CA und Zertifikat anlegen

cd /etc/zarafa/ssl
sh /usr/share/doc/zarafa/ssl-certificates.sh server

Common Name und Passwort vergeben

Zarafa Server mit SSL

# /etc/zarafa/server.cfg
...
server_ssl_enabled	=	"yes"
server_ssl_key_file	=	/etc/zarafa/ssl/server.pem
server_ssl_key_pass	=	PASSWORT
server_ssl_ca_file	=	/etc/zarafa/ssl/demoCA/cacert.pem
server_ssl_ca_path	=	/etc/zarafa/ssl/demoCA
sslkeys_path		=	/etc/zarafa/ssl/
...

- Zarafa Server neu starten

/etc/init.d/zarafa-server restart 

- Zertifikat für CalDAV und IMAP erstellen

openssl genrsa -out /etc/zarafa/ssl/privkey.pem 2048
openssl req -new -x509 -key /etc/zarafa/ssl/privkey.pem -out /etc/zarafa/ssl/cert.pem -days 1095

Common Name = Name des Servers

Gateway IMAP und POP3 Zugriff über SSL

POP3 SSL Port 995
IMAP SSL Port 993

# /etc/zarafa/gateway.cfg
imaps_enable		=	yes
pop3s_enable		=	yes
ssl_private_key_file    =       /etc/zarafa/ssl/privkey.pem
ssl_certificate_file    =       /etc/zarafa/ssl/cert.pem
/etc/init.d/zarafa-gateway restart

ICAL Zugriff über SSL

SSL Port 8443

# /etc/zarafa/ical.cfg
...
icals_enable = yes
ssl_private_key_file = /etc/zarafa/ssl/privkey.pem
ssl_certificate_file = /etc/zarafa/ssl/cert.pem
/etc/init.d/zarafa-ical restart
Seitenanfang

Virenscanner, Spamfilter

Pakete clamassassin für den Virencheck, Spamc als Spamfilter und Procmail als Filter/Sortierer

Fetchmailrc anpassen, für die Weitergabe an Procmail

# /etc/fetchmailrc
...
# mda "/usr/bin/zarafa-dagent ZarafaUser"
mda "/usr/bin/procmail -a ZarafaUser"
...

Procmail Verzeichnis für Sperrdateien anlegen

mkdir /var/spool/procmail
chown fetchmail.root /var/spool/procmail
chmod 755 /var/spool/procmail
# /etc/procmailrc
# Run procmail as the receiving user, not root:
DROPPRIVS=yes
# Debug Informationen an oder aus
VERBOSE=on
LOGABSTRACT=yes
# LOG File festlegen
LOGFILE=/var/log/procmail.log
# Zeichensatz festlegen
EXPORT LANG=de_DE.UTF-8
# Home Verzeichnis definieren
HOMEDIR=/var/spool/procmail

DELIVERMAIL="/usr/bin/zarafa-dagent"
USER=$1

# Virencheck Mail und Anhang
:0 fw: $HOMEDIR/clamassassin.lock
|/usr/bin/clamassassin

# Virenmails markieren
:0 w
* ^X-Virus-Status: Yes
| $DELIVERMAIL -j $USER
EXITCODE=$?

# Spamcheck
:0 fw: $HOMEDIR/spamc.lock
|/usr/bin/spamc -u spam

# Sortierung
# SPAM mit -j in den Junk E-Mail Ordner
:0 w
* ^X-Spam-Status: Yes
| $DELIVERMAIL -j $USER
EXITCODE=$?

# GMX WerbeMail
:0 w
* ^Reply-to.*mailings@gmxnet.de*
# * ^To.user@^domain.tld
# * ^Subject.*TEST
# an Mailadresse weiterleiten
# ! user@domain.tld
# Mail in den Ordner Posteingeng\Archiv (-F) ablegen,
# ist der Ordner nicht vorhanden, wird er angelegt (-C)
# | $DELIVERMAIL -C -F 'Posteingang\Archiv' $USER
# beim Ordner Gelöschte Objekte ist es wichtig das die Variable LANG
# gesetzt ist damit die Umlaute richtig verarbeitet werden
| $DELIVERMAIL -F 'Gelöschte Objekte' $USER
# Mail im Ordner Junk E-Mail des Benutzers verschieben
# | $DELIVERMAIL -j $USER
# Mail unwiederbringlich löschen
# /dev/null
EXITCODE=$?

# normale Nachrichten
:0 w
| $DELIVERMAIL $USER
EXITCODE=$?

 

Seitenanfang

Z-Push

Project
Z-Push Download

-Download, Entpacken und Zugriffsrechte setzen

wget http://download.z-push.org/final/2.2/z-push-2.2.9.tar.gz
tar xvzf z-push-2.2.9.tar.gz -C /var/www
mv /var/www/z-push-2.2.9 /var/www/z-push
chmod 755 /var/www/z-push
mkdir /var/www/z-push/state
chmod 755 /var/www/z-push/state
mkdir /var/log/z-push
chown -R www-data:www-data /var/www/z-push /var/log/z-push

- Apache Konfigurationsdatei erweitern

apt-get install libapache2-mod-php5
a2enmod php5
service apache2 restart
# /etc/apache2/sites-enabled/zarafa-webaccess
...
Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
 <Directory /var/www/z-push/>
    Options -Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag magic_quotes_runtime off
    php_flag short_open_tag on
     <Files debug.txt>
      Deny from All
     </Files>
 </Directory>
...

- Z-Push Konfiguration anpassen /var/www/z-push/config.php, unter /var/www/z-push/state wird der aktuelle Status der ActiveSync Clients gespeichert, so das nicht immer das komplette Verzeichnis übertragen werden muss.

...
define('STATE_DIR', '/var/www/z-push/state/');
...

- Symbolische Links anlegen, z-push-top zeigt die aktuellen Aktivitäten der Nutzer und

ln -s /var/www/z-push/z-push-admin.php /usr/sbin/z-push-admin
ln -s /var/www/z-push/z-push-top.php /usr/sbin/z-push-top

- Z-Push Protokollierungsdatei für Syncronisierungsprobleme anlegen

touch /usr/share/zarafa-webaccess/z-push-1.5.5-790/debug.txt
chmod a+w /usr/share/zarafa-webaccess/z-push-1.5.5-790/debug.txt

- verhindert das Auslesen der debug.txt Datei übers Web, kann auch in der vHost Konfigurationsdatei erfolgen

# /var/www/z-push/.htaccess
<Files debug.txt>
 order allow,deny
 Deny from All
</Files>

- Apache Server neu starten

/etc/init.d/apache2 restart

- ActiveSync Server testen, "Z-Push - Open Source ActiveSync" Seite wird gezeigt.
https://server.domain.tld/Microsoft-Server-ActiveSync

- Ausgabe des Browsers

Z-Push - Open Source ActiveSync
Version 2.2.9
GET not supported
This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices.
Seitenanfang

Webaccess und WebApp

- Anpassung Zarafa WebApp Version 2.1.2, sonst findet das Webinterface den Zarafa-Server nicht.

# /etc/zarafa/webapp/config.php
...
define("DEFAULT_SERVER","file:///var/run/zarafad/server.sock");
...

 

Seitenanfang

iCal

- Konfiguration anpassen

# /etc/zarafa/ical.cfg
run_as_user = zarafa
run_as_group = zarafa
pid_file = /var/run/zarafad/ical.pid
ical_enable = no
ical_port = 8080
icals_enable = yes
icals_port = 8443
ssl_private_key_file = /etc/zarafa/ssl/privkey.pem
ssl_certificate_file = /etc/zarafa/ssl/cert.pem
...

Clientanbindung

Beispiel iPhone Einstellungen | Mail, Kontakte, Kalender | Account hinzufügen | Andere | Kalenderabo hinzufügen oder CalDAV-Account hinzufügen (Kalenderabo ist nur lesend, CalDAV lesend und schreibend)

Server: https://mail.domail.tld:8443/caldav/<Username>/
Benutzer: User
Passwort: ***
SSL verwenden: aktivieren

Verbindung im Browser testen, man erhält eine Calendar.ics als Download.
https://server.domail.tld:8443

Thunderbird

in Thunderbird Kalender öffnen, neuen Kalender hinzufügen | Netzwerkkalender

Server: https://mail.domain.tld:8443/caldav/<Username>/Kalender

Seitenanfang

Fehlersuche

- erweiterte Log Ausgabe von Postfix aktivieren mit der Option (-v)

# /etc/postfix/master.cf
#
...
smtp      inet  n       -       -       -       -       smtpd -v
...

- eMail mit dem zarafa-dagent auf der Konsole versenden, -v Verbose, -f Datei verschicken

zarafa-dagent user@domain.tld -v -f /etc/hosts

- Beispiel für einen Aliase der alle LOGs überwacht.

#!/bin/sh
# /etc/profile.d/aliase.sh
# Systemweite ALIASE setzen
#
export LOG=/var/log
export MYSQL=/var/log/mysql
export APACHE=/var/log/apache2
export ZARAFA=/var/log/zarafa

alias tall='tail -f $LOG/auth.log $LOG/syslog $MYSQL/error.log $APACHE/access.log $APACHE/error.log \
$APACHE/other_vhosts_access.log $APACHE/ssl_access.log $ZARAFA/degent.log $ZARAFA/gateway.log $ZARAFA/ical.log \
$ZARAFA/licensed.log $ZARAFA/monitor.log $ZARAFA/search.log $ZARAFA/server.log $ZARAFA/spooler.log'
alias tzar='tail -f $LOG/auth.log $LOG/syslog $ZARAFA/degent.log $ZARAFA/gateway.log $ZARAFA/ical.log \
$ZARAFA/licensed.log $ZARAFA/monitor.log $ZARAFA/search.log $ZARAFA/server.log $ZARAFA/spooler.log'
alias tmail='tail -f $LOG/auth.log $LOG/syslog $LOG/mail.log $LOG/fetchmail $LOG/procmail.log '
alias twww='tail -f $LOG/auth.log $LOG/syslog $APACHE/access.log $APACHE/error.log \
$APACHE/other_vhosts_access.log $APACHE/ssl_access.log'
alias tsys='tail -f $LOG/auth.log $LOG/syslog'

- Fetchmail Fehler im Log

Unable to open logfile '/var/log/zarafa/dagent.log' as user 'fetchmail'
Not enough permissions to append logfile '/var/log/zarafa/dagent.log'. Reverting to stderr.
usermod -G mail fetchmail
chown -R zarafa.mail /var/log/zarafa
chmod 755 /var/log/zarafa
chmod -R 660 /var/log/zarafa/*

- Zarafa LOGs überwachen

cd /var/log/zarafa
tail -f dagent.log presence.log spooler.log server.log search.log monitor.log gateway.log ical.log
Seitenanfang

sonstiges

Change language of default mapi folders
Configure language on Debian based distributions

- character_set der MySQL Datenbank prüfen

mysql -u root -p zarafa
mysql> SHOW VARIABLES LIKE "character_set%";

System Debian 6 64Bit (Squeeze) mit Zarafa Community Ed. 7.0.1-28479

Fehler: Webmail Login nicht möglich "Unknown MAPI Error: MAPI_E_NOT_FOUND"
Lösung: der Mailstore wurde nicht angelegt, kann mit folgenden Befehl nachgeholt werden

zarafa-admin --create-store loginname

oder die Datei bearbeiten

#/etc/zarafa/userscripts/createuser.d/00createstore
...
# zarafa-admin --utf8 --create-store "${ZARAFA_USER}" --lang "${ZARAFA_LANG}"
zarafa-admin --create-store "${ZARAFA_USER}" --lang "${ZARAFA_LANG}"

Fehler: im Webaccess werden Kalender und Kontakte ale eMail-Liste angezeigt
Lösung: bereinigen und Cache löschen

zarafa-admin --purge-deferred
zarafa-admin --clear-cache

Fehler: Fetchmail Access denied or Connection failed, using socket: 'file:///var/run/zarafa', error code: 0x80040111
Lösung:Fetchmail als Benutzer hinzufügen

# /etc/zarafa/server.cfg
...
local_admin_users = root fetchmail

Fehler: im Webaccess werden keine Umlaute gezeigt
Lösung: wie folgt

#/etc/apache2/envvars
...
export LANG="de_DE.UTF-8"
#/etc/init.d/apache2
...
# ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
ENV="env -i LANG=de_DE.UTF-8 PATH=/usr/local/bin:/usr/bin:/bin"
/etc/init.d/apache2 restart
#/etc/default/zarafa
...
# ZARAFA_LOCALE=C
ZARAFA_LOCALE=de_DE.UTF-8
# ZARAFA_USERSCRIPT_LOCALE=C
ZARAFA_USERSCRIPT_LOCALE="de_DE.UTF-8"
/etc/init.d/zarafa-server restart
/etc/zarafa/userscripts/users_common.sh
...
export LC_ALL="de_DE.UTF-8"

nach den Änderungen die Benutzer löschen, bei den die Umlaute im Webaccess und Outlook nicht richtig angezeigt werden und diese dann neu anlegen.

zarafa-admin -d LoginName
zarafa-admin --list-orphans
zarafa-admin --remove-store GUID
zarafa-admin -c Loginname -p Passwort -e eMailAdresse -f "Vor Nachname"

Fehler: beim Aufruf von Webaccess oder Webapp PHP mapi extension not found
Lösung: kontrollieren, ob das Paket php5-mapi in der passenden Version installiert ist und das Apache auch die Mapi mit laden kann.

ln -s /etc/php5/conf.d/20-zarafa.ini /etc/php5/apache2/conf.d/

SSLv3 deaktivieren

# /etc/zarafa/server.cfg
server_ssl_protocols = !SSLv2 !SSLv3
ssl_ciphers = 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:\
ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:\
ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:\
ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:\
DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:\
DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:\
!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'
server_ssl_prefer_server_ciphers = yes
# /etc/zarafa/gateway.cfg
ssl_protocols = !SSLv2 !SSLv3
ssl_ciphers = 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:\
ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:\
ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:\
ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:\
DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:\
DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:\
!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'
ssl_prefer_server_ciphers = yes
# /etc/zarafa/ical.cfg
ssl_protocols = !SSLv2 !SSLv3
ssl_ciphers = 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:\
ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:\
ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:\
ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:\
DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:\
DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:\
!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'
ssl_prefer_server_ciphers = yes