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.
postfixadminWir 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"
Klären, welche Berechtigungen für das Verzeichnis und den Socket notwendig sind. Im Standard sind die Einstellungen des Sockets 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/socketcheck_policy_service inet:127.0.0.1:10023Trainieren 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 logchown -R root.www-data /var/www/vhosts/mail.pinneberg.freifunk.net
baikal.pinneberg.freifunk.net laufenphp-dom (php7.0-xml) benötigt