Postfix, PostfixAdmin und Vacation

Domi

Member
Moin Leute, ich habe da mal eine besondere Frage :)
Ich habe ein Postfix auf meinem vServer installiert der mit MySQL zusammen arbeitet. Generell mache ich die Einrichtung im Moment via PostfixAdmin, alternativ kann ich aber auch diverse Daten direkt in die SQL Datenbank schreiben durch phpmyadmin oder was es so gibt.

PostfixAdmin ist im Moment nur so lange installiert, bis ich mir selbst auf PHP Basis etwas gebaut habe :D

Zurück zu meiner Frage und der allgemeinen Angelegenheit.
Die Abwesenheits-Info.. ich habe mir mit PostfixAdmin mal eine Notiz erstellt und gesehen das er mir das in der Tabelle "vacation" einträgt. Hat also funktioniert. Zusätzlich trägt PostfixAdmin einen weiteren alias ein (warum auch immer), aber Postfix muss ja jetzt noch wissen das er prüfen soll ob es eine vacation gibt und wie er darauf reagieren muss / soll.

Wie stelle ich das denn an?
Im Prinzip muss Postfix ja folgendes ausführen,
Code:
SELECT subject, body FROM vacation WHERE email=xxx' AND active='1'
und dann darauf antworten. Aber das wie wäre jetzt gut zu erfahren.

Mit google hatte ich schon mal heraus gefunden, wie ich vacation überhaupt im PostfixAdmin aktivieren kann und das man wohl noch ein Script benötigt..
-> Anleitung 1

aber bevor ich ein fremdes Script einbinde, dass ich nicht kenne.. frage ich lieber nach ob es einfacher geht und ob man mir verraten würde, wie :)

Gruß, Domi
 
Du kannst auch ein eigenes Script schreiben ;)
Aber das Script ist die Komponente, die die Abwesenheitsnachricht sendet.
 
Du kannst auch ein eigenes Script schreiben ;) Aber das Script ist die Komponente, die die Abwesenheitsnachricht sendet.
Öhm, ne kann ich nicht.. Es liegt nicht am wollen, sondern wirklich am können. Darum schaute ich mir das ganze ja auch an und fragte ob es auch anders geht :D
 
Hallo,

also ich habe damals als grobe Basis das hier genommen:
http://www.cplinux.de/e-mail-server/virtual-vacation-mit-postfix-und-mysql.html

Und dann die Tabelle und die Abfrage leicht angepasst.

Die entsprechende Abfrage sieht wie folgt aus:

user = postfix
password = passwort
dbname = postfix
table = vacation

#Wird mit "recipient_bcc_maps" gearbeitet:
-----------------------------------------------
#select_field = CONCAT(SUBSTRING_INDEX(email,'@',1),'#',SUBSTRING_INDEX(email,'@',-1),'@autoreply.domain.xyz')

#Löst man es mit einer weiteren "virtual_alias_map":
---------------------------------------------------------
select_field = CONCAT(email,',',SUBSTRING_INDEX(email,'@',1),'#',SUBSTRING_INDEX(email,'@',-1),'@autoreply.domain.xyz')

where_field = email
additional_conditions = and email IN (SELECT email from vacation WHERE active='Y')
hosts = 127.0.0.1


LG
 
Ah.. okay, dass werde ich mir mal anschauen :)
Ich glaube durch einen weiteren Versuch bei google habe ich sogar etwas gefunden, was mit deinem Beispiel zusammen hängt.
-> klick

Mal schauen ob ich es zum laufen bekomme. Wäre ganz gut, dann könnte ich das hinterher mit den Arbeitszeiten der Kollegen verknüpfen :D

Gruß, Domi
 
Mir ist da gerade noch eine andere Lösung eingefallen. Ich setze bei mir Dovecot 2.0.x ein und Sieve als Filtersprache. Das liefert u.a. ein Modul mit, mit dem sich Autoreplys versenden lassen. Die Verwaltung der der Sieveregeln können die User bei mir per Horde-Webinterface vornehmen.
 
Moin... Also ein Dovecot verwende ich auch, aber noch nicht die v2.0, die läuft auf einer virtualisierten Umgebung die noch nicht aktiv geschaltet ist.

Allerdings kam ich zeitlich noch nicht dazu, den weiter aufzubauen. Mein Ziel war es erst einmal soweit zu drehen das es Abwesenheitsnachrichten gibt. Da wir drei Halbtagskräfte im Büro haben, hätte ich dann in einer SQL Tabelle diese Zeiten eingetragen und via Cron-Job den Status aktiv oder inaktiv geschaltet für die Vacation, aber das ist alles noch ein Gedanke im Kopf.

Erst einmal die Vacation zum laufen bekommen.. :)
Den Status 0 oder 1 in der SQL Tabelle für Vacation kann ich dann über mehrere Wege umschalten.

Was die grobe Basis von mattis42 angeht, die er gepostet hatte.. die scheint noch nicht wieder zu funktionieren.. mal abwarten :)
 
Joa, SIEVE habe ich bei mir im Postfach aktiv.. der verschiebt gleich die Emails mit @xxx in die entsprechenden Ordner :) Ich hatte nur an einen Autoresponder gedacht, den ich mit einer 1 oder 0 in der SQL Datenbank aktivieren oder deaktivieren kann.

So bräuchte man nur über das Intranet sagen "aktivieren" oder eben nicht und gut. In der Datenbank wird auf 1 gestellt, dass heißt der Empfänger ist abwesend und schickt eine Abwesenheits-Mail raus :D

Oder kann sieve auch eine SQL Abfrage machen..? Dann wäre das natürlich auch eine Variante :)

Gruß, Domi
 
Ah.. okay, dass werde ich mir mal anschauen :)
Ich glaube durch einen weiteren Versuch bei google habe ich sogar etwas gefunden, was mit deinem Beispiel zusammen hängt.
-> klick

Jupp, düfte das gleiche sein.

Die Tabelle sieht hier wie folgt aus:

Code:
CREATE TABLE IF NOT EXISTS `vacation` (
  `email` varchar(255) NOT NULL,
  `subject` varchar(255) character set utf8 NOT NULL,
  `body` text character set utf8 NOT NULL,
  `created` date NOT NULL default '0000-00-00',
  `from_date` date NOT NULL default '0000-00-00',
  `to_date` date NOT NULL default '0000-00-00',
  `active` enum('Y','N') NOT NULL default 'Y',
  PRIMARY KEY  (`email`),
  KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Virtual Vacation';


CREATE TABLE IF NOT EXISTS `vacation_notification` (
  `on_vacation` varchar(255) character set latin1 NOT NULL,
  `notified` varchar(255) character set latin1 NOT NULL,
  `notified_at` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`on_vacation`,`notified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Virtual Vacation Notifications';

Dazu noch ein billiges Script, das die Benachrichtigungen aktiviert bzw. deaktiviert:

Code:
#!/bin/bash

echo "update vacation set active = 'Y' WHERE from_date<CURDATE() AND CURDATE()<to_date;" | mysql -uBENUTZER -pPASSWORT -D postfix

echo "update vacation set active = 'N' WHERE CURDATE()<from_date OR to_date<CURDATE();" | mysql -uBENUTZER -pPASSWORT -D postfix

echo "delete from vacation_notification WHERE on_vacation IN (SELECT email from vacation WHERE to_date<CURDATE());" | mysql -uBENUTZER -pPASSWORT -D postfix

exit 0

Wobei man das sicher besser/sauberer machen könnte (wenn man den mehr Ahnung davon hätte :D).
Ich habe das damals nur schnell zusammen gemurkst und seitdem läuft es problemlos.



LG
 
Naja, dass aktivieren und deaktivieren hätte ich über PHP gelöst.. ich glaube was mir fehlt (wenn ich das richtig verstanden habe) ist das Script, dass für mich die Email bei einer Vacation versendet. So habe ich dieses Script zumindest interpretiert, was man in den spool packen soll.

Gruß, Domi
 
Im Ordner /pfad/zu/postfixadmin/VIRTUAL_VACATION/ befindet sich eine .pl Datei, welche für dich interessant sein könnte.
 
Ahhh.. *ding*
Vielen Dank, die Datei habe ich mir gerade mal angeschaut.. ein Teil davon sieht so aus wie etwas, dass ich schon im gefunden habe. Aber mal gucken was ich so zaubern kann :)

Wenn das mit MySQL Funktioniert, brauchen meine Kollegen nur noch auf einer PHP Seite einen Harken setzen, und fertig ist :D

Gruß, Domi
 
Back
Top