Server to Server HowTo

I am new to the Wildfire and the XMPP world so please be patient

Our company has two small offices that are connected to the Internet and have firewalls setup. I would like to run a wildfire server in each office and allow users at each office to “see” and communicate with the users in the other office.

I have installed wildfire in each office and both instances are working fine independently. Each instance is connected to the corresponding office’'s Active Directory. What do I need to do to achieve my goal stated above? Is there a how-to guide out there?

Thanks,

Erasmus

Hey Erasmus,

Have you tried searching in this forum? This question has been asked many times and one thing we need to do is include documentation for this common question.

Server-2-server communication occurs on port 5269 (by default). So the first thing to check is that there is no firewall closing that port. The second task would be to verify that the server name of each Wildfire server can be resolved by the DNS. XMPP servers will do a DNS SRV look up to figure out the actual IP address and port to use to connect to the remote server. As a consequence of this we can say that remote servers should be accessible from the internet or any remote net that you want to use (e.g. VPN).

Regards,

– Gato

Hi Gato,

what about http://wiki.jivesoftware.org/display/WILDFIRE/ServertoServer+HowTo ?

LG

When you say server name, do you mean the server as defined in the Server Properties?

I can telnet from each server to the other server’'s 5269 port.What do I do next?

Folks from the two offices don’‘t see each other. And when I try to search for a user that’'s in the other office, the search comes up blank.

Thanks,

Erasmus

Hi,

server = xmpp.domain, you did specify it during installation. The server part in the JID: “nick@server/resource”.

LG

UPD: So if office one uses “office1” as xmpp.domain then you must make sure that Wildfire in office two can resolve “office1” and get’'s the external IP address of office one. To do this you may want to edit the “/etc/hosts” file of the server in office two where Wildfire is running.

What is the /resource in your example (nick@server/resource)? To add a user to my roster I am adding, for example, “joes@office2” (without the double quotes).

From a networking perspective I believe that I am all set.

Assuming that the xmpp.domain is office1 and office2 repectively, I can:

telnet office2 5269 from office1

and

telnet office1 5269 from office2

I both cases the connection opens up. This means the ports are open on both sides, that port forwarding is working on both sides, and that DNS is setup properly.

Still I am unable to add users that are on a remote server. I get the following exception in the log file that I believe is related:

2006.11.01 18:33:51 [org.jivesoftware.wildfire.server.ServerDialback.createOutgoingSession(ServerDi alback.java:217)

] Error creating outgoing session to remote server: office1(DNS lookup: office1)

org.xmlpull.v1.XmlPullParserException: expected start tag name and not / (position: START_DOCUMENT seen </… @1:2)

at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1475)

at org.jivesoftware.wildfire.net.MXParser.nextImpl(MXParser.java:331)

at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)

at org.jivesoftware.wildfire.server.ServerDialback.createOutgoingSession(ServerDia lback.java:177)

at org.jivesoftware.wildfire.server.OutgoingServerSession.createOutgoingSession(Ou tgoingServerSession.java:350)

at org.jivesoftware.wildfire.server.OutgoingServerSession.authenticateDomain(Outgo ingServerSession.java:140)

at org.jivesoftware.wildfire.server.OutgoingSessionPromise.createSessionAndSendPac ket(OutgoingSessionPromise.java:130)

at org.jivesoftware.wildfire.server.OutgoingSessionPromise.access$300(OutgoingSess ionPromise.java:40)

at org.jivesoftware.wildfire.server.OutgoingSessionPromise$1$1.run(OutgoingSession Promise.java:95)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

What am I doing wrong?

Erasmus

Hey Erasmus,

Seems like you are making good progress. Are both servers running Wildfire? Try enabling the debug log to trace the connection setup process. Post here what you found in the debug.log file (of each server).

Thanks,

– Gato

Thanks for the help everyone. I got the connectivity working by setting the Server Connection Security to optional on both ends.

I can add users one by one using their Jabber ID (e.g. jdoe@office1).

Now is there a way to make the groups on each server available on the other server?

Thanks,

Erasmus

Hi Erasmus,

one usually marks a question as solved and starts a new thread if a new question comes up.

UPD: It seems there is already a thread with a very similar question: http://www.jivesoftware.org/community/thread.jspa?threadID=22903

While you can add remote users to a shared group I expect that it will not be visible on the remote server in general / for all users. Sometime I think that the xmpp / XEP authors target the home users and not enterprises. Hopefully Gato will correct me and provide a way to share local groups or write a XEP and implement it (;

LG

Hello, Erasmus;

You never told the secret to your success… could you please provide a short HOWTO on the steps necessary to get this running?

Cheers,

gustavo