PostfixAdmin Verzeichnisverwaltung (Ubuntu 18.04): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(5 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:
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 ===




Zeile 55: Zeile 72:
sudo vi /usr/local/bin/postfixadmin-mailbox-postcreation.sh
sudo vi /usr/local/bin/postfixadmin-mailbox-postcreation.sh
</pre>
</pre>
==== Speicherort lokal ====


<pre>
<pre>
Zeile 60: Zeile 79:
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:
Zeile 66: Zeile 94:
sudo vi /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
sudo vi /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
</pre>
</pre>
==== Speicherort lokal ====


<pre>
<pre>
Zeile 71: Zeile 101:
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:
Zeile 77: Zeile 116:
sudo vi /usr/local/bin/postfixadmin-domain-postdeletion.sh
sudo vi /usr/local/bin/postfixadmin-domain-postdeletion.sh
</pre>
</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 86: 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 91: Zeile 142:
</pre>
</pre>


=== anlegen ===
=== 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 99: 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=/home/vmail/logs/error.log
errorlog=${basedir}/logs/error.log
 
# Change this to where you keep your virtual mail users' homedirs.
basedir=/home/vmail


if [ ! -e "$basedir" ]; then
if [ ! -e "$basedir" ]; then
Zeile 166: Zeile 234:


Dieses neue Skript wird mit folgenden Inhalt befüllt:  
Dieses neue Skript wird mit folgenden Inhalt befüllt:  
<pre>
#!/bin/sh


# Change this to where you keep your virtual mail logfiles.
==== Speicherort lokal ====
errorlog=/home/vmail/logs/error.log


<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 177: 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





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