Virtual Vacation

Aus Debacher-Wiki
Wechseln zu: Navigation, Suche

Eigentlich mag ich das überhaupt nicht, wenn ich von irgendeinem Kommunikationspartner eine der nervigen Vacation-Mails bekomme. Von daher habe ich mich auch noch nie mit der Einrichtung beschäftigt. Für ein Projekt musste das unbedingt sein, insofern soll das hier auch dokumentiert sein. Im Zusammenspiel mit Postfixadmin geht das auch recht einfach.

Die Beschreibung baut auf der Konfiguration unter Root-Server_mit_OpenSuSE_12.2/12.3 auf.

Der Text hier beschreibt eine Notlösung. Geschickter ist es die Mailverteilung an Dovecot zu übergeben, wie unter Root-Server mit OpenSuSE 13.1 beschrieben. Dovecot kann mit Vacation und generell Sieve-Filtern umgehen.

Kurs etwas zur Funktionsweise, zumindest soweit ich das verstanden habe. Postfixadmin legt immer für jedes Postfach zusätzlich einen Alias-Eintrag auf das Postfach selber an. Man kann also auch Mails an ein richtiges Postfach immer weiterleiten. Für das Vacation-Tool wird dann bei Bedarf ein Alias-Eintrag angelegt mit einer speziellen Vacation-Domain (im folgenden Beispiel: autoreply.meinedoamain.de). Über einen Eintrag in der Datenbank transport werden alle Mails an diese Domain an vacation: weitergeleitet. Postfix ist dann so konfiguriert Mails an vacation: an das Perlscript weiter zu leiden. Das Script schaut dann nach, ob ein Vacation-Text in der Datenbank eingetragen ist und sendet dann ggf. diesen Text.

Eine Anleitung zur Installation findet sich unter /usr/share/doc/packages/postfixadmin/VIRTUAL_VACATION/INSTALL.TXT auf dem Server.

Das in dieser Anleitung beschriebene Anlegen eines Benutzers und das Kopieren des Datei vacation.pl ist bei OpenSUSE bereits erfolgt. Eventuell müssen noch ein paar Perl-Module nachinstalliert werden, bevor das Script einsatzbereit ist. Am Anfang des Scriptes finden sich Hinweise auf die benötigten Module. Ich konnte alle per Yast einrichten.

Man muss in dem Script auch noch ein paar Einstellungen für die Datenbankkonfiguration vornehmen (ab Zeile 107):

# ========== begin configuration ==========

# IMPORTANT: If you put passwords into this script, then remember
# to restrict access to the script, so that only the vacation user
# can read it.

# db_type - uncomment one of these
#our $db_type = 'Pg';
our $db_type = 'mysql';

# leave empty for connection via UNIX socket
our $db_host = ;

# connection details
our $db_username = 'postfix';
our $db_password = 'geheim';
our $db_name     = 'postfix'; 

our $vacation_domain = 'autoreply.meinedomain.de';


Für die wenigen noch notwendigen Schritte muss man sich eine Subdomain für den Autoresponder überlegen, die lauf Beschreibung noch nicht einmal real verfügbar sein muss, also z.B. autoreply.meinedomain.de

In der Datei /etc/postfix/transport legt man für diese Daomain einen Eintrag an (die Datei besteht bei mir ansonsten nur aus Kommentaren):

autoreply.meinedomain.de   vacation:

Mittels

postmap /etc/postfix/transport

erzeugt man dann die notwendige Hash-Datei.

Nun muss man noch die Datei /etc/postfix/master.cf für diesen neuen Transportweg erweitern um die Zeilen:

#vacation, manuelle Ergaenzung für das Script vacation.pl von postfixadmin
vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}

Nach einem

postfix reload

ist die eigentliche Konfiguration von Postfix abgeschlossen. Was nun noch fehlt ist die Möglichkeit per Postfixadmin die Vacationmeldung zu konfigurieren. Dazu muss man in der Datei /srv/www/htdocs/postfixadmin/config.inc.php zwei Änderungen vornehmen (hier ab Zeile 209):

// Virtual Vacation
// If you want to use virtual vacation for you mailbox users set this to 'YES'.
// NOTE: Make sure that you install the vacation module. (See VIRTUAL-VACATION/)
$CONF['vacation'] = 'YES';
// This is the autoreply domain that you will need to set in your Postfix
// transport maps to handle virtual vacations. It does not need to be a
// real domain (i.e. you don't need to setup DNS for it).
$CONF['vacation_domain'] = 'autoreply.meinedomain.de';

Danach steht einem Mailbenutzer in der Oberfläche von Postfixadmin ein zusätzlicher Menüpunkt zur Verfügung.