ISP ähnliche Mailverwaltung einrichten

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




virtuelle Accounts?

Je mehr Domains man selbst verwalten muss, desto mehr Anwender müssten auch auf dem System angelegt werden, wenn jeder auch einen Mailaccount möchte. Möchte man darüber hinaus noch mehrere Benutzer pro Domain, so wird das irgendwann sehr unübersichtlich. Dafür bietet Postifx die Möglichkeit der virtuellen Accounts. Ein virtueller Account ist ein zwar existierender Account aber eben kein wirklicher Systemaccount. Lediglich Postfix kennt den Account. EMails werden in das jeweilige Postfach einsortiert, aber der Anwender hat sonst mit dem System nichts zu tun. Zusätzlich kann später beim Anlegen der einzelnen Domain-Accounts noch gewählt werden, ob auf Spam gecheckt werden soll oder nicht.

Postfix konfigurieren – main.cf

Die main.cf ist die zentrale Konfigurationsdatei. Hier müssen lediglich ein paar Zeilen eingefügt werden.

virtual_transport = virtual
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_mailbox_domains = hash:/etc/postfix/virtual_domains
virtual_alias_maps = hash:/etc/postfix/virtual_aliasmaps
virtual_maps = hash:/etc/postfix/virtual
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
transport_maps = hash:/etc/postfix/transport

Zunächst wird festgelegt, dass der Transport „auch“ virtuell vollzogen wird. Das Stammverzeichnis der vmail-Accounts ist in unserem Falle /home/vmail. virtual_mailbox beinhaltet die einzelnen Zuordnungen der virtuellen Accounts zu den Accountverzeichnissen auf der Festplatte. virtual_domains beinhaltet die einzelnen Domains, die angenommen werden. Hier können auch Beschränkungen zugeordnet werden. virtual_aliasmaps beinhaltet Alias-Zuordnungen, die auf andere Accounts weiterleiten. transport beinhaltet die Art des Transportes, also was mit der Mail passieren soll.

virtual_domains

Um alle Mails an eine bestimmte Domain anzunehmen, muss diese zunächst „freigeschaltet“ werden. Der Eintrag

server-wissen.de anything

nimmt alle Mails an.

virtual_mailbox

Hier wird festgelegt, wo die Mail der einzelnen Accounts einsortiert werden sollen. Der Eintrag

admin@server-wissen.de server-wissen.de/admin/Maildir/

legt fest, dass das Maildir-Verzeichnis für den User [email]admin@server-wissen.de[/email] auf /home/vmail/server-wissen.de/admin/Maildir zeigt.

virtual_aliasmaps

Um nicht für jeden Account auch gleich eine Mailbox zu haben, kann man Aliase anlegen. Ein Alias ist eine Name, der zwar gültig ist, die Mails dann aber an einen anderen existierenden Account weitergibt. Der Eintrag

postmaster@server-wissen.de admin@server-wissen.de

gibt sämtliche Mails an postmaster weiter an den Account admin.

Virtueller Catch-All mit Postfix

In der virtual_aliasmap kann man auch Catch-All Zustellungen hinterlegen. Catch-All bezeichnet ein Postfach, dass sämtlich für eine Domain gerichtete EMails annimmt. Einen Catch-All definiert man mit folgendem Eintrag:

@server-wissen.de admin@server-wissen.de

Hier werden dann sämtliche EMails an [email]admin@server-wissen.de[/email] zugestellt.

Verteilerlisten

Auch Verteilerlisten lassen sich in der virtual_aliasmap realisieren. Folgender Eintrag

liste@server-wissen.de admin@server-wissen.de, office@server-wissen.de

realisiert eine kleine Verteilerliste. EMails an die EMail Adresse [email]liste@server-wissen.de[/email] werden an die Postfächer [email]admin@server-wissen.de[/email] und [email]office@server-wissen.de[/email] zugestellt.

transport

Hier kann ein differierender Transporttyp angegeben werden. Die hilft später zur Spam-Überprüfung. Der Eintrag

server-wissen.de vprocmailspam:

sucht den dazugehörigen Eintrag aus der master.cf und führt die darin stehende Anweisung aus.

master.cf

Um später einzelne Accounts auf Spam checken lassen zu können und manche nicht, kann man hier zwei Einträge anlegen, die evtl. so aussehen könnten:

vprocmailspam unix - n n - - pipe flags=R user=vmail argv=/usr/bin/procmail -t -m \
/etc/vprocmailrcspam ${user} ${nexthop} ${sender} ${recipient}
vprocmail unix - n n - - pipe flags=R user=vmail argv=/usr/bin/procmail -t -m \
/etc/vprocmailrc ${user} ${nexthop} ${sender} ${recipient}

Procmail wird benötigt

/etc/vprocmail Ohne das Scannen auf Spam direkt weitergeben z.B. so:

PATH=/usr/bin:/bin:/usr/lib/cyrus
SHELL=/bin/sh DELIVER=/etc/postfix/vdeliver
LOGFILE=/var/log/vprocmail.log

:0
| ${DELIVER} $1 $2 $3 $4 $5 $6 $7 $8 $9 $10

Falls auf Spam gescannt werden soll, könnte die Konfigurationsdatei /etc/vprocmailrcspam evtl. so lauten:

PATH=/usr/bin:/bin:/usr/lib/cyrus
SHELL=/bin/sh
DELIVER=/etc/postfix/vdeliver
LOGFILE=/var/log/vprocmail.log

# ====================================== SPAMFILTER ============================================
:0fw: spamassassin.lock
* < 256000
| /usr/bin/spamc

:0
* ^X-Spam-Level: ***************
| ${DELIVER} spam homeserver.de

:0
* ^X-Spam-Status: Yes
| ${DELIVER} spam homeserver.de

:0
* ^Subject.****SPAM***
| ${DELIVER} spam homeserver.de

# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped. This will re-add it.
:0
* ^^rom[ ]
{
LOG="*** Dropped F off From_ header! Fixing up. "

:0 fhw
| sed -e '1s/^/F/'
}

# ====================================== SPAMFILTER ============================================

:0
| ${DELIVER} $1 $2 $3 $4 $5 $6 $7 $8 $9 $10

Beide Dateien rufen eine weitere Datei auf – vdeliver, die die Mail dann einsortiert.

/etc/postfix/vdeliver
Wichtig: chmod 755 vdeliver

Diese Datei sortiert die Mail an den vom Transport vorgegebenen Daten ein. Der Code könnte so lauten:

#!/bin/sh
USER=$1
FOLDER=$2
MAILBOX="$FOLDER/$USER"
TIMESTAMP=`date +%Y%m%d%H%M%S`
DATUM=`date +%Y-%m-%d`
SPOOL_FILE="/tmp/$FOLDER-$USER.$TIMESTAMP.$RANDOM.spool"

# MAIL SCHREIBEN
cat > ${SPOOL_FILE}

# Extrahieren
cat ${SPOOL_FILE} | metamail -r -w -x >>/dev/null 2>>/dev/null
cat ${SPOOL_FILE} | /etc/postfix/maildrop /etc/vmaildroprc -d $USER $FOLDER
rm ${SPOOL_FILE} >>/dev/null 2>>/dev/null

Diese Datei muss ausführbar sein. Es wird das Programm maildrop benötigt, welches dann die Mail in das entsprechende Verzeichnis kopiert.

/etc/vmaildroprc

Diese Datei gibt nochmals expilzit für maildrop an, wo sie die Stammverzeichnisse befinden. Der Inhalt könnte so lauten:

DEFAULT="/home/vmail/$3/$2/Maildir"

Nun müssen noch die DBs geschrieben werden. Ich habe mir dazu ein kleines Skript geschrieben:

postmap /etc/postfix/transport
postmap /etc/postfix/virtual
postmap /etc/postfix/vmailbox
postmap /etc/postfix/vmaildomains
postmap /etc/postfix/valiasmaps
/etc/init.d/postfix reload

Somit wäre Postfix kofiguriert. Es muss noch eine Logdatei angelegt werden. Diese Datei ist in unserem Beispiel unter /var/log/vprocmail.log, sollte den User vmail haben und beschreibbar sein.

Verzeichnisse anlegen

Dies war nur die Konfiguration, nun müssen natürlich noch die Verzeichnisse angelegt werden, in die die Mail einsortiert werden sollen. Hier behelfen wir uns einiger Tools aus dem Paket Courier – welches wir auch in einer anderen Anleitung als IMAP-Server benutzen werden. Als User und Gruppe nehmen wir an, dass wir diesen vmail mit den IDs 10000. Wir legen Beispielsweise einen Account für [email]admin@server-wissen.de[/email] an. Folgender Befehl legt das Home-Verzeichnis an:

mkdir -p /home/vmail/server-wissen.de/admin && chown -R 10000:10000 /home/vmail/server-wissen.de/admin

Nun legen wir die Maildirectorys an:

maildirmake /home/vmail/server-wissen.de/admin/Maildir && chown -R 10000:10000 \
/home/vmail/server-wissen.de/admin/Maildir

Nun können Tests durchgeführt werden. Bei Fehlern in der Anleitung bitte mich kontaktieren oder im Forum schreiben. Wie immer ist diese Anleitung ohne Gewähr, ich übernehme keinerlei Haftung durch Schäden oder Problemen.



Werbung


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>