====== 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
* [[Postfix]]
* [[Dovecot]]
* [[Sieve]]
===== OpenDKIM =====
Public Key Verfahren
* Schlüsselpaar wird auf dem eigenen Mailserver erstellt
* Ausgehende Mails werden signiert mit dem privaten Schlüssel
* der öffentliche Schlüssel wird im DNS veröffentlicht
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
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/.
* Socket konfigurieren und lokale Whitelist vorbereiten
POSTGREY_OPTS="--unix=/var/spool/postfix/postgrey/socket --whitelist-clients=/etc/postgrey/whitelist_clients.local"
* Lokale Whitelist vorbereiten, hier können vom Greylisting ausgenomme //Absender// eingetragen werden. Insbesondere die lokalen Netzwerke werden hier eingetragen
# Local Whitelist
192.168.201.0/24
* Whitelist für //Empfänger// konfigurieren. Hier nehmen wir die lokalen Netzwerke aus, sowie die Postmaster- und Abuse-Adressen . Bei Bedarf können weitere Adressen eingetragen werden.
postmaster@
abuse@
* Socketumgebung vorbereiten
mkdir /var/spool/postfix/postgrey
chown postfix:postgrey /var/spool/postfix/postgrey
chmod 770 /var/spool/postfix/postgrey
* postgrey neu starten, damit der Socket aktiviert wird
/etc/init.d/postgrey restart
* Zeile in Postfix-Konfigurationsdatei einfügen
smtpd_recipient_restrictions
|...]
check_policy_service unix:postgrey/socket
* Postfix veranlassen, die Konfiguration neu zu laden
/etc/init.d/postfix reload
===== 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.
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
* ''postmap -q ...''
Dovecot
* ''doveadm ...''
Datenbank
* ''mysql postfixadmin''
===== 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.
CRON=1
OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username debian-spamd --groupname debian-spamd"
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 ====
* Das Verzeichnis ''logs'' muß durch den Webserver beschreibbar sein. U.a. werden Fehlermeldungen in die Datei ''errors.log'' geschrieben.
* Konfiguration des virtuellen Servers anpassen
AllowOverride All
* Einstellungen in der Konfigurationsdatei ''config.inc.php'' vornehmen
* ''$config['smtp_log'] = false;'', Datensparsamkeit, ''logs/smtp.log'' soll nicht geschrieben werden
==== 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.
- 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 //plugins
cp -r /tmp/roundcube-plugins/plugins/calendar .
cp -r /tmp/roundcube-plugins/plugins/libcalendaring .
- 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()''
- Konfiguration für das Kalender-Plugin anlegen
cd calendar/
cp config.inc.php.dist config.inc.php
edit config.inc.php
- 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
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 */;
- 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/).