2003-12-21 01:17:34 +01:00
|
|
|
#! /usr/bin/env python
|
|
|
|
|
|
|
|
import os, string
|
2004-12-21 20:01:59 +01:00
|
|
|
import GVAdm
|
|
|
|
from UserDict import UserDict
|
2003-12-21 01:17:34 +01:00
|
|
|
|
2003-12-22 00:07:42 +01:00
|
|
|
execfile('gvadm.preferences')
|
2003-12-21 01:17:34 +01:00
|
|
|
|
|
|
|
# if [ -n $USERPREFIX ]; then
|
|
|
|
# USERPREFIX="usr"
|
|
|
|
# fi
|
|
|
|
|
|
|
|
# if [ $1 == "" ]; then
|
|
|
|
# echo "give <UserNumber>p<pop3Account> as parameter"
|
|
|
|
# exit
|
|
|
|
# fi
|
|
|
|
|
|
|
|
# NEWUSER="$USERPREFIX$1"
|
|
|
|
# NEWHOME="/home/mail/$NEWUSER"
|
|
|
|
# NEWPASS=$(apg -n 1 -a 1 -CL -m 8 -x 12)
|
|
|
|
# echo $NEWHOME
|
|
|
|
|
|
|
|
# adduser --home "$NEWHOME" --shell /bin/true --no-create-home --firstuid 20000 --ingroup poponly --disabled-password --disabled-login --gecos "Popuser $NEWUSER" $NEWUSER
|
|
|
|
|
|
|
|
# mkdir -p "$NEWHOME"
|
|
|
|
# chown -Rc $NEWUSER.poponly "$NEWHOME"
|
|
|
|
# echo "${NEWUSER}:${NEWPASS}" | chpasswd
|
|
|
|
|
|
|
|
# echo "Herzlich willkommen auf dem GNU-Viech" | mail -s "Willkommen auf dem GNU-Viech" ${NEWUSER}
|
|
|
|
# echo added new pop3 user $NEWUSER with password $NEWPASS
|
|
|
|
|
2004-12-21 20:01:59 +01:00
|
|
|
class MailAccount(UserDict):
|
|
|
|
def __init__(self, domain):
|
|
|
|
"Initialize a MailAccount instance for a given domain"
|
|
|
|
UserDict.__init__(self)
|
|
|
|
self["domainname"] = domain
|
|
|
|
|
|
|
|
class MailAlias(MailAccount):
|
|
|
|
"""This represents a mail alias"""
|
|
|
|
|
|
|
|
def __init__(self, domain):
|
|
|
|
"Initialize the POPAccount class for a given domain"
|
|
|
|
MailAccount.__init__(self, domain)
|
|
|
|
self["aliases"] = {}
|
|
|
|
self.readAll()
|
|
|
|
|
|
|
|
def readAll(self):
|
|
|
|
"""reads the aliasfile for the given domain"""
|
|
|
|
self["aliases"] = {}
|
|
|
|
if (os.access(VIRTUALDOMDIR, os.R_OK)):
|
|
|
|
try:
|
|
|
|
aliasfile = open(VIRTUALDOMDIR+self["domainname"], 'r')
|
|
|
|
for line in aliasfile.readlines():
|
|
|
|
keyvals = string.split(line,":",1)
|
|
|
|
self["aliases"][keyvals[0]] = keyvals[1].strip()
|
|
|
|
aliasfile.close()
|
|
|
|
except IOError:
|
|
|
|
print "couldn't read the aliasfile for "+self["domainname"]+"."
|
|
|
|
else:
|
|
|
|
print "couldn't read from "+VIRTUALDOMDIR+"."
|
|
|
|
|
|
|
|
def writeAll(self):
|
|
|
|
"""writes the aliasfile for the given domain with the aliases defined
|
|
|
|
in the dictionary object aliases"""
|
|
|
|
if (os.access(VIRTUALDOMDIR, os.W_OK)):
|
|
|
|
try:
|
|
|
|
aliasfile = open(VIRTUALDOMDIR+self["domainname"], 'w')
|
|
|
|
keys = self["aliases"].keys();
|
|
|
|
keys.sort();
|
|
|
|
for key in keys:
|
|
|
|
aliasfile.write(key+":"+self["aliases"][key]+"\n")
|
|
|
|
aliasfile.close()
|
|
|
|
except IOError:
|
|
|
|
print "writing to aliasfile failed."
|
|
|
|
else:
|
|
|
|
print "no write access to directory "+VIRTUALDOMDIR+"."
|
|
|
|
|
|
|
|
def setAlias(self, alias, target):
|
|
|
|
"""sets a mail alias for given domain which directs the MTA to the
|
|
|
|
given target
|
|
|
|
"""
|
|
|
|
self.readAll()
|
|
|
|
self["aliases"][alias]=target
|
|
|
|
self.writeAll()
|
|
|
|
|
|
|
|
class POP3Account(MailAccount):
|
|
|
|
"""This represents a pop 3 account"""
|
|
|
|
|
|
|
|
def create(self, address):
|
|
|
|
"""Creates a pop3/imap account for the domain"""
|
|
|
|
print self
|
|
|
|
print "adding address "+address
|
|
|
|
alias = MailAlias(self["domainname"])
|
|
|
|
alias.setAlias(address, "usr03")
|
|
|
|
print alias
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
popacc = POP3Account("test.de")
|
|
|
|
print popacc
|
|
|
|
popacc.create("webmaster")
|
|
|
|
|
|
|
|
alias = MailAlias("test.de")
|
|
|
|
print alias
|
|
|
|
alias.setAlias("klaus", "klaus@dittberner.info")
|
|
|
|
print alias
|