Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mail

Mailserver

  • postfix
  • dovecot - IMAP
  • baikal - CalDAV, CardDAV
  • sieve - Filter
  • spamassassin - SPAM Abweht
  • postgrey - Greylisting
  • policyd-weight - Gewichtete Regeln, z.B. für Blacklists

Für Tips siehe auch: https://www.debinux.de/2015/05/mailserver-from-scratch-debian-8/

Mailkonfiguration auf den Gateways

/etc/mailname
<gate>.ffpi
/etc/aliases
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: hostmaster@pinneberg.freifunk.net

Die folgende Konfiguration gilt nicht für gate04, da dieser der Haupt-Mailserver ist und natürlich eine erheblich komplexere Konfiguration erfordert.

Im folgenden sind nur die anzupassenden Zeilen der Konfiguation aufgeführt:

/etc/postfix/main.cf
myhostname = <gate>.ffpi
mydestination = <gate>.pinneberg.freifunk.net, <gate>.ffpi, localhost.ffpi, localhost
relayhost = gate04.ffpi

Installation des Hauptservers

Um eine leichte Benutzerkonfiguration über ein Web-Frontend zu ermöglichen wird das Paket postfixadmin verwendet. Dieses speichert die notwendigen Datein in einer MySQL-Datenbank.

Die Datenbank bekommt später noch Zusatzfunktionen, sie wird auch von Dovecot verwendet.

TODO

Postfix

Wir verwenden eine Konfiguration mit virtuellen Benutzern.

groupadd -g 5000 vmail 
useradd -m -d /var/vmail -s /bin/false -u 5000 -g vmail vmail
chmod 2770 /var/vmail/
/etc/postfix/main.cf
# Link the mailbox uid and gid to postfix.
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
 
# Set the base address for all virtual mailboxes
virtual_mailbox_base = /var/vmail
 
# Handing off local delivery to Dovecot's LMTP, and telling it where to store mail
transport_maps = hash:/etc/postfix/transport
 
# Virtual domains, users, and aliases
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-alias-maps.cf,
        hash:/var/lib/mailman/data/virtual-mailman
 
# Handle SMTP authentication using Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes  
 
smtpd_recipient_restrictions =
        [...]
        permit_sasl_authenticated,
        [...]

Die Zustellung wird in einer eigenen Datei konfiguriert:

/etc/postfix/transport
# Teil 1: Domains
pinneberg.freifunk.net lmtp:unix:private/dovecot-lmtp
freifunk-pinneberg.de lmtp:unix:private/dovecot-lmtp
ffpi lmtp:unix:private/dovecot-lmtp
 
# Teil 2: Einzelne Benutzer
service@pinneberg.freifunk.net osticket:osTicket Support
helpdesk@pinneberg.freifunk.net osticket:osTicket Helpdesk
noc@pinneberg.freifunk.net osticket:osTicket NOC
info@pinneberg.freifunk.net osticket:osticket
 
keys@freifunk-pinneberg.de osticket:osticket

Postfixadmin

Postfixadmin ist ein Web-Frontend für die Benutzer- bzw. die Adreßverwaltung: https://mail.pinneberg.freifunk.net/postfixadmin/

Es wird das gleichnamige Debian-Paket installiert. Als Benutzer wird postfix gewählt, die Datenbank nennen wir postfixadmin.

Konfiguration über

Prüfe Datenbankeinträge:

postalias -q mustermann@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Wenn die Adresse gefunden wurde, wird 1 zurückgeliefert, ansonsten nichts.

SPAM-Abwehr

 aptitude install spamassassin spamc postgrey policyd-weight

TODO

  • spamassassin
    • Einbau als Content-Filter, Spamassassin läuft als Daemon im Hintergrund und wird bei Bedarf von spamc angesprochen. In dieser Konfiguration wird kein Amavis benötigt.
      /etc/postfix/master.cf
      smtp      inet  n       -       -       -       -       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}
    • aktivieren über /etc/default/spamassassin
  • postgrey
    • /etc/default/postgrey
      • mit Socket: POSTGREY_OPTS="--unix=/var/spool/postfix/postgrey/socket"
      • mit TCP: POSTGREY_OPTS="--inet=10023"
    • Frage: ist ein Socket besser, oder eine IP-Adresse?
      • Antwort: Der Socket hat viel weniger Overhead. Aber Zugriffsrechte beachten.
    • Falls mit Socket, Verzeichnis anlegen, falls noch nicht existent. TODO Klären, welche Berechtigungen für das Verzeichnis und den Socket notwendig sind.
      mkdir /var/spool/postfix/postgrey
      chown postfix /var/spool/postfix/postgrey
      • postgrey neu starten, damit der Socket aktiviert wird
    • Zeile in /etc/postfix/main.cf unter smtpd_recipient_restrictions einfügen
      • mit Socket: check_policy_service unix:postgrey/socket
      • mit TCP: check_policy_service inet:127.0.0.1:10023
  • policyd-weight

Trainieren einer Mail als SPAM:

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

Dovecot

  • IMAP-Server
  • Benutzerverweltung auch für Postfix
  • Filterregeln mit Sieve
aptitude install dovecot-imapd dovecot-lmtp dovecot-mysql dovecot-pop3d \
    dovecot-sieve dovecot-managesieved
CREATE USER 'dovecot'@'localhost' IDENTIFIED BY 'DOVECOTPASS';
GRANT SELECT ON postfixadmin.mailbox TO 'dovecot'@'localhost';
GRANT ALL ON postfixadmin.quota2 TO 'dovecot'@'localhost';

Im folgenden sind nur die Änderungen an den Dateien dokumentiert. Die Aufstellung ist momentan nicht endgültig überprüft und vermutlich auch noch unvollständig.

Dovecot Konfigurationdsdateien

Protokollierung

Über local5 in das syslog:

10-logging.conf
log_path = syslog
syslog_facility = local5
auth_verbose = yes
auth_verbose_passwords = no

Local5 facility in spezielle Dateien umleiten

/etc/rsyslog.conf
*.*;auth,authpriv,local5.none              -/var/log/syslog
 
# Dovecot
local5.*                                        -/var/log/dovecot.log
local5.warning;local5.error;local5.crit         -/var/log/dovecot-errors.log

Tests

Prüfe, ob die Kennwortabfrage mit der MySQL-Datenbank funktioniert:

doveadm auth test mustermann@example.com

Einen Passwort-Hash kann man erzeugen mit

dovecot pw -s MD5-CRYPT

Roundcube

  • Web-Frontend
  • Nützliche Pakete
    apt-get install php5-sqlite php5-ldap 
  • Paket herunterladen
    wget https://github.com/roundcube/roundcubemail/releases/download/1.2.3/roundcubemail-1.2.3-complete.tar.gz
  • Datenbank einrichten
    CREATE DATABASE roundcubemail;
    GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY '********';
  • Installer-Verzeichnis aufrufen
  • Berechtigungen des Gesantsystems einstellen
    • Konfigurationsdateien im config-Verzeichnis nicht für alle lesbar. Da stehen Zugangsdaten für die Datenbank drin!
  • Plugins aktivieren: Password, Managesieve
  • Optional Kalender
  • Konfiguration des virtuellen Servers anpassen
    <Directory .../roundcube/>
      AllowOverride All
    </Directory>
  • Einstellungen in der Konfigurationsdatei config.inc.php vornehmen
    • $config['smtp_log'] = false;, Datensparsamkeit, logs/sendmail soll nicht geschrieben werden

TODO Quotas, auch ein Dovecot-Thema

Upgrade

Backup des Programmverzeichnisses

tar cjf /var/backups/roundcube_2016-12-09.tar.bz2 -C /var/www/vhosts mail.pinneberg.freifunk.net

Herunterladen der neuen Version

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
cd roundcubemail-1.2.3
bin/installto.sh <Installationspfad>

Nach der dem Update sind Aufräumarbeiten notwending

  • Berechtigungen korrigieren
    • Benutzer einstellen: root.www-data, www-data hat auch nur Leserechte, bis auf die Verzeichnisse temp und log
    • Dateien im config-Verzeichnis

Baikal

TODO

  • Zentraler Speicher für Adressen und Kalender
  • soll unter baikal.pinneberg.freifunk.net laufen
mail.txt · Zuletzt geändert: 19.01.2017 19:17 von havelock