PostfixAdmin Verzeichnisverwaltung (Ubuntu 18.04): Unterschied zwischen den Versionen
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
== Verzeichnisse für die gelöschten Daten erstellen == | == Verzeichnisse für die gelöschten Daten erstellen == | ||
=== Speicherort lokal === | |||
<pre> | <pre> | ||
Zeile 10: | Zeile 12: | ||
sudo mkdir /home/vmail-deleted | sudo mkdir /home/vmail-deleted | ||
sudo chown vmail:vmail /home/vmail-deleted | sudo chown vmail:vmail /home/vmail-deleted | ||
</pre> | |||
=== Speicherort NAS === | |||
<pre> | |||
sudo mkdir /mnt/synology/mail1/maildir/vmail-deleted | |||
sudo chown vmail:vmail /mnt/synology/mail1/maildir/vmail-deleted | |||
sudo mkdir /mnt/synology/mail1/home/vmail-deleted | |||
sudo chown vmail:vmail /mnt/synology/mail1/home/vmail-deleted | |||
</pre> | </pre> | ||
== Maildir erstellen == | == Maildir erstellen == | ||
=== config.local.php === | |||
In der Datei ''/var/www/postfixadmin/config.local.php'' folgende Zeilen einfügen: | In der Datei ''/var/www/postfixadmin/config.local.php'' folgende Zeilen einfügen: | ||
<pre> | <pre> | ||
sudo vi /var/www/ | sudo vi /var/www/postfixadmin/config.local.php | ||
</pre> | </pre> | ||
Zeile 34: | Zeile 47: | ||
sudo chmod 750 /usr/local/bin/postfixadmin-*-post*.sh | sudo chmod 750 /usr/local/bin/postfixadmin-*-post*.sh | ||
</pre> | </pre> | ||
=== sudoers === | |||
Datei ''/etc/sudoers'' bearbeiten (nicht direkt, sondern über ''visudo'' - macht einen Syntax-Check): | Datei ''/etc/sudoers'' bearbeiten (nicht direkt, sondern über ''visudo'' - macht einen Syntax-Check): | ||
Zeile 48: | Zeile 63: | ||
</pre> | </pre> | ||
Das erlaubt dem Benutzer ''www-data'' die hinzugefügten Skripte als Benutzer ''vmail'' '''ohne''' Passwortabfrage auszuführen. | Das erlaubt dem Benutzer ''www-data'' die hinzugefügten Skripte als Benutzer ''vmail'' '''ohne''' Passwortabfrage auszuführen. | ||
=== postfixadmin-mailbox-postcreation.sh === | |||
In der Datei ''/usr/local/bin/postfixadmin-mailbox-postcreation.sh'' folgende Zeilen anpassen: | In der Datei ''/usr/local/bin/postfixadmin-mailbox-postcreation.sh'' folgende Zeilen anpassen: | ||
<pre> | |||
sudo vi /usr/local/bin/postfixadmin-mailbox-postcreation.sh | |||
</pre> | |||
==== Speicherort lokal ==== | |||
<pre> | <pre> | ||
basedir=/var/vmail | basedir=/var/vmail | ||
maildirmake.dovecot "$maildir" | maildirmake.dovecot "$maildir" | ||
</pre> | </pre> | ||
==== Speicherort NAS ==== | |||
<pre> | |||
basedir=/mnt/synology/mail1/maildir/vmail | |||
maildirmake.dovecot "$maildir" | |||
</pre> | |||
=== postfixadmin-mailbox-postdeletion.sh === | |||
In der Datei ''/usr/local/bin/postfixadmin-mailbox-postdeletion.sh'' folgende Zeilen anpassen: | In der Datei ''/usr/local/bin/postfixadmin-mailbox-postdeletion.sh'' folgende Zeilen anpassen: | ||
<pre> | |||
sudo vi /usr/local/bin/postfixadmin-mailbox-postdeletion.sh | |||
</pre> | |||
==== Speicherort lokal ==== | |||
<pre> | <pre> | ||
basedir=/var/vmail | basedir=/var/vmail | ||
trashbase=/var/vmail-deleted | trashbase=/var/vmail-deleted | ||
</pre> | </pre> | ||
==== Speicherort NAS ==== | |||
<pre> | |||
basedir=/mnt/synology/mail1/maildir/vmail | |||
trashbase=/mnt/synology/mail1/maildir/vmail-deleted | |||
</pre> | |||
=== postfixadmin-domain-postdeletion.sh === | |||
In der Datei ''/usr/local/bin/postfixadmin-domain-postdeletion.sh'' folgende Zeilen anpassen: | In der Datei ''/usr/local/bin/postfixadmin-domain-postdeletion.sh'' folgende Zeilen anpassen: | ||
<pre> | |||
sudo vi /usr/local/bin/postfixadmin-domain-postdeletion.sh | |||
</pre> | |||
==== Speicherort lokal ==== | |||
<pre> | <pre> | ||
basedir=/var/vmail | basedir=/var/vmail | ||
trashbase=/var/vmail-deleted | trashbase=/var/vmail-deleted | ||
</pre> | |||
==== Speicherort NAS ==== | |||
<pre> | |||
basedir=/mnt/synology/mail1/maildir/vmail | |||
trashbase=/mnt/synology/mail1/maildir/vmail-deleted | |||
</pre> | </pre> | ||
Zeile 71: | Zeile 134: | ||
Zuerst legen wir ein Verzeignis für die Logdatei an: | Zuerst legen wir ein Verzeignis für die Logdatei an: | ||
=== Speicherort lokal === | |||
<pre> | <pre> | ||
sudo mkdir -p /home/vmail/logs/ | sudo mkdir -p /home/vmail/logs/ | ||
Zeile 76: | Zeile 142: | ||
</pre> | </pre> | ||
=== | === Speicherort NAS === | ||
<pre> | |||
sudo mkdir -p /mnt/synology/mail1/home/vmail/logs/ | |||
sudo chown -R vmail:vmail /mnt/synology/mail1/home/vmail/ | |||
</pre> | |||
=== Skript zum Anlegen === | |||
Ähnlich dem ursprünglichen Skript ''postfixadmin-mailbox-postcreation.sh'' legen wir ein neues Skipt ''postfixadmin-homedir-postcreation.sh'' an: | Ähnlich dem ursprünglichen Skript ''postfixadmin-mailbox-postcreation.sh'' legen wir ein neues Skipt ''postfixadmin-homedir-postcreation.sh'' an: | ||
Zeile 84: | Zeile 157: | ||
Dieses neue Skript wird mit folgenden Inhalt befüllt: | Dieses neue Skript wird mit folgenden Inhalt befüllt: | ||
==== Speicherort lokal ==== | |||
<pre> | |||
# Change this to where you keep your virtual mail users' homedirs. | |||
basedir=/home/vmail | |||
</pre> | |||
==== Speicherort NAS ==== | |||
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
# Change this to where you keep your virtual mail users' homedirs. | |||
basedir=/mnt/synology/mail1/home/vmail | |||
# Change this to where you keep your virtual mail logfiles. | # Change this to where you keep your virtual mail logfiles. | ||
errorlog= | errorlog=${basedir}/logs/error.log | ||
if [ ! -e "$basedir" ]; then | if [ ! -e "$basedir" ]; then | ||
Zeile 139: | Zeile 222: | ||
<pre> | <pre> | ||
# create home directory | # create home directory | ||
`dirname "$0"`/postfixadmin-homedir-postcreation.sh | `dirname "$0"`/postfixadmin-homedir-postcreation.sh $3 | ||
exit $? | exit $? | ||
</pre> | </pre> | ||
Zeile 151: | Zeile 234: | ||
Dieses neue Skript wird mit folgenden Inhalt befüllt: | Dieses neue Skript wird mit folgenden Inhalt befüllt: | ||
==== Speicherort lokal ==== | |||
<pre> | |||
# Change this to where you keep your virtual mail users' homedirs. | # Change this to where you keep your virtual mail users' homedirs. | ||
basedir=/home/vmail | basedir=/home/vmail | ||
Zeile 162: | Zeile 243: | ||
# Change this to where you would like deleted homedirs to reside. | # Change this to where you would like deleted homedirs to reside. | ||
trashbase=/home/vmail-deleted | trashbase=/home/vmail-deleted | ||
</pre> | |||
==== Speicherort NAS ==== | |||
<pre> | |||
#!/bin/sh | |||
# Change this to where you keep your virtual mail users' homedirs. | |||
basedir=/mnt/synology/mail1/home/vmail | |||
# Change this to where you would like deleted homedirs to reside. | |||
trashbase=/mnt/synology/mail1/home/vmail-deleted | |||
# Change this to where you keep your virtual mail logfiles. | |||
errorlog=${basedir}/logs/error.log | |||
Zeile 176: | Zeile 272: | ||
subdir=`echo "$1" | sed 's/@.*//'` | subdir=`echo "$1" | sed 's/@.*//'` | ||
homedir="${basedir}/${subdir}" | homedir="${basedir}/$2/${subdir}" | ||
trashdir="${trashbase}/`date +%F_%T`_${subdir}" | trashdir="${trashbase}/$2/`date +%F_%T`_${subdir}" | ||
parent=`dirname "$trashdir"` | parent=`dirname "$trashdir"` | ||
Zeile 227: | Zeile 323: | ||
# delete home directory | # delete home directory | ||
`dirname "$0"`/postfixadmin-homedir-postdeletion.sh | `dirname "$0"`/postfixadmin-homedir-postdeletion.sh $1 $2 | ||
exit $? | exit $? | ||
</pre> | </pre> |
Aktuelle Version vom 6. Juli 2020, 20:05 Uhr
Voraussetzungen
Der Benutzer vmail muss bereits angelegt sein - siehe dazu die Seite Dovecot
Verzeichnisse für die gelöschten Daten erstellen
Speicherort lokal
sudo mkdir /var/vmail-deleted sudo chown vmail:vmail /var/vmail-deleted sudo mkdir /home/vmail-deleted sudo chown vmail:vmail /home/vmail-deleted
Speicherort NAS
sudo mkdir /mnt/synology/mail1/maildir/vmail-deleted sudo chown vmail:vmail /mnt/synology/mail1/maildir/vmail-deleted sudo mkdir /mnt/synology/mail1/home/vmail-deleted sudo chown vmail:vmail /mnt/synology/mail1/home/vmail-deleted
Maildir erstellen
config.local.php
In der Datei /var/www/postfixadmin/config.local.php folgende Zeilen einfügen:
sudo vi /var/www/postfixadmin/config.local.php
$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
sudoers
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.
postfixadmin-mailbox-postcreation.sh
In der Datei /usr/local/bin/postfixadmin-mailbox-postcreation.sh folgende Zeilen anpassen:
sudo vi /usr/local/bin/postfixadmin-mailbox-postcreation.sh
Speicherort lokal
basedir=/var/vmail maildirmake.dovecot "$maildir"
Speicherort NAS
basedir=/mnt/synology/mail1/maildir/vmail maildirmake.dovecot "$maildir"
postfixadmin-mailbox-postdeletion.sh
In der Datei /usr/local/bin/postfixadmin-mailbox-postdeletion.sh folgende Zeilen anpassen:
sudo vi /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
Speicherort lokal
basedir=/var/vmail trashbase=/var/vmail-deleted
Speicherort NAS
basedir=/mnt/synology/mail1/maildir/vmail trashbase=/mnt/synology/mail1/maildir/vmail-deleted
postfixadmin-domain-postdeletion.sh
In der Datei /usr/local/bin/postfixadmin-domain-postdeletion.sh folgende Zeilen anpassen:
sudo vi /usr/local/bin/postfixadmin-domain-postdeletion.sh
Speicherort lokal
basedir=/var/vmail trashbase=/var/vmail-deleted
Speicherort NAS
basedir=/mnt/synology/mail1/maildir/vmail trashbase=/mnt/synology/mail1/maildir/vmail-deleted
Homedir
Zuerst legen wir ein Verzeignis für die Logdatei an:
Speicherort lokal
sudo mkdir -p /home/vmail/logs/ sudo chown -R vmail:vmail /home/vmail/
Speicherort NAS
sudo mkdir -p /mnt/synology/mail1/home/vmail/logs/ sudo chown -R vmail:vmail /mnt/synology/mail1/home/vmail/
Skript zum Anlegen
Ähnlich dem ursprünglichen Skript postfixadmin-mailbox-postcreation.sh legen wir ein neues Skipt postfixadmin-homedir-postcreation.sh an:
sudo vi /usr/local/bin/postfixadmin-homedir-postcreation.sh
Dieses neue Skript wird mit folgenden Inhalt befüllt:
Speicherort lokal
# Change this to where you keep your virtual mail users' homedirs. basedir=/home/vmail
Speicherort NAS
#!/bin/sh # Change this to where you keep your virtual mail users' homedirs. basedir=/mnt/synology/mail1/home/vmail # Change this to where you keep your virtual mail logfiles. errorlog=${basedir}/logs/error.log if [ ! -e "$basedir" ]; then echo "$0: basedir '$basedir' does not exist; bailing out." >> $errorlog exit 1 fi # create directory /home/vmail/<new user>/ current="${basedir}/$1" mkdir -p "${current}" if [ $? -ne 0 ]; then echo "$0: mkdir -p '$current' returned non-zero; bailing out." >> $errorlog exit 1 fi # create directory /home/vmail/<new user>/sieve/ current="${current}/sieve" mkdir -p "${current}" if [ $? -ne 0 ]; then echo "$0: mkdir -p '$current' returned non-zero; bailing out." >> $errorlog exit 1 fi # create directory /home/vmail/<new user>/sieve/scripts/ current="${current}/scripts" mkdir -p "${current}" if [ $? -ne 0 ]; then echo "$0: mkdir -p '$current' returned non-zero; bailing out." >> $errorlog exit 1 fi exit 0
Das Skript noch ausführbar machen und Besitzer ändern:
sudo chmod 750 /usr/local/bin/postfixadmin-homedir-postcreation.sh sudo chown root:vmail /usr/local/bin/postfixadmin-homedir-postcreation.sh
Das fertige Skript wird dann im ursprünglichen Skript postfixadmin-mailbox-postcreation.sh aufgerufen:
sudo vi /usr/local/bin/postfixadmin-mailbox-postcreation.sh
Dazu am Ende der Datei anstelle von exit 0 folgende Zeilen einfügen:
# create home directory `dirname "$0"`/postfixadmin-homedir-postcreation.sh $3 exit $?
löschen
Ähnlich dem ursprünglichen Skript postfixadmin-mailbox-postdeletion.sh legen wir ein neues Skipt postfixadmin-homedir-postdeletion.sh an:
sudo vi /usr/local/bin/postfixadmin-homedir-postdeletion.sh
Dieses neue Skript wird mit folgenden Inhalt befüllt:
Speicherort lokal
# Change this to where you keep your virtual mail users' homedirs. basedir=/home/vmail # Change this to where you would like deleted homedirs to reside. trashbase=/home/vmail-deleted
Speicherort NAS
#!/bin/sh # Change this to where you keep your virtual mail users' homedirs. basedir=/mnt/synology/mail1/home/vmail # Change this to where you would like deleted homedirs to reside. trashbase=/mnt/synology/mail1/home/vmail-deleted # Change this to where you keep your virtual mail logfiles. errorlog=${basedir}/logs/error.log if [ ! -e "$trashbase" ]; then echo "trashbase '$trashbase' does not exist; bailing out." >> $errorlog exit 1 fi if [ `echo $1 | fgrep '..'` ]; then echo "First argument contained a double-dot sequence; bailing out." >> $errorlog exit 1 fi subdir=`echo "$1" | sed 's/@.*//'` homedir="${basedir}/$2/${subdir}" trashdir="${trashbase}/$2/`date +%F_%T`_${subdir}" parent=`dirname "$trashdir"` if [ ! -d "$parent" ]; then if [ -e "$parent" ]; then echo "Strainge - directory '$parent' exists, but is not a directory." >> $errorlog echo "Bailing out." >> $basedir/logs/error.log exit 1 else mkdir -p "$parent" if [ $? -ne 0 ]; then echo "mkdir -p '$parent' returned non-zero; bailing out." >> $errorlog exit 1 fi fi fi if [ ! -e "$homedir" ]; then echo "homedir '$homedir' does not exist; nothing to do." >> $errorlog exit 1 fi if [ -e "$trashdir" ]; then echo "homedir '$trashdir' already exists; bailing out." >> $errorlog exit 1 fi mv $homedir $trashdir exit $?
Das Skript noch ausführbar machen und Benutzer ändern:
sudo chmod 750 /usr/local/bin/postfixadmin-homedir-postdeletion.sh sudo chown root:vmail /usr/local/bin/postfixadmin-homedir-postdeletion.sh
Das fertige Skript wird dann im ursprünglichen Skript postfixadmin-mailbox-postdeletion.sh aufgerufen:
sudo vi /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
Dazum am Ende der Datei anstelle von exit $? folgende Zeilen einfügen:
if [ $? -ne 0 ]; then echo "mv $maildir $trashdir returned non-zero; bailing out." exit 1 fi # delete home directory `dirname "$0"`/postfixadmin-homedir-postdeletion.sh $1 $2 exit $?
Zurück zu PostfixAdmin