Inhaltsverzeichnis

Mailserver

Für Informationen zu Mail für Endanwender siehe: Mail

Hinweise zur Installation eines Servers sind zu finden unter: https://wiki.pinneberg.freifunk.net/mail

OpenDKIM

Public Key Verfahren

Vorarbeiten

apt-get install opendkim opendkim-tools
mkdir /etc/opendkim
chmod 750 /etc/opendkim
chown opendkim:opendkim /etc/opendkim
mkdir /etc/opendkim/keys
chmod 700 /etc/opendkim/keys
chown opendkim:opendkim /etc/opendkim/keys

Schlüssel erstellen

cd /etc/opendkim/keys
opendkim-genkey -d example.com -b 2048 -r -s 202410

Tabellen anlegen

cd /etc/opendkim
touch trusted key.table signing.table
chmod 640 trusted key.table signing.table

DNS-Server: Zonendatei anpassen

youselector._domainkey.yourdomain.com yourdomain.com:selector:/etc/opendkim/keys/domain.private

Postfix-Integration

opendkim-Socket innerhalb des Postfix-Jails sollte oben schon geschehen sein.

adduser postfix opendkim
mkdir -m o-rwx /var/spool/postfix/opendkim
chown opendkim: /var/spool/postfix/opendkim
main.cf
smtpd_milters = unix:opendkim/opendkim.sock
milter_default_action = accept

Zustellung

Im Standard wird die Zustellung von Mails mit von Postfix übernommen

mailbox_command =

Um erweiterte Funktionen wie z.B. Indexerstellung bei Zustelling, Filterregeln mit Sieve und Quota-Beachtung zu erhalten, kann der Dovecot-Delivery-Agent verwendet werden.

mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"

Greylisting

Es wird postgrey mit Socket verwendet, weil dieser weniger Overhead hat als den ganzen IP-Stack auf localhost. Siehe https://postgrey.schweikert.ch/.

Filter

Filterregeln können mit Sieve verarbeitet werden. Sieve kommt als Erweiterung zu Dovecot. Wird die Mailzustellung von Postfix aus über dovecot-lda durchgeführt, kann Sieve in der zugehörigen Konfigurationsdatei 15-lda.conf aktiviert werden.

15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve
}

Die Standard-Filterregeln werden z.B. in der Datei .dovecot.sieve eingestellt.

Mit Managesieve können die Filterregeln in Roundcube über das gleichnamige Plugin verwaltet werden. Damit ist alles hübsch integriert.

Spezielle Konfigurationsoptionen können in 90-sieve.conf vorgenommen werden. Im einfachsten Fall ist Sieve aber ohne dortige Konfiguration funktionsfähig.

Tests

Postfix

Dovecot

Datenbank

Spamassassin

Die Konfiguration in /etc/spamassassin/local.cf. Aktivierung des Cron-Jobs für Regelaktualisierung über /etc/default/spamassassim. Konfiguration für spamd über /etc/default/spamd.

Spamassassin erpfiehlt einen lokalen DNS-Resolver wie z.B. unbound:

apt-get install unbound

Den resolver in /etc/resolv.conf aktivieren.

/etc/default/spamassassin
CRON=1
/etc/default/spamd
OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username debian-spamd --groupname debian-spamd"
/etc/spamassassin/local.cf
dns_available yes
rewrite_header Subject *****SPAM*****

Aktivierung über die Transportkonfiguration von Postfix in master.cf. Z.B.:

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
[...]
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Der Bayes-Filter liegt unter /var/lib/spamassassin/.spamassassin. Manuell trainieren:

su -c "sa-learn --ham /tmp/mail.eml" debian-spamd
su -c "sa-learn --spam /tmp/spam.eml" debian-spamd

Informationen anzeigen

su -c "sa-learn --dump magic" debian-spamd

Razor integrieren

apt-get install razor
su debian-spamd -s /bin/bash
razor-admin -create
razor-admin -register
  Register successful.  Identity stored in /var/lib/spamassassin/.razor/identity-xxxxxxxxxx
exit

Roundcube

Installation

Update

Backup machen

tar cjf /var/backups/roundcube_$(date -I).tar.bz2 /var/www/roundcubemail
mysqldump -u root -p roundcubemail > /var/backups/mysql/roundcubedb_$(date -I).sql

Neue Version herunterladen und auspacken

cd /tmp
wget https://github.com/roundcube/roundcubemail/releases/download/1.2.3/roundcubemail-1.2.3-complete.tar.gz
tar xzf roundcubemail-1.2.3-complete.tar.gz

Installation durchführen

cd roundcubemail-1.2.3
./bin/installto.sh /var/www/roundcubemail

Berechtigungen korrigieren

cd /var/www
chown -R 0 roundcubemail
chgrp -R www-data roundcubemail
chmod -R g-w roundcubemail
cd roundcubemail
chmod g+w temp logs
chmod g+w plugins/enigma/home

Plugin Enigma: Das Verzeichnis home muß für die Gruppe www-data beschreibbar sein.

Hinweise sind auch im ausgepacken Archiv in UPDATING vorhanden.

Migration

Roundcube-DB: Benutzer nach ID entfernen

ID herausfinden

SELECT user_id, username, mail_host, created FROM users;

Löschen

DELETE FROM users WHERE user_id=4;

Detailtabellen sind über Constraints verknüpft und werden somit automatisch bereinigt

Kalender

Das Kalender-Plugin kommt aus dem Kolab-Projekt. Allerdings unterstützt das Original keine Verbindungen zu CalDAV-Servern. Für diese Funktion ist der Fork von Awsome-IT notwendig. Die folgende Installationsanleitung bezieht sich darauf.

  1. Quellen von Git/Gitlab herunterlade
    cd /tmp
    git clone https://gitlab.awesome-it.de/kolab/roundcube-plugins.git
    cd roundcube-plugins
    git checkout feature_caldav
    cd /<path-to-roundcube>/plugins
    cp -r /tmp/roundcube-plugins/plugins/calendar .
    cp -r /tmp/roundcube-plugins/plugins/libcalendaring .
  2. Das Kalender-Plugin hat Abhängigkeiten:
    • CURL: apt-get install php-curl, darauf achten, daß der Zertifikatsherausgeber des Zielservers in /etc/ssl/certs vorhanden ist. U.a. Let's Encrypt muß dort manuell eingetragen werden.
    • SabreDAV: apt-get install php-sabre-dav
    • OAuth-Client, dieses ist der kompliziertere Teil. Das Paket aus der Distribution wird nicht erkannt. Im Verzeichnis plugins/calendar.lib kann man etwas mit dem Composer herumwürgen:
      composer remove fkooman/oauth-client
      composer require fkooman/oauth-client

      Anscheinend ist das aber noch nicht ausreichend, es gibt noch Fehler im Frontend. → TODO

    • Hinweis: Ersetze Funktion Q() durch rcube::Q()
  3. Konfiguration für das Kalender-Plugin anlegen
    cd calendar/
    cp config.inc.php.dist config.inc.php
    edit config.inc.php
  4. Kalender-Datenbanktabellen initialisieren
    mysql -u user -p roundcubemail < drivers/database/SQL/mysql.initial.sql
    mysql -u user -p roundcubemail < drivers/carddav/SQL/mysql.initial.sql

    Für Roundcube Versin > 1.3 muß eine Anpassung in mysql.initial.sql vorgenommen werden

    mysql.initial.sql
    CREATE TABLE IF NOT EXISTS `system` (
     `name` VARCHAR(64) NOT NULL,
     `value` mediumtext,
     PRIMARY KEY(`name`)
    ) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
  5. Kalender-Plugin aktivieren
    cd ../../
    edit config/config.inc.php
    • 'calendar' zu der Liste der aktiven Plugins hinzufügen
      $config['plugins'] = array(
          [...]
          'libcalendaring',
          'calendar'
        );

Mailarchiv

Betrieb eines Mailarchivs mit Mail-Piler (https://www.mailpiler.org/).