#!/usr/local/bin/python import os import sys def setforward(parms): userdir = parms[0] dest = parms[1] keep = parms[2] fwfile = userdir + '/.qmail' f = open(fwfile, 'w') print >>f, '&%s' % (dest) if keep == 'on': print >>f, userdir + '/Maildir/' f.close os.system('chown vpopmail.vchkpw ' + fwfile) os.system('chmod 600 ' + fwfile) def delforward(parms): userdir = parms[0] try: os.unlink(userdir + '/.qmail') except: pass def checkforward(parms): userdir = parms[0] fwfile = userdir + '/.qmail' try: f = open(userdir + '/.qmail', 'r') except: print '@none@' return ln = f.readline().strip() f.close() if ln[0] == '&': ln = ln[1:] elif ln[0] == '|' and ln.find('autorespond') != -1: ln = 'vacation message currently enabled' print ln def setvacation(parms): userdir = parms[0] tmpmsg = parms[1] alias = parms[2] vacdir = userdir + '/vacation' msgfile = vacdir + '/message' fwfile = userdir + '/.qmail' if not os.path.isdir(vacdir): try: os.mkdir(vacdir) except: print 'failed' return os.system('mv ' + tmpmsg + ' ' + msgfile) f = open(fwfile, 'w') print >>f, '| /usr/local/bin/autorespond 86400 3 %s %s' % (msgfile, vacdir) print >>f, userdir + '/Maildir/' if alias != 'none': print >>f, '&' + alias f.close() os.system('chown vpopmail.vchkpw ' + fwfile) os.system('chmod 600 ' + fwfile) os.system('chown -R vpopmail.vchkpw ' + vacdir) def delvacation(parms): userdir = parms[0] vacdir = userdir + '/vacation' try: os.unlink(userdir + '/.qmail') except: pass os.removedirs(vacdir) def checkvacation(parms): userdir = parms[0] fwfile = userdir + '/.qmail' msgfile = userdir + '/vacation/message' try: f = open(fwfile, 'r') except: print '@none@' return ln = f.readline().strip() f.close() if ln[0] == '|' and ln.find('autorespond') != -1: tmpfile = '/tmp/vacmsg.' + str(os.getpid()) os.system('cp ' + msgfile + ' ' + tmpfile) os.system('chmod 0666 ' + tmpfile) os.system('chown apache ' + tmpfile) print tmpfile else: print '@none@' if __name__ == '__main__': # cheezy logging to check arguments #log = open ('/tmp/vpopimpforward.log', 'a') #print >>log, sys.argv #log.close() mode = sys.argv[1] if mode == 'fwset': setforward(sys.argv[2:]) elif mode == 'fwdel': delforward(sys.argv[2:]) elif mode == 'fwcheck': checkforward(sys.argv[2:]) elif mode == 'vacset': setvacation(sys.argv[2:]) elif mode == 'vacdel': delvacation(sys.argv[2:]) elif mode == 'vaccheck': checkvacation(sys.argv[2:])