You can get it from the US Postal Service, but it's not free:
Q. Where can I get a database or directory of all ZIP Codes and/or ZIP+4
Codes along with the corresponding city, state, county, etc.? Is this
information available on the web?
A. The information you are seeking is not available via download but is
provided through the National Customer Support Center at (800) 238-3150. Ask
the service representative for pricing and information for our products
You can do a Google search for other sources, but I doubt you'd find any
good ones for free.