change email configuration

This commit is contained in:
Peter Hormanns 2012-08-16 18:33:23 +02:00
parent 63a31ab23d
commit 71af063354
2 changed files with 18 additions and 16 deletions

View File

@ -48,10 +48,10 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
templateVars.put("DOM_IPNUMBEREX", getOldIPAddress(pac)); templateVars.put("DOM_IPNUMBEREX", getOldIPAddress(pac));
WaitingTasksProcessor mainProcessor = new WaitingTasksProcessor(createHiveDNSSetupProcessor(domName, templateVars)); WaitingTasksProcessor mainProcessor = new WaitingTasksProcessor(createHiveDNSSetupProcessor(domName, templateVars));
mainProcessor.appendProcessor(hiveName, createHiveEMailSetupProcessor(em, domName), "Setup EMail"); mainProcessor.appendProcessor(hiveName, createHiveEMailSetupProcessor(em, domName), "Setup EMail");
String hiveInetAddr = pac.getHive().getInetAddr().getInetAddr(); String pacInetAddr = pac.getCurINetAddr().getInetAddr();
Config config = Config.getInstance(); Config config = Config.getInstance();
for (String queueName : config.getProperty("queues.dns").split(",")) { for (String queueName : config.getProperty("queues.dns").split(",")) {
mainProcessor.appendProcessor(queueName, createDNSServerSetupProcessor(domName, hiveInetAddr), queueName + ".hostsharing.net"); mainProcessor.appendProcessor(queueName, createDNSServerSetupProcessor(domName, pacInetAddr), queueName + ".hostsharing.net");
} }
for (String queueName : config.getProperty("queues.mail").split(",")) { for (String queueName : config.getProperty("queues.mail").split(",")) {
mainProcessor.appendProcessor(queueName, createMailinSetupProcessor(em, domName, pac), queueName + ".hostsharing.net"); mainProcessor.appendProcessor(queueName, createMailinSetupProcessor(em, domName, pac), queueName + ".hostsharing.net");
@ -165,11 +165,10 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
); );
} }
private Processor createDNSServerSetupProcessor(String domName, private Processor createDNSServerSetupProcessor(String domName, String pacInetAddr) {
String hiveInetAddr) {
Processor seczonesFileProcessor; Processor seczonesFileProcessor;
seczonesFileProcessor = seczonesFileProcessor =
new ShellProcessor("echo 'zone \"" + domName + "\" { type slave; file \"sec." + domName + "\"; masters { " + hiveInetAddr + "; }; };' >>/etc/bind/named-hsh.conf" + new ShellProcessor("echo 'zone \"" + domName + "\" { type slave; file \"sec." + domName + "\"; masters { " + pacInetAddr + "; }; };' >>/etc/bind/named-hsh.conf" +
" && sort /etc/bind/named-hsh.conf | uniq >/etc/bind/named-hsh.conf.tmp" + " && sort /etc/bind/named-hsh.conf | uniq >/etc/bind/named-hsh.conf.tmp" +
" && mv /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf" + " && mv /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf" +
" && invoke-rc.d bind9 reload"); " && invoke-rc.d bind9 reload");
@ -185,14 +184,15 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
} }
private Processor createMailinSetupProcessor(EntityManager em, String domName, Pac pac) throws ProcessorException { private Processor createMailinSetupProcessor(EntityManager em, String domName, Pac pac) throws ProcessorException {
String inetAddr = pac.getCurINetAddr().getInetAddr();
return new CompoundProcessor( return new CompoundProcessor(
createPostgreyConfiguration(em), createPostgreyConfiguration(em),
new ShellProcessor("postmap -r -i /etc/postfix-mailin/relaydomains", new ShellProcessor("postmap -r -i /etc/postfix-mailin/relaydomains",
domName + " anything\n" + domName + " anything\n" +
"." + domName + " anything\n"), "." + domName + " anything\n"),
new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport", new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport",
domName + " smtp:[" + pac.getName() + ".hostsharing.net]\n" + domName + " smtp:" + inetAddr + ":225\n" +
"." + domName + " smtp:[" + pac.getName() + ".hostsharing.net]\n") "." + domName + " smtp:" + inetAddr + ":225\n")
); );
} }

View File

@ -12,24 +12,25 @@ import de.hsadmin.core.qserv.Processor;
import de.hsadmin.core.qserv.ShellProcessor; import de.hsadmin.core.qserv.ShellProcessor;
import de.hsadmin.core.qserv.WaitingTasksProcessor; import de.hsadmin.core.qserv.WaitingTasksProcessor;
import de.hsadmin.core.util.Config; import de.hsadmin.core.util.Config;
import de.hsadmin.mods.pac.Pac;
public class EMailAddressProcessorFactory implements EntityProcessorFactory { public class EMailAddressProcessorFactory implements EntityProcessorFactory {
public <T extends AbstractEntity> Processor createCreateProcessor(EntityManager em, T entity) { public <T extends AbstractEntity> Processor createCreateProcessor(EntityManager em, T entity) {
// TODO: combine both keys in a single call (optimization) // TODO: combine both keys in a single call (optimization)
EMailAddress email = (EMailAddress) entity; EMailAddress email = (EMailAddress) entity;
Pac pac = email.getDomain().getUser().getPac();
CompoundProcessor cp = new CompoundProcessor(); CompoundProcessor cp = new CompoundProcessor();
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix/virtual", cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
email.getFullDomain() + " -" ) ); email.getFullDomain() + " -" ) );
cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix/virtual", cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual",
email.getEMailAddress() + " " + email.getTarget() ) ); email.getEMailAddress() + " " + email.getTarget() ) );
if (emailAddressCount(em, email) < 2) { if (emailAddressCount(em, email) < 2) {
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp); WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
String pacName = email.getDomain().getUser().getPac().getName();
String domName = email.getDomain().getName(); String domName = email.getDomain().getName();
Config config = Config.getInstance(); Config config = Config.getInstance();
for (String queueName : config.getProperty("queues.mail").split(",")) { for (String queueName : config.getProperty("queues.mail").split(",")) {
waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pacName), queueName + ".hostsharing.net"); waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pac), queueName + ".hostsharing.net");
} }
return waitingTasksProcessor; return waitingTasksProcessor;
} else { } else {
@ -47,13 +48,13 @@ public class EMailAddressProcessorFactory implements EntityProcessorFactory {
CompoundProcessor cp = new CompoundProcessor(); CompoundProcessor cp = new CompoundProcessor();
EMailAddress email = (EMailAddress) entity; EMailAddress email = (EMailAddress) entity;
cp.appendProcessor( cp.appendProcessor(
new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix/virtual" ) ); new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix-mailin/virtual" ) );
int emailAddressCount = emailAddressCount(em, email); int emailAddressCount = emailAddressCount(em, email);
if (emailAddressCount == 0) { if (emailAddressCount == 0) {
// remove the domain from virtual.db // remove the domain from virtual.db
String fullDomain = email.getFullDomain(); String fullDomain = email.getFullDomain();
cp.appendProcessor( cp.appendProcessor(
new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix/virtual" ) ); new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix-mailin/virtual" ) );
WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp); WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp);
Config config = Config.getInstance(); Config config = Config.getInstance();
for (String queueName : config.getProperty("queues.mail").split(",")) { for (String queueName : config.getProperty("queues.mail").split(",")) {
@ -82,11 +83,12 @@ public class EMailAddressProcessorFactory implements EntityProcessorFactory {
return result.size(); return result.size();
} }
private Processor createMailinSetupProcessor(String domName, String pacName) { private Processor createMailinSetupProcessor(String domName, Pac pac) {
String inetAddr = pac.getCurINetAddr().getInetAddr();
return return
new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport", new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport",
domName + " smtp:[" + pacName + ".hostsharing.net]\n" + domName + " smtp:" + inetAddr + ":225\n" +
"." + domName + " smtp:[" + pacName + ".hostsharing.net]\n"); "." + domName + " smtp:" + inetAddr + ":225\n");
} }
private Processor createMailinDeleteProcessor(String domName) { private Processor createMailinDeleteProcessor(String domName) {