Hmm regarding your first point (retrieving list of mac addresses), I'd probably look to do this by combining two methods:
1. Run a tool called Angry IP Scanner. With this you can scan all your internal IP networks and ask Angry Scanner to report all IP's and corresponding MAC addresses.
You can Angry IP Scanner here:
You can also use useful commands like 'show mac-address' on each of your LAN switches to see which MAC address is currently connected to which port.
2. To actually secure a particular MAC address to a switchport, all you need to do is the following:
Switch(config)#interface fa0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security violation [restrict | shutdown]
Switch(config-if)# switchport port-security mac-address [mac_address]
You can verify your changes with the 'show port-security address' command
3. Unfortunately the correct application of MAC address to switchport will either mean: YOu have up-to-date records that clearly document which IP/MAC addresses are already present on the network, who is using them and where they physically connect into the network.
If you don't have this kind of documentation, I'd advise creating that document as part of this exercise. This may involve visits to each device on each port and matching the MAC address seen on the port to the owner of that MAC address.
Hope this helps