Für Tips siehe auch: https://www.debinux.de/2015/05/mailserver-from-scratch-debian-8/,
zum Testen eignet sich auch das Programm swaks
sehr gut.
<gate>.ffpi
# /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:
myhostname = <gate>.ffpi mydestination = <gate>.pinneberg.freifunk.net, <gate>.ffpi, localhost.ffpi, localhost relayhost = gate04.ffpi
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.
postfixadmin
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/
# 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:
# 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
Zum eleganten Verwalten der Queue wird pfqueue
verwendet.
Folgende Konfigurationsdatei ist manuell anzulegen:
# /etc/pfqueue.conf # backend_name=postfix2
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
dbconfig.inc.php
/etc/postfixadmin/config.inc.php
ist die Vorlage, geänderte Optionen werden in die neu zu erstellende Daten config.local.php
eingetragen:$CONF['encrypt']
muß korrekt eingestellt werden. Im Zusammenspiel mit Dovecot sollte md5crypt
funktionieren, als modernere Variante mit Dovecot-INtegration bietet sich dovecot:SHA256-CRYPT
an.$CONF['welcome_text']
sollte auf eine freundliche Willkommensmeldung geändert werdenPrü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.
Änderungen können ab Version 3 vorgenommen werden, dabei sind einige Regeln zu beachten:
x_
kennzeichnencreated
, modified
und active
verwenden*_struct_hook()
, in config.inc.php
ist ein Beispiel dazu, Aktivierung dann mit $CONF[*_struct_hook]
aptitude install spamassassin spamc postgrey policyd-weight
spamc
angesprochen. In dieser Konfiguration wird kein Amavis benötigt. 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}
/etc/default/spamassassin
/etc/default/postgrey
POSTGREY_OPTS="--unix=/var/spool/postfix/postgrey/socket"
POSTGREY_OPTS="--inet=10023"
srw-rw-rw-
mkdir /var/spool/postfix/postgrey chown postfix.postgrey /var/spool/postfix/postgrey chmod 770 /var/spool/postfix/postgrey
/etc/postfix/main.cf
unter smtpd_recipient_restrictions
einfügencheck_policy_service unix:postgrey/socket
check_policy_service inet:127.0.0.1:10023
Trainieren einer Mail als SPAM:
su -c "sa-learn --spam /tmp/spammail.eml" debian-spamd
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 SELECT,INSERT,UPDATE,DELETE 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.
Mit dem Plugin last_login
kann der letzte Anmeldezeitpunkt gespeichert
werden. Zu beachten, daß der Zugriff über das Dict-Modul läuft, welches
auf Datenbanktabellen INSERT- und UPDATE-berechtigungen benötigt
alter table mailbox add column x_last_login int(11) default NULL; grant insert (username, x_last_login), update (username, x_last_login) on postfixadmin.mailbox to 'dovecot'@'localhost';
Über local5
in das syslog:
log_path = syslog syslog_facility = local5 auth_verbose = yes auth_verbose_passwords = no
Local5 facility in spezielle Dateien umleiten
*.*;auth,authpriv,local5.none -/var/log/syslog # Dovecot local5.* -/var/log/dovecot.log local5.warning;local5.error;local5.crit -/var/log/dovecot-errors.log
Logfile rotieren (vermutlich noch optimierungsfähig
/var/log/dovecot*.log { missingok notifempty compress delaycompress sharedscripts postrotate doveadm log reopen endscript }
Prüfe, ob ein Benutzer existiert
doveadm auth lookup mustermann@example.com doveadm auth lookup -x service=imap mustermann@example.com
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
Informationen aus der Benutzerdatenbank abfragen
doveadm user mustermann@example.com
apt-get install php5-sqlite php5-ldap
wget https://github.com/roundcube/roundcubemail/releases/download/1.2.3/roundcubemail-1.2.3-complete.tar.gz
CREATE DATABASE roundcubemail; GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY '********';
config
-Verzeichnis nicht für alle lesbar. Da stehen Zugangsdaten für die Datenbank drin!<Directory .../roundcube/> AllowOverride All </Directory>
config.inc.php
vornehmen$config['smtp_log'] = false;
, Datensparsamkeit, logs/sendmail
soll nicht geschrieben werdenDer Roundcube-Benutzer benötigt die Berechtigung die Mailboxtabelle zu lesen und das Password-Feld zu schreiben:
GRANT SELECT, UPDATE (password) ON `postfixadmin`.`mailbox` TO 'roundcube'@'localhost'
Das Plugin wird aktiviert in der zentralen Konfigurationsdatei config.inc.php
.
in das Array $config['plugins']
wird das Plugin mit seinem Namen eingetragen.
Im Plugin-Verzeichnis wird ebenfalls eine config.inc.php
angelegt. Dazu wird die .dist
-Datei kopiert.
Kopieren die Vorlage der Konfigurationsdatei config.inc.php.dist
nach config.inc.php
.
$config['managesieve_port'] = 4109; $config['managesieve_host'] = 'localhost';
Quotas, auch ein Dovecot-Thema
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 /var/www/vhosts/mail.pinneberg.freifunk.net
Nach der dem Update sind Aufräumarbeiten notwending
root.www-data
, www-data
hat auch nur Leserechte, bis auf die Verzeichnisse temp
und log
chown -R root.www-data /var/www/vhosts/mail.pinneberg.freifunk.net
baikal.pinneberg.freifunk.net
laufenphp-dom
(php7.0-xml
) benötigt