PostfixAdmin: Unterschied zwischen den Versionen
Zeile 91: | Zeile 91: | ||
$CONF['mailbox_postcreation_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postcreation.sh'; | $CONF['mailbox_postcreation_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postcreation.sh'; | ||
$CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; | $CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; | ||
$CONF['domain_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh'; | |||
?> | ?> | ||
Version vom 22. April 2016, 07:21 Uhr
Da postfixdmin seine eigene Datenbankstruktur erzeugt, sollte man es daher installieren, bevor man postfix und dovecot konfiuriert.
Es ist nicht möglich, eine bereits bestehende dovecot-Datenbank zu verwenden, falls eine solche, mit abweichender Struktur, besteht.
Installation
postfixadmin herunterladen:
wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.93/postfixadmin-2.93.tar.gz tar -xzf postfixadmin-2.93.tar.gz sudo mv postfixadmin-2.93 /var/www/postfixadmin/ sudo chown -R www-data:www-data /var/www/postfixadmin/
Datenbank anlegen:
mysql -u root -p mysql> create database if not exists postfix; mysql> create user 'postfix'@'%' identified by '<password>'; mysql> grant all privileges on postfix.* to 'postfix'@'%'; mysql> flush privileges; mysql> quit;
Konfiguration
Apache2
sudo touch /etc/apache2/conf-available/postfixadmin.conf
Alias /postfixadmin "/var/www/postfixadmin/" <Directory "/var/www/postfixadmin"> Options +FollowSymLinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/postfixadmin SetEnv HTTP_HOME /var/www/postfixadmin </Directory>
sudo a2enconf postfixadmin sudo service apache2 restart
PostfixAdmin
Konfigurationsdatei anlegen (überschreibt die Standardwerte in config.inc.php):
cd /var/www/postfixadmin/ sudo -u www-data nano config.local.php
Datei sollte etwa folgendermaßen aussehen:
<?php $CONF['configured'] = true; $CONF['setup_password'] = '<setup password>'; $CONF['default_language'] = 'de'; $CONF['database_type'] = 'mysql'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = '<database password>'; $CONF['database_name'] = 'postfix'; $CONF['admin_email'] = '<mail address>'; $CONF['encrypt'] = 'dovecot:SHA512-CRYPT'; $CONF['dovecotpw'] = "/usr/bin/doveadm pw"; $CONF['transport'] = 'YES'; $CONF['default_aliasis'] = array ( 'abuse' => '<mail address>', 'hostmaster' => '<mail address>', 'postmaster' => '<mail address>', 'webmaster' => '<mail address>' ); $CONF['password_validation'] = array( # '/regular expression/' => '$PALANG key (optional: + parameter)', '/.{5}/' => 'password_too_short 5', # minimum length 5 characters '/([a-zA-Z].*){3}/' => 'password_no_characters 3', # must contain at least 3 characters '/([0-9].*){1}/' => 'password_no_digits 1', # must contain at least 1 digit(s) ); $CONF['footer_text'] = 'Return to mail.<domain>'; $CONF['footer_link'] = 'https://mail.<domain>'; $CONF['mailbox_postcreation_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postcreation.sh'; $CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; $CONF['domain_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh'; ?>
Verzeichnisse automatisch erstellen bzw. löschen
In der Datei /var/www/postfixadmin/config.local.php folgende Zeilen einfügen:
$CONF['mailbox_postcreation_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postcreation.sh'; $CONF['mailbox_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh'; $CONF['domain_postdeletion_script'] = 'sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh';
Die Scripte dafür liegen bereits in $DOCUMENT_ROOT/ADDITIONS und müssen nur noch ins cgi-bin-Verzeichnis kopiert werden:
sudo cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh /usr/local/bin/ sudo cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /usr/local/bin/ sudo cp /var/www/postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh /usr/local/bin/ sudo chown root:vmail /usr/local/bin/postfixadmin-*-post*.sh sudo chmod 750 /usr/local/bin/postfixadmin-*-post*.sh
Datei /etc/sudoers bearbeiten (nicht direkt, sondern über visudo - macht einen Syntax-Check):
sudo visudo
Am Ende folgende Zeilen einfügen:
# Allow postfixadmin to create/delete maildirs www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postcreation.sh www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-domain-postdeletion.sh
Das erlaubt dem Benutzer www-data die hinzugefügten Skripte als Benutzer vmail ohne Passwortabfrage auszuführen.
In der Datei /usr/local/bin/postfixadmin-mailbox-postcreation.sh folgende Zeilen anpassen:
basedir=/var/vmail maildirmake.dovecot "$maildir"
In der Datei /usr/local/bin/postfixadmin-mailbox-postdeletion.sh folgende Zeilen anpassen:
basedir=/var/vmail trashbase=/var/vmail-deleted
In der Datei /usr/local/bin/postfixadmin-domain-postdeletion.sh folgende Zeilen anpassen:
basedir=/var/vmail trashbase=/var/vmail-deleted
Fetchmail
Daemon deaktivieren
In der Datei /etc/default/fetchmail folgende Zeile anpassen:
START_DAEMON=no
Danach fetchmail stoppen:
sudo /etc/init.d/fetchmail stop
Abhängigkeiten
sudo apt-get update sudo apt-get install liblockfile-simple-perl
Script fetchmail.pl
Fertiges Script von /<document root>/ADDITIONS/ nach /usr/local/bin/ kopieren:
sudo cp /var/www/postfixadmin/ADDITIONS/fetchmail.pl /usr/local/bin/ sudo chown root:vmail /usr/local/bin/fetchmail.pl sudo chmod 750 /usr/local/bin/fetchmail.pl
In der Datei fetchmail.pl folgende Werte anpassen:
# database backend $db_type = 'mysql'; # host name $db_host="10.0.0.120"; # database name $db_name="postfix"; # database username $db_username="postfix"; # database password $db_password="<password>";
Lock-Datei anlegen
sudo -u vmail mkdir /home/vmail/fetchmail/ sudo -u vmail touch /home/vmail/fetchmail/fetchmail-all.lock
Pfad zur Lock-Datei von
$run_dir="/var/run/fetchmail";
nach
$run_dir="/home/vmail/fetchmail";
ändern, da /var/run/ bei jedem Neustart geleert wird.
Cronjob anlegen
sudo -i crontab -e
*/1 * * * * sudo -H -u vmail /usr/local/bin/fetchmail.pl > /dev/null 2&>1
Probleme
Invalid query: FUNCTION postfix.FROM_BASE64 does not exist
Bei Verwendung von PHP 5.5 muss in der Datei <document root>/model/PFAHandler.php folgende Zeile (ca. Zeile 572) von
$base64_decode = "FROM_BASE64(###KEY###)";
auf
$base64_decode = "###KEY###";
ausgebessert werden.
Fetchmail funktioniert nicht
Im Script fetchmail.pl ist in der folgenden Zeile ein Fehler:
} elsif($db_type eq "mysql") { $sql_cond = "active = 't' AND unix_timestamp(now())-unix_timestamp(date)"; }
't' muss auf 1 geändert werden:
} elsif($db_type eq "mysql") { $sql_cond = "active = 1 AND unix_timestamp(now())-unix_timestamp(date)"; }
Links
http://postfixadmin.sourceforge.net/
https://blog.unterhaltungsbox.com/mailserver-mit-postfix-dovecot-postfixadmin-und-mysql/
https://www.nesono.com/book/export/html/224
http://www.bunzel.net/2012/07/30/postfixadmin-aufsetzen/
https://wiki.archlinux.org/index.php/Virtual_user_mail_system
https://wiki.easycow.de/index.php?title=Fetchmail&redirect=no
Zurück zu Mailserver einrichten