I have run into a problem with blocked users. I have tried to remove
{acl, blocked, {user, "user.user", "domain.com"}}.
line from config but the user remains blocked (authentication accepted - forbiden session).
How do I unblock already blocked user?
Delete stored ACL rule with Web Admin or with override_acls.
It is explained in the ejabberd guide:
The configuration file will be loaded the first time you start ejabberd. The content from this file will be parsed and stored in the internal ejabberd database. Subsequently the configuration will be loaded from the database and any commands in the configuration file are appended to the entries in the database.
...
You can override the old values stored in the database by adding next lines to the configuration file:
override_global.
override_local.
override_acls.
With these lines the old global options (shared between all ejabberd nodes in a cluster), local options (which are specific for this particular ejabberd node) and ACLs will be removed before new ones are added.
Another solution (probably easier for you) is to delete the ACL rule from the internal database using the Web Admin.