A continuación código para crear cuenta de usuario de email en Zimbra desde una aplicación en java, por si acaso a alguien le sirva:
importé los jars de a continuación desde el /opt/zimbra/lib/jars
- jars_para_crear_cuenta.jpg (65.07 KiB) Viewed 1642 times
import com.zimbra.common.service.ServiceException; //zimbracommon.jar
import com.zimbra.cs.service.account.AccountService; //zimbrastore.jar
import com.zimbra.cs.service.admin.AdminService; //zimbrastore.jar
import com.zimbra.cs.servlet.ZimbraServlet;
import com.zimbra.common.soap.Element; //zimbracommon.jar //
import com.zimbra.common.soap.SoapFaultException; //zimbracommon.jar //
import com.zimbra.common.soap.SoapHttpTransport; //zimbracommon.jar //
import com.zimbra.soap.ZimbraSoapContext; //zimbrastore.jar
import com.zimbra.cs.account.Account; //zimbrastore.jar
import com.zimbra.cs.account.soap.SoapProvisioning;
import com.zimbra.cs.account.soap.SoapProvisioning.Options;
import java.io.IOException;
import com.zimbra.common.soap.AccountConstants;
import com.zimbra.common.soap.SoapFaultException;
import com.zimbra.cs.account.auth.AuthContext.Protocol;
import java.util.Properties;
import java.io.FileInputStream;
import java.net.URL;
public void createAccount(String cuenta, String passwordCuenta) throws Exception{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* PARA QUE PUEDA ACCEDER AL LINK HTTPS
*/
Properties config = new Properties();
URL url = getClass().getResource("/wsaa/properties/wsaa_client.properties"); //archivo donde esta la clave del truststore.jks
URL urlJKS = getClass().getResource("/wsaa/certs/truststore.jks"); //pase a producción cambiar a truststoreProd.jks
config.load(new FileInputStream(url.getPath()));
String keyStorePath = config.getProperty("trustStore",""); //nombre que esta en el archivo wsaa_client.properties hace referencia a la ruta donde esta el truststore.jks
String keyStorePass = config.getProperty("trustStore_password"); //nombre que esta en el archivo wsaa_client.properties hace referencia al password del truststore.jks
keyStorePath = urlJKS.getPath();
System.getProperties().put("javax.net.ssl.trustStore", keyStorePath);
System.getProperties().put("javax.net.ssl.trustStorePassword",keyStorePass);
System.getProperties().put("javax.net.ssl.trustStoreType", "JKS");
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SoapProvisioning sp = null;
Account createAccount = null;
try {
sp = new SoapProvisioning();
} catch (Exception e) {
e.printStackTrace();
System.out.println("No puede crear SOAP Provisioning"); //faltan jars del Zimbra, version de java del eclipse diferente al de Zimbra
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw e;
}
try {
//
https://192.168.248.129:7071/service/admin/soap/
sp.soapSetURI("
https://192.168.248.129:7071" + com.zimbra.common.soap.AdminConstants.ADMIN_SERVICE_URI);
sp.soapAdminAuthenticate("admin","123456"); //usuario administrador de Zimbra y clave del administrador
} catch(ServiceException ex) {
ex.printStackTrace();
System.out.println("No puede autenticarse admin en el panel de administracion"); //el certificado del Zimbra ha caducado, hay que reemplazar el certificado en el java
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw ex;
}
try {
System.out.println("Se creara cuenta: " + cuenta.toLowerCase());
createAccount = sp.createAccount(cuenta.toLowerCase(), passwordCuenta, getMap());
} catch(ServiceException se) {
se.printStackTrace();
System.out.println("No pudo crear usuario"); //usuario ya existe en Zimbra ACCOUNT_EXISTS
//email address already exists:
//insertar en una tabla para que por medio de un batch crear despues al usuario, no deberia pasar porque el sistema valida que el usuario sea unico
throw se;
} finally {
}
}