I could easily add the printers, but when I tried to print, it would accept my username and password for the printer, but then revert straight back to saying "Hold for authentication".
Deleting the printers and recreating them didn't fix it.
Nor did deleting the associated entries from the OSX keyring help.
Thus the usually recommended steps failed to fix the problem.
It took a couple of hours of research and experimentation to discover that this page had most of the information needed to solve the problem.
The problem in my case was caused by the print system on the mac from failing to properly negotiate authentication in some way. But here is how I fixed it:
Step 1: Try to print something to this printer. Then open the print queue for the printer, and click on the refresh (curly-arrow) icon to the right of the job name. It should prompt you for your username and password for the print server, and then revert to "Hold for authentication".
This is really important. If you don't try to send a print job and have it stuck in "Hold for authentication" first, strange things can still happen after following the procedure below. For me, I found that the print job would try to print, but the print queue would then immediately become paused, with the print job marked "Ready to print". Very frustrating.
Step 2: Open a terminal window. Everything we do from here will be done from in the terminal window.
Step 3: Find out the name of the printer on the command line by typing the following and pressing return:
lpstat -s
Step 4: Find the printer in question in the output. You will see that the names of the print queues have any fancy characters replaced with an underscore. So your print queue name might have lots of underscores in it. For example, my printer called "Tonsley : mono" appears in the output of lpstat -s below as "Tonsley___mono" (highlighted below):
$ lpstat -s
system default destination: Tonsley___colour__A3_in_tray_2_
device for GenericScanner: usb://00000000-0000-0000-FA13-000000000000
device for LaserJet_6MP__Jet_Direct_: socket://192.168.1.200/
device for Lexmark_6200_Series: usb://Lexmark/6200%20Series?serial=21B1280030008E5
device for Loopback: socket://127.0.0.1/
device for Samsung_CLP_310_Series: usb://Samsung/CLP-310%20Series?serial=149RBAFZ400869Z
device for Samsung_CLP_315_Series___alfred: dnssd://Samsung%20CLP-315%20Series%20%40%20alfred._ipp._tcp.local.
device for Samsung_ML_1640_Series: usb://Samsung/ML-1640%20Series?serial=3511BAFS501610N.
device for Tonsley___colour__A3_in_tray_2_: smb://tonsprint.isd.ad.flinders.edu.au/mdf-colour
device for Tonsley___mono: smb://tonsprint.isd.ad.flinders.edu.au/mfd-bw
$
Step 5: Force the mac to use username,password authentication for this printer by typing the following command (but don't forget to change the printer name from Tonsley___mono to the name of your print queue that you obtained in the previous step).
sudo lpadmin -p Tonlsey___mono -o auth-info-required=username,password
When you hit return after typing this command you will be asked for your mac password. Type it in.
Step 6: Attempt to print using the printer. It should now work. If it doesn't try deleting the printer and following the sequence again. If the print queue keeps pausing itself and saying the print job is "ready to print", read the important note on step 1.
If this information helps you, please consider donating to http://servalproject.org.