Samba's printing support always relies on the installed print subsystem of the UNIX OS it runs on. Samba is a " middleman ." It takes print files from Windows (or other SMB) clients and passes them to the real printing system for further processing, therefore, it needs to communicate with both sides: the Windows print clients and the UNIX printing system. Hence, we must differentiate between the various client OS types, each of which behave differently, as well as the various UNIX print subsystems, which themselves have different features and are accessed differently.
This deals with the traditional way of UNIX printing. The next chapter covers in great detail the more modern Common UNIX Printing System (CUPS).
It is apparent from postings on the Samba mailing list that print configuration is one of the most problematic aspects of Samba administration today. Many new Samba administrators have the impression that Samba performs some sort of print processing. Rest assured, Samba does not peform any type of print processing. It does not do any form of print filtering.
Samba obtains from its clients a data stream (print job) that it spools to a local spool area. When the entire print job has been received, Samba invokes a local UNIX/Linux print command and passes the spooled file to it. It is up to the local system printing subsystems to correctly process the print job and to submit it to the printer.
17.2.1 Client to Samba Print Job Processing
Successful printing from a Windows client via a Samba print server to a UNIX printer involves six ( potentially seven) stages:
17.2.2 Printing Related Configuration Parameters
There are a number of configuration parameters to control Samba's printing behavior. Please refer to the man page for smb.conf for an overview of these. As with other parameters, there are Global Level (tagged with a G in the listings) and Service Level ( S ) parameters.
Global Parameters These may not go into individual share definitions. If they go in by error, the testparm utility can discover this (if you run it) and tell you so.
Service Level Parameters These may be specified in the [global] section of smb.conf . In this case they define the default behavior of all individual or service level shares (provided they do not have a different setting defined for the same parameter, thus overriding the global default).