mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-20 06:08:35 +02:00
Postfix Autoreply plugin is not a real plugin... I've begun the conversion but it will cause a modification into the SQL schema and I don't know how to handle migrations yet...
76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Postfix auto-replies plugin.
|
|
|
|
This module provides a way to integrate MailNG auto-reply
|
|
functionality into Postfix.
|
|
|
|
"""
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext as _
|
|
from mailng.lib import events
|
|
from mailng import main
|
|
from models import Transport, Alias
|
|
|
|
def init():
|
|
events.register("CreateDomain", onCreateDomain)
|
|
events.register("DeleteDomain", onDeleteDomain)
|
|
events.register("CreateMailbox", onCreateMailbox)
|
|
events.register("DeleteMailbox", onDeleteMailbox)
|
|
events.register("ModifyMailbox", onModifyMailbox)
|
|
|
|
events.register("UserMenuDisplay", menu)
|
|
|
|
def urls():
|
|
return ()
|
|
|
|
def menu(**kwargs):
|
|
if kwargs["target"] != "user_menu_bar":
|
|
return []
|
|
return [
|
|
{"name" : "autoreply",
|
|
"url" : reverse(main.views.autoreply),
|
|
"img" : "/static/pics/auto-reply.png",
|
|
"label" : _("Auto-reply message")}
|
|
]
|
|
|
|
def onCreateDomain(**kwargs):
|
|
dom = kwargs["dom"]
|
|
transport = Transport()
|
|
transport.domain = "autoreply.%s" % dom.name
|
|
transport.method = "autoreply:"
|
|
transport.save()
|
|
|
|
def onDeleteDomain(**kwargs):
|
|
dom = kwargs["dom"]
|
|
trans = Transport.objects.get(domain="autoreply.%s" % dom.name)
|
|
trans.delete()
|
|
|
|
def onCreateMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
alias = Alias()
|
|
alias.full_address = mbox.full_address
|
|
alias.autoreply_address = \
|
|
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
|
|
alias.save()
|
|
|
|
def onDeleteMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
try:
|
|
alias = Alias.objects.get(full_address=mbox.full_address)
|
|
alias.delete()
|
|
except Alias.DoesNotExist:
|
|
pass
|
|
|
|
def onModifyMailbox(**kwargs):
|
|
mbox = kwargs["mbox"]
|
|
oldmbox = kwargs["oldmbox"]
|
|
if oldmbox.full_address == mbox.full_address:
|
|
return
|
|
alias = Alias.objects.get(full_address=oldmbox.full_address)
|
|
alias.full_address = mbox.full_address
|
|
alias.autoreply_address = \
|
|
"%s@autoreply.%s" % (mbox.full_address, mbox.domain.name)
|
|
alias.save()
|