The issue of what to do with the thousands of refugees still attempting to reach Europe by crossing the Mediterranean Sea has sparked a sharp response in some countries, with Italy saying it is bearing the brunt of the problem while its EU partners do little to help.
Monday's tentative agreement, which aims to work towards a more efficient system of redistributing rescued people, was reached at a meeting on migration in the Mediterranean held in Paris under French chairmanship.
Macron said 14 states had approved the plan, while eight said they would actively take part.
They include France, Germany, Finland, Luxembourg, Portugal, Lithuania, Croatia and Ireland, Macron's office said, without naming the other six.
Salvini, who has closed ports to NGO rescue boats, said the agreement underscored a demand that Italy "continue to be the refugee camp of Europe".
After snubbing the meeting, he said that Italy "does not take orders and is not a partner: if Macron wants to discuss migrants, come to Rome".
Charities earlier criticised what they called Europe's "campaign of criminalisation" towards the rescue boats.
"Every effort is made to scare and to prevent ships from doing their job," Frederic Penard, head of operations at SOS Mediterranee, told a press conference in Paris.
Last month, Italian authorities arrested the German captain of the Sea-Watch 3 charity boat, Carola Rackete, after she hit an Italian speedboat while docking without permission in the southern port of Lampedusa.
In a joint statement, the UNHCR and IOM heads said: "The crucial role played by NGOs must be acknowledged. They should not be criminalised nor stigmatised for saving lives at sea."
At present, NGO boats must try to find a country ready to admit them each time they rescue migrants and refugees, leading to time-consuming negotiations between EU members states.
Salvini, who once accused the NGOs of running a "taxi service" for migrants, has demanded that other European countries open up their ports to the boats.