Question
When ejabberd starts, another program is also started in the system: epmd. What is that program? Also, when I stop ejabberd, epmd is still there. Why doesn't it stop automatically?
Explanation
epmd is a small name server used by Erlang programs when establishing distributed Erlang communications. Check epmd documentation.
ejabberd needs epmd to use ejabberdctl and also when clustering ejabberd nodes. If ejabberd is stopped, and there aren't any other Erlang programs running in the system, you can safely stop epmd if you want, using this command:
epmd -kill
It is strongly recommended to block the port 4369 in the firewall for external connections. epmd listens in this port, and usually epmd is not needed from outside the machine.
At startup, epmd checks the environment variable ERL_EPMD_ADDRESS
to figure out what IP addresses to listen on. You can set this variable to 127.0.0.1
to make epmd listen on the loopback interface only.
Related Links
- IP-Adress and port of epmd
- Debian Bug report #709754: Erlang runtime implicitly starts a epmd daemon
- Debian Bug report #585122: Please make epmd bindable to only loopback address
- Erlang patch (old): howto bind epmd to one ip
- Erlang patch (updated): Allow user to specify the IP address epmd binds to
- ejabberd patch: New DIST_USE_INTERFACE to restrict IP where erlang connections are listened