Yes, if you are using 2.x then you can do this with Shipping Director. See this
example blog. The ErrorExit type can check a condition expression and then show the customer a message rather than shipping options.
If you don't have many zip codes to check, then you can code the expression like this (the leading "!" is the NOT operator)
!"12345,23456,98765".Contains(ShippingAddress.ZipPostalCode)
If you have a very large number of zip codes, then you may want to store them in a separate table in the database, and use Shipping Director's ability to execute a SQL query (or stored procedure). Here's an
example blog. In your case, you would just need one SQL query, and the SD records would look something like this (assuming a table called ValidShippingZip with a field ZipCode):
String Zip ShippingAddress.ZipPostalCode
Integer ZipMatchCount select Count(1) from ValidShippingZip where ZipCode = @p1; [Zip]
ErrorExit Check ZipCode ZipMatchCount = 0 "Sorry, we can't deliver to that zip code"